{"componentChunkName":"component---src-templates-blog-template-js","path":"/docs/email-templates","result":{"data":{"markdownRemark":{"html":"<h2>Templated Styling</h2>\n<p>The email templates use <a href=\"https://handlebarsjs.com/\">Handlebars</a>, and are sent via the package <a href=\"https://www.npmjs.com/package/email-templates\">email-templates</a>. Each order status change triggers an email for that status, using the corresponding email template and subject line:</p>\n<pre><code>├── emails\n│   ├── Ordered\n│   │   ├── html.hbs\n│   │   └── subject.hbs\n│   ├── Processed\n│   │   ├── html.hbs\n│   │   └── subject.hbs\n│   ├── Received\n│   │   ├── html.hbs\n│   │   └── subject.hbs\n│   └── Shipped\n│       ├── html.hbs\n│       └── subject.hbs\n</code></pre>\n<p>The logic for sending emails lives in <code>server/orders.js</code>. To set up <a href=\"https://nodemailer.com/about/\">Nodemailer</a> with a Gmail account, see <a href=\"/docs/gmail-oauth\">Setting up Gmail Oauth2</a>.</p>\n<p>The function <code>sendEmail()</code> takes order and store config variables, and passes them to the corresponding email template. The template is rendered as HTML via Handlebars:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/26b7c2ece5c57d78799e924758bf440d/798d4/orders1-handlebars.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 72.08333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAACgUlEQVQ4y3VT2XbaMBTkM9IkkISAbYwNXmRbso2xWbNAQknbpO1LT0///xemIzukpKd9mHN1tYyu7oxadqCwnhTw1QxGkGOUSIziBG4UYxglcALGMIEtYjics3QevEbO9QOJ62gCM2zOtS7cCEoW3KRwYo1xavn4oGEGHAccMw6COj8x9XyzXu97zU9N723c6jgC3XECj7d4omSFFeQ0Q5gmiJVilQpdN4ThCQzCCFYYwxhHML1mPDjC9UigdUnC82EI25dI8wr5eo/V7hnzzRbLhyfMb7dQ1Qp5USJI0/pZxljAIqEtmtboVjic72nCCxK2STjwJGQ+R1jdorjdI1lsMX98Qbreodp+gajuERVr+NkCfZHX+9t2WLflzGrac24HfwhtXyGbLHlQE36EWmyw3n/DbPsZy91XZKsHZOtHpKtHBMUKIpniguc0SYfxgNYlRdGTYTbHgkSTuz22Lz/r6nbff9Vkm+cfKEk82zwhL28w4l47KWGwCGMUvyfUFWql/aTAOCpg8jkjVcCOcnhZCUdO4RIDbQ2uG2EOi2Mde57CtRPhjE8/pxPahydruGEKL5xS5Rl8Nl8VCoGMoXIJl34TWUrFtfciihLCojADjvWcG2vIRpRjlbO8ZI8owuYT4x3S6gaS1Ro+FaRtbFrDpKF7o6ixTm1wRr9B1z1S2fK1ygvkyx0mbH6xXiGZzjHJaHqhWEGCQEl4hP4pLn/PWMoaNnP9owSrrCvUhH2a208rxLN7yPkGCRFNVnCopsW1zlDUPdKN1/GAt3z42kNN1mV1ARvfo2I618pfEZc1BK54aaPie4v8C60+xahogzguqBYPHN3+Nw6H2vb/iX8DO/6+HQd0R7YAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"orders1 handlebars\"\n        title=\"orders1 handlebars\"\n        src=\"/static/26b7c2ece5c57d78799e924758bf440d/d9199/orders1-handlebars.png\"\n        srcset=\"/static/26b7c2ece5c57d78799e924758bf440d/8ff5a/orders1-handlebars.png 240w,\n/static/26b7c2ece5c57d78799e924758bf440d/e85cb/orders1-handlebars.png 480w,\n/static/26b7c2ece5c57d78799e924758bf440d/d9199/orders1-handlebars.png 960w,\n/static/26b7c2ece5c57d78799e924758bf440d/798d4/orders1-handlebars.png 976w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Below is an example of the final rendered email. Note, the banner color at the top of the email is set in the store theming page as the \"Banner\" color. For more information, see <a href=\"/theming-design\">Theming &#x26; Design</a>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2f1f3d7449c326a7a946b37e942adb3a/0a47e/orders1-confirmation.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 83.33333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAABnklEQVQ4y5VTW3LCMAz0Qdv7cI5CT9HSI8APr+EVSh5AyjshJIRk21Vxx6QZSj2zo5Elr62VrB4rTTxUGhc0L2j8WMb/A1V9dfD85uG57qFWd8XSr11s9cXB04t9NxSQIzmGOMUHZGmMNIkQR4HYJA7B+H+WOh5jTKc23qdT+P4HHNeF63riW9YEWXZNSP8WVJIkmM1mWC6XP/B9X6z7Re44jljmLBYLZHmO/AbU+XyWw+v1GqvVCpvNBtvtFkEQYLfbia8tUVwkKZR8RKfTwWAwQLvdFrKyNRqN5LXMD8NQrCYzSdXpdMJwOESv15NDTNZJGmmaSk6r1cJ8Ppdq9vt9ecnU0LIs0e1wOPwq4bsRmbzOtu3S+BVh2eEimEhrEpixKw3jOJYXmnqUgYudLupMybrdLsbjMdhgFUWR6McNjkdZ5/QeteQDKJOZx+mgJIwrbpKZDlFWslluseSiFOqWwKYMLJPd1QRmnJPBWRXC/I/J14cmk4mA1RQJeREl42Xq3k/f7/flFWW/xPM86YMQ8sZ7oAnMPRLomB65T5ZNCcgsI/fNAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"orders1 confirmation\"\n        title=\"orders1 confirmation\"\n        src=\"/static/2f1f3d7449c326a7a946b37e942adb3a/0a47e/orders1-confirmation.png\"\n        srcset=\"/static/2f1f3d7449c326a7a946b37e942adb3a/8ff5a/orders1-confirmation.png 240w,\n/static/2f1f3d7449c326a7a946b37e942adb3a/e85cb/orders1-confirmation.png 480w,\n/static/2f1f3d7449c326a7a946b37e942adb3a/0a47e/orders1-confirmation.png 600w\"\n        sizes=\"(max-width: 600px) 100vw, 600px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h2>Shipping Notification Emails</h2>\n<p>The <code>/admin</code> view has a textfield for inputting the shipping tracking number, which renders in the template like so:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3c4ea644cfc2a8da7d1f8924bac2017f/0a47e/orders1-shipped.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 90.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsTAAALEwEAmpwYAAABmklEQVQ4y41UbW7CMAztPbf7cA3GLRC7AAg2wT+gHajQFtoKxCr1O32LzYJCRT8iPcl17Bc/x6nxPvjG2+CrFyi2C8ZwfMBo4uBjcsTo07mDbPU9cR77w7ENim+DAbmKLEYlMqRxxLYoUogyQxL/8neZJ7zfZxlCVHBdD0EQwnFdWNYPfD+A47js325N9gVhyAmlEKCcJkhCgfP5jNPpJIl8XC4X/ib4QcC+2+3GZFVVdYIJbdtmHA4HrNdrzGYzzOdzTKdTtq/X6xNhh2TBCVQFIUkSZJnsZ5o+oEi6yJiwLEusVissl0ssFguW/mr1JWXCzWbDUvf7PYqi6N2vxh6G8gZJZtvptEex9Rjdz4T6puCReIZKqMe98j8uhaSS9CaptOjiqC3h/zwqsjiO5axueULIx4SWZclBdlol53mOKIp4CuqSaVYpnwnJQcEUqEtpkqz3TO+pso36aU3QD2gC97DuaFqBfIaufOuqWj2HWkFPlivsmiuVvNvtuPG6T9nH4xGmad4rbKtKr5p+FupC6gfSnud5bP8BqiRad1GtpV8AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"orders1 shipped\"\n        title=\"orders1 shipped\"\n        src=\"/static/3c4ea644cfc2a8da7d1f8924bac2017f/0a47e/orders1-shipped.png\"\n        srcset=\"/static/3c4ea644cfc2a8da7d1f8924bac2017f/8ff5a/orders1-shipped.png 240w,\n/static/3c4ea644cfc2a8da7d1f8924bac2017f/e85cb/orders1-shipped.png 480w,\n/static/3c4ea644cfc2a8da7d1f8924bac2017f/0a47e/orders1-shipped.png 600w\"\n        sizes=\"(max-width: 600px) 100vw, 600px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>If you know that you will always be using one shipping provider, consider making the tracking number a link in the email template (<code>/emails/Ordered/html.hbs</code>). Here's an example, if you were using USPS:</p>\n<pre><code>&#x3C;p style=\"font-size: 14px; margin-bottom: 10px;\">\n  Good news! Your order has been sent out via USPS.\n&#x3C;/p>\n&#x3C;p style=\"font-size: 12px; margin: 0 0 30px;\">\n  Tracking Number:\n  &#x3C;a\n    style=\"color: black;font-weight: bold;\"\n    href=\"https://tools.usps.com/go/TrackConfirmAction\n    ?qtc_tLabels1={{ order.shipping.tracking_number}}\"\n  >\n      {{ order.shipping.tracking_number}}\n  &#x3C;/a>\n&#x3C;/p>\n</code></pre>","frontmatter":{"path":"/docs/email-templates","date":"2020-01-07T18:12:33.962Z","header":"Managing Orders","title":"Email Templates 🧾"}}},"pageContext":{"pages":[{"path":"/docs/changelog","title":"Changelog & To Do's 📝","header":"Beluga Next Steps","date":"2020-01-11T17:12:33.962Z"},{"path":"/docs/seo-social","title":"SEO and Social Media 💻","header":"Launching Your Store","date":"2020-01-10T17:12:33.962Z"},{"path":"/docs/deploy-to-heroku","title":"Deploying To Heroku 🚀","header":"Launching Your Store","date":"2020-01-09T17:12:33.962Z"},{"path":"/docs/gmail-oauth","title":"Setting up Gmail Oauth2 📬","header":"Managing Orders","date":"2020-01-07T19:12:33.962Z"},{"path":"/docs/email-templates","title":"Email Templates 🧾","header":"Managing Orders","date":"2020-01-07T18:12:33.962Z"},{"path":"/docs/managing-orders","title":"Order Admin 📦","header":"Managing Orders","date":"2020-01-07T16:12:33.962Z"},{"path":"/docs/custom-products","title":"Advanced: Custom Product Data 💫","header":"Store Configuration","date":"2020-01-06T22:12:33.962Z"},{"path":"/docs/shipping","title":"Checkout & Shipping 🛒","header":"Store Configuration","date":"2020-01-06T21:12:33.962Z"},{"path":"/docs/additional-pages","title":"Adding Pages 📄","header":"Store Configuration","date":"2020-01-06T20:12:33.962Z"},{"path":"/docs/adding-collections","title":"Adding Collections 📂","header":"Store Configuration","date":"2020-01-06T19:12:33.962Z"},{"path":"/docs/adding-products","title":"Adding Products 🎁","header":"Store Configuration","date":"2020-01-06T18:12:33.962Z"},{"path":"/docs/theming-design","title":"Theming & Design 🎨","header":"Store Configuration","date":"2020-01-06T17:12:33.962Z"},{"path":"/docs/store-config","title":"Store Settings 🛠","header":"Store Configuration","date":"2020-01-05T16:12:33.962Z"},{"path":"/docs/stripe","title":"Setting up Stripe 💵","header":"Introduction","date":"2020-01-04T17:12:33.962Z"},{"path":"/docs/new-store","title":"Creating a New Store 🛍","header":"Introduction","date":"2020-01-03T17:12:33.962Z"},{"path":"/docs/dev-environment","title":"Setting up the Dev Environment 🧪","header":"Introduction","date":"2020-01-02T17:12:33.962Z"},{"path":"/docs/project-structure","title":"Overview of Project Structure 🏗","header":"Introduction","date":"2020-01-01T17:12:33.962Z"}]}},"staticQueryHashes":["45326706"]}