Email Templates Guide: Lifecycle Frameworks, Layout Patterns, Copy Blocks, and QA Checklist (2026)
Build reusable email templates for welcome, newsletter, promotional, transactional, cart, post-purchase, re-engagement, announcement, and survey campaigns.
Email templates are the operating system of email marketing. A good template lets a team ship faster without rebuilding every campaign from scratch. A weak template creates the opposite problem: inconsistent branding, broken mobile layouts, bad personalization, missing compliance elements, and campaigns that are hard to test.
This guide replaces the old template-list framing with a practical template system. It keeps the useful campaign categories - welcome, newsletter, promotional, transactional, abandoned cart, post-purchase, re-engagement, announcements, and surveys - and turns them into reusable frameworks with copy blocks, layout notes, dynamic-data guidance, and QA checks.
Email Template System
Think in template families, not isolated messages.
| Template family | Job | Reusable blocks | Risk to QA |
|---|---|---|---|
| Welcome | Orient a new subscriber or account | Greeting, value promise, next step, preferences | Overloading the first email |
| Newsletter | Package recurring content | Featured story, secondary links, editor note | Generic issue titles |
| Promotional | Present an offer | Offer, deadline, product grid, terms | Fake urgency or unclear exclusions |
| Transactional | Confirm status or account action | Status, details, next step, support | Mixing critical updates with marketing |
| Cart and browse | Recover intent | Product block, support prompt, checkout CTA | Incorrect product or inventory data |
| Post-purchase | Help after order | Delivery, setup, care, review, cross-sell | Asking for a review too soon |
| Re-engagement | Give inactive subscribers a choice | Preference update, opt-down, reason to stay | Guilt-driven copy |
| Announcement | Explain change | What changed, why it matters, action needed | Hiding important details |
| Survey | Collect feedback | Question, rating scale, incentive, privacy note | Asking too much in one email |
Each family should have a base template, a short version, and a plain-text fallback. The base template handles normal campaigns. The short version works for urgent or transactional updates. The plain-text fallback protects deliverability and readability when clients block images or formatting.
Four layouts, running
Every panel below is the template's own email HTML in a frame at a real width. Drag the width down to 375 px and watch the columns stack.
Following your theme — switch it in the header to see the other one.
Read the HTML for The Letter
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<title>The Letter</title>
<style>
body { margin:0; padding:0; width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; }
table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }
img { border:0; outline:none; line-height:100%; -ms-interpolation-mode:bicubic; display:block; }
a { text-decoration:underline; }
@media only screen and (max-width:620px) {
.wrap { width:100% !important; }
.stack { display:block !important; width:100% !important; max-width:100% !important; }
.gutter { padding-left:20px !important; padding-right:20px !important; }
.cta { display:block !important; width:100% !important; box-sizing:border-box !important; text-align:center !important; }
.h1 { font-size:26px !important; line-height:32px !important; }
.thumb { width:100% !important; height:auto !important; max-width:100% !important; }
/* A digest row is the one two-column layout that should NOT stack: the
thumbnail shrinks and stays beside the headline, because a roundup is
read by scanning and a full-width decorative image per story destroys
that. */
.row-thumb { width:80px !important; }
.row-thumb img { width:80px !important; height:80px !important; }
.hide-sm { display:none !important; }
}
@media (prefers-color-scheme: dark) {
.d-bg { background-color:#151515 !important; }
.d-card { background-color:#1c1c1c !important; }
.d-ink { color:#f2f2f2 !important; }
.d-mute { color:#a8a8a8 !important; }
.d-rule { border-color:#3a3a3a !important; }
}
</style>
</head>
<body class="d-bg" style="margin:0;padding:0;background-color:#f0efec;">
<span style="display:none;font-size:1px;color:#fefefe;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;">The pull quote you keep in your notes app is doing more work than your content calendar.</span><span style="display:none;font-size:1px;color:#fefefe;"> ͏ ͏ ͏ ͏ ͏</span>
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-bg" style="background-color:#f0efec;">
<tr><td align="center" style="padding:32px 12px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="600" class="wrap d-card" style="width:600px;max-width:600px;background-color:#ffffff;">
<tr><td style="padding:0;">
<img src="/_astro/letter-masthead.BcPkHvz4.png" width="600" height="250" alt="Meridian Press masthead: concentric blue arcs crossed by a diagonal band" style="width:100%;height:auto;max-width:600px;">
</td></tr>
<tr><td class="gutter" style="padding:36px 88px 0 88px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0 0 6px 0;font-size:13px;line-height:18px;letter-spacing:.08em;text-transform:uppercase;color:#6b6b6b;">Meridian Press · Issue 47</p>
</td></tr>
<tr><td class="gutter" style="padding:0 88px;font-family:Georgia,'Times New Roman',Times,serif;">
<h1 class="h1 d-ink" style="margin:0 0 20px 0;font-size:34px;line-height:42px;font-weight:400;color:#141414;">The archive is the product</h1>
<p class="d-ink" style="margin:0 0 20px 0;font-size:18px;line-height:30px;color:#242424;">Three weeks ago I went looking for something I wrote in 2019 and could not find it. Not on the site, not in the export, not in the platform's own search. Twelve hundred issues, and the only working index was my memory.</p>
<p class="d-ink" style="margin:0 0 20px 0;font-size:18px;line-height:30px;color:#242424;">That is the part nobody tells you about running a newsletter for six years. The sending is easy. The keeping is not.</p>
</td></tr>
<tr><td class="gutter" style="padding:8px 88px 28px 88px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr><td class="quote" style="border-left:3px solid #0084d1;padding:4px 0 4px 0;padding-left:20px;font-family:Georgia,'Times New Roman',Times,serif;">
<p class="d-ink" style="margin:0;font-size:19px;line-height:30px;font-style:italic;color:#141414;">Everything you publish is a deposit. Almost nobody builds the withdrawal.</p>
</td></tr>
</table>
</td></tr>
<tr><td class="gutter" style="padding:0 88px;font-family:Georgia,'Times New Roman',Times,serif;">
<p class="d-ink" style="margin:0 0 20px 0;font-size:18px;line-height:30px;color:#242424;">So this week I rebuilt the back catalogue as a real archive, with tags, full text search, and permanent URLs. It took nine days. Subscriber growth did not move. Time on site tripled.</p>
<p class="d-ink" style="margin:0 0 28px 0;font-size:18px;line-height:30px;color:#242424;">The whole thing is below, including the parts that did not work.</p>
</td></tr>
<tr><td class="gutter" style="padding:0 88px 36px 88px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<a href="https://example.com" style="font-size:17px;line-height:24px;font-weight:600;color:#0084d1;text-decoration:underline;">Read the whole issue →</a>
</td></tr>
<tr><td class="gutter d-rule" style="padding:0 88px;border-top:1px solid #e4e2de;"></td></tr>
<tr><td class="gutter" style="padding:24px 88px 40px 88px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0 0 10px 0;font-size:14px;line-height:22px;color:#6b6b6b;">Written by hand every Thursday. Reply and I read it.</p>
<p class="d-mute" style="margin:0;font-size:13px;line-height:20px;color:#8a8a8a;">Meridian Press, 14 Harbour Lane, Bristol BS1 4TT<br>
<a href="https://example.com" class="d-mute" style="color:#8a8a8a;">Unsubscribe</a> · <a href="https://example.com" class="d-mute" style="color:#8a8a8a;">View in browser</a></p>
</td></tr>
</table>
</td></tr>
</table>
</body>
</html> Following your theme — switch it in the header to see the other one.
Read the HTML for The Digest
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<title>The Digest</title>
<style>
body { margin:0; padding:0; width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; }
table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }
img { border:0; outline:none; line-height:100%; -ms-interpolation-mode:bicubic; display:block; }
a { text-decoration:underline; }
@media only screen and (max-width:620px) {
.wrap { width:100% !important; }
.stack { display:block !important; width:100% !important; max-width:100% !important; }
.gutter { padding-left:20px !important; padding-right:20px !important; }
.cta { display:block !important; width:100% !important; box-sizing:border-box !important; text-align:center !important; }
.h1 { font-size:26px !important; line-height:32px !important; }
.thumb { width:100% !important; height:auto !important; max-width:100% !important; }
/* A digest row is the one two-column layout that should NOT stack: the
thumbnail shrinks and stays beside the headline, because a roundup is
read by scanning and a full-width decorative image per story destroys
that. */
.row-thumb { width:80px !important; }
.row-thumb img { width:80px !important; height:80px !important; }
.hide-sm { display:none !important; }
}
@media (prefers-color-scheme: dark) {
.d-bg { background-color:#131313 !important; }
.d-card { background-color:#1b1b1b !important; }
.d-ink { color:#f3f3f3 !important; }
.d-mute { color:#a5a5a5 !important; }
.d-rule { border-color:#333333 !important; }
.d-chip { background-color:#10352f !important; color:#7fd8c6 !important; }
}
</style>
</head>
<body class="d-bg" style="margin:0;padding:0;background-color:#f4f3f0;">
<span style="display:none;font-size:1px;color:#fefefe;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;">Six things worth your Tuesday. Two of them are about pricing.</span><span style="display:none;font-size:1px;color:#fefefe;"> ͏ ͏ ͏ ͏ ͏</span>
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-bg" style="background-color:#f4f3f0;">
<tr><td align="center" style="padding:28px 12px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="600" class="wrap d-card" style="width:600px;max-width:600px;background-color:#ffffff;border-radius:6px;">
<tr><td class="gutter" style="padding:30px 32px 22px 32px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="middle" style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0;font-size:20px;line-height:26px;font-weight:800;color:#141414;">The Tuesday Digest</p>
<p class="d-mute" style="margin:4px 0 0 0;font-size:14px;line-height:20px;color:#6b6b6b;">26 August 2026 · 6 items · 9 min</p>
</td>
<td valign="middle" align="right" class="hide-sm">
<span class="d-chip" style="display:inline-block;background:#e2f4ef;color:#00614f;border-radius:999px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;padding:6px 12px;">ISSUE 212</span>
</td>
</tr>
</table>
</td></tr>
<tr><td class="gutter" style="padding:0 32px;"><table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td class="d-rule" style="border-top:2px solid #141414;font-size:0;line-height:0;"> </td></tr></table></td></tr>
<tr><td class="gutter" style="padding:0 32px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding:22px 0;">
<tr>
<td class="row-thumb" width="112" valign="top" style="width:112px;padding:0;padding-right:20px;">
<img src="/_astro/digest-1.gDWNYw1C.png" width="112" height="112" alt="Abstract teal arcs crossed by a diagonal band" style="width:112px;height:112px;border-radius:4px;">
</td>
<td valign="top" style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0 0 6px 0;font-size:12px;line-height:16px;letter-spacing:.06em;text-transform:uppercase;color:#007d6a;">01 · PRICING</p>
<p style="margin:0 0 6px 0;font-size:18px;line-height:26px;font-weight:700;">
<a href="https://example.com" class="d-ink" style="color:#141414;text-decoration:none;">Three companies moved to usage pricing and two moved back</a>
</p>
<p class="d-mute" style="margin:0;font-size:16px;line-height:26px;color:#555555;">The two that reverted both said the same thing: support load went up before revenue did.</p>
</td>
</tr>
</table>
</td></tr>
<tr><td class="gutter" style="padding:0 32px;"><table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td class="d-rule" style="border-top:1px solid #eceae6;font-size:0;line-height:0;"> </td></tr></table></td></tr>
<tr><td class="gutter" style="padding:0 32px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding:22px 0;">
<tr>
<td class="row-thumb" width="112" valign="top" style="width:112px;padding:0;padding-right:20px;">
<img src="/_astro/digest-2.ch7Avmad.png" width="112" height="112" alt="Abstract teal rings with an offset focal dot" style="width:112px;height:112px;border-radius:4px;">
</td>
<td valign="top" style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0 0 6px 0;font-size:12px;line-height:16px;letter-spacing:.06em;text-transform:uppercase;color:#007d6a;">02 · DELIVERABILITY</p>
<p style="margin:0 0 6px 0;font-size:18px;line-height:26px;font-weight:700;">
<a href="https://example.com" class="d-ink" style="color:#141414;text-decoration:none;">Gmail's bulk sender rules are a year old. Here is what actually changed</a>
</p>
<p class="d-mute" style="margin:0;font-size:16px;line-height:26px;color:#555555;">Complaint rate is the only threshold anyone got close to. The rest was already table stakes.</p>
</td>
</tr>
</table>
</td></tr>
<tr><td class="gutter" style="padding:0 32px;"><table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td class="d-rule" style="border-top:1px solid #eceae6;font-size:0;line-height:0;"> </td></tr></table></td></tr>
<tr><td class="gutter" style="padding:0 32px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding:22px 0;">
<tr>
<td class="row-thumb" width="112" valign="top" style="width:112px;padding:0;padding-right:20px;">
<img src="/_astro/digest-3.DP0eG3wj.png" width="112" height="112" alt="Abstract teal concentric arcs on an off-white ground" style="width:112px;height:112px;border-radius:4px;">
</td>
<td valign="top" style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0 0 6px 0;font-size:12px;line-height:16px;letter-spacing:.06em;text-transform:uppercase;color:#007d6a;">03 · CRAFT</p>
<p style="margin:0 0 6px 0;font-size:18px;line-height:26px;font-weight:700;">
<a href="https://example.com" class="d-ink" style="color:#141414;text-decoration:none;">A newsletter archive is a search product, not a list of links</a>
</p>
<p class="d-mute" style="margin:0;font-size:16px;line-height:26px;color:#555555;">Nine days of work, no subscriber growth, triple the time on site. The tradeoff is the interesting part.</p>
</td>
</tr>
</table>
</td></tr>
<tr><td class="gutter" style="padding:0 32px;"><table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td class="d-rule" style="border-top:1px solid #eceae6;font-size:0;line-height:0;"> </td></tr></table></td></tr>
<tr><td class="gutter" style="padding:24px 32px 34px 32px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0 0 14px 0;font-size:15px;line-height:24px;color:#555555;">Three more below the fold, including the one about invoicing that everyone replies to.</p>
<!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td bgcolor="#007d6a" style="border-radius:4px;"><![endif]-->
<a href="https://example.com" class="cta" style="background:#007d6a;border-radius:4px;color:#ffffff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;font-weight:600;line-height:20px;padding:14px 28px;text-align:center;text-decoration:none;mso-padding-alt:0;">Read all six</a>
<!--[if mso]></td></tr></table><![endif]-->
</td></tr>
<tr><td class="gutter d-rule" style="padding:0 32px;border-top:1px solid #eceae6;"></td></tr>
<tr><td class="gutter" style="padding:20px 32px 30px 32px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0;font-size:13px;line-height:20px;color:#8a8a8a;">The Tuesday Digest, 9 Fitzroy Street, Manchester M1 2AL<br>
<a href="https://example.com" class="d-mute" style="color:#8a8a8a;">Unsubscribe</a> · <a href="https://example.com" class="d-mute" style="color:#8a8a8a;">Manage preferences</a> · <a href="https://example.com" class="d-mute" style="color:#8a8a8a;">View in browser</a></p>
</td></tr>
</table>
</td></tr>
</table>
</body>
</html> Following your theme — switch it in the header to see the other one.
Read the HTML for The Storefront
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<title>The Storefront</title>
<style>
body { margin:0; padding:0; width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; }
table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }
img { border:0; outline:none; line-height:100%; -ms-interpolation-mode:bicubic; display:block; }
a { text-decoration:underline; }
@media only screen and (max-width:620px) {
.wrap { width:100% !important; }
.stack { display:block !important; width:100% !important; max-width:100% !important; }
.gutter { padding-left:20px !important; padding-right:20px !important; }
.cta { display:block !important; width:100% !important; box-sizing:border-box !important; text-align:center !important; }
.h1 { font-size:26px !important; line-height:32px !important; }
.thumb { width:100% !important; height:auto !important; max-width:100% !important; }
/* A digest row is the one two-column layout that should NOT stack: the
thumbnail shrinks and stays beside the headline, because a roundup is
read by scanning and a full-width decorative image per story destroys
that. */
.row-thumb { width:80px !important; }
.row-thumb img { width:80px !important; height:80px !important; }
.hide-sm { display:none !important; }
}
@media (prefers-color-scheme: dark) {
.d-bg { background-color:#141210 !important; }
.d-card { background-color:#1d1a18 !important; }
.d-ink { color:#f5f2ef !important; }
.d-mute { color:#aaa39d !important; }
.d-rule { border-color:#38322d !important; }
.d-tile { background-color:#241f1c !important; }
}
</style>
</head>
<body class="d-bg" style="margin:0;padding:0;background-color:#efece8;">
<span style="display:none;font-size:1px;color:#fefefe;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;">Four new prints. The harbour one is 40 copies and it will not last the week.</span><span style="display:none;font-size:1px;color:#fefefe;"> ͏ ͏ ͏ ͏ ͏</span>
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-bg" style="background-color:#efece8;">
<tr><td align="center" style="padding:24px 12px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="600" class="wrap d-card" style="width:600px;max-width:600px;background-color:#ffffff;">
<tr><td class="gutter" style="padding:22px 24px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"><tr>
<td class="d-ink" style="font-size:17px;line-height:22px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#141414;">Northlight</td>
<td align="right" class="d-mute hide-sm" style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#6b6b6b;">Autumn drop · 04</td>
</tr></table>
</td></tr>
<tr><td style="padding:0;">
<img src="/_astro/shop-hero.r4mykM_E.png" width="600" height="360" alt="Four new Northlight prints: overlapping rust-red arcs on warm off-white" style="width:100%;height:auto;max-width:600px;">
</td></tr>
<tr><td class="gutter" style="padding:30px 40px 0 40px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<h1 class="h1 d-ink" style="margin:0 0 12px 0;font-size:30px;line-height:38px;font-weight:800;color:#141414;">Four prints. Forty copies each.</h1>
<p class="d-mute" style="margin:0 0 22px 0;font-size:16px;line-height:26px;color:#555555;">Every print in this drop is hand-pulled, numbered, and gone when it is gone. Nothing here gets reprinted.</p>
</td></tr>
<tr><td class="gutter" style="padding:0 40px 26px 40px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td bgcolor="#b8442d" style="border-radius:4px;"><![endif]-->
<a href="https://example.com" class="cta" style="background:#b8442d;border-radius:4px;color:#ffffff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;font-weight:600;line-height:20px;padding:14px 28px;text-align:center;text-decoration:none;mso-padding-alt:0;">Shop the drop</a>
<!--[if mso]></td></tr></table><![endif]-->
</td></tr>
<tr><td class="gutter" style="padding:0 32px 8px 32px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td class="stack" width="50%" valign="top" style="width:50%;padding:0 8px 16px 8px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-tile" style="background-color:#faf9f7;border-radius:4px;">
<tr><td style="padding:0;"><img src="/_astro/shop-print-1.B7Z7OyM8.png" width="272" height="272" alt="Harbour, an abstract print in rust red" class="thumb" style="width:100%;height:auto;border-radius:4px 4px 0 0;"></td></tr>
<tr><td style="padding:16px 16px 18px 16px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 2px 0;font-size:16px;line-height:22px;font-weight:700;color:#141414;">Harbour</p>
<p class="d-mute" style="margin:0 0 10px 0;font-size:14px;line-height:20px;color:#6b6b6b;">50 × 70 cm · giclée on cotton rag</p>
<p style="margin:0 0 14px 0;font-size:18px;line-height:24px;font-weight:700;color:#b8442d;">£85</p>
<!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td bgcolor="#b8442d" style="border-radius:4px;"><![endif]-->
<a href="https://example.com" class="cta" style="background:#b8442d;border-radius:4px;color:#ffffff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;font-weight:600;line-height:20px;padding:14px 28px;text-align:center;text-decoration:none;mso-padding-alt:0;">Add to basket</a>
<!--[if mso]></td></tr></table><![endif]-->
</td></tr>
</table>
</td>
<td class="stack" width="50%" valign="top" style="width:50%;padding:0 8px 16px 8px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-tile" style="background-color:#faf9f7;border-radius:4px;">
<tr><td style="padding:0;"><img src="/_astro/shop-print-2.CMBKLJ38.png" width="272" height="272" alt="Dusk, an abstract print in amber" class="thumb" style="width:100%;height:auto;border-radius:4px 4px 0 0;"></td></tr>
<tr><td style="padding:16px 16px 18px 16px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 2px 0;font-size:16px;line-height:22px;font-weight:700;color:#141414;">Dusk</p>
<p class="d-mute" style="margin:0 0 10px 0;font-size:14px;line-height:20px;color:#6b6b6b;">50 × 70 cm · giclée on cotton rag</p>
<p style="margin:0 0 14px 0;font-size:18px;line-height:24px;font-weight:700;color:#b8442d;">£85</p>
<!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td bgcolor="#b8442d" style="border-radius:4px;"><![endif]-->
<a href="https://example.com" class="cta" style="background:#b8442d;border-radius:4px;color:#ffffff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;font-weight:600;line-height:20px;padding:14px 28px;text-align:center;text-decoration:none;mso-padding-alt:0;">Add to basket</a>
<!--[if mso]></td></tr></table><![endif]-->
</td></tr>
</table>
</td>
</tr>
<tr>
<td class="stack" width="50%" valign="top" style="width:50%;padding:0 8px 16px 8px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-tile" style="background-color:#faf9f7;border-radius:4px;">
<tr><td style="padding:0;"><img src="/_astro/shop-print-3.C9XLoBz6.png" width="272" height="272" alt="Tide, an abstract print in violet" class="thumb" style="width:100%;height:auto;border-radius:4px 4px 0 0;"></td></tr>
<tr><td style="padding:16px 16px 18px 16px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 2px 0;font-size:16px;line-height:22px;font-weight:700;color:#141414;">Tide</p>
<p class="d-mute" style="margin:0 0 10px 0;font-size:14px;line-height:20px;color:#6b6b6b;">40 × 50 cm · giclée on cotton rag</p>
<p style="margin:0 0 14px 0;font-size:18px;line-height:24px;font-weight:700;color:#b8442d;">£65</p>
<!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td bgcolor="#b8442d" style="border-radius:4px;"><![endif]-->
<a href="https://example.com" class="cta" style="background:#b8442d;border-radius:4px;color:#ffffff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;font-weight:600;line-height:20px;padding:14px 28px;text-align:center;text-decoration:none;mso-padding-alt:0;">Add to basket</a>
<!--[if mso]></td></tr></table><![endif]-->
</td></tr>
</table>
</td>
<td class="stack" width="50%" valign="top" style="width:50%;padding:0 8px 16px 8px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-tile" style="background-color:#faf9f7;border-radius:4px;">
<tr><td style="padding:0;"><img src="/_astro/shop-print-4.jL_6WDwF.png" width="272" height="272" alt="Quarry, an abstract print in deep green" class="thumb" style="width:100%;height:auto;border-radius:4px 4px 0 0;"></td></tr>
<tr><td style="padding:16px 16px 18px 16px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 2px 0;font-size:16px;line-height:22px;font-weight:700;color:#141414;">Quarry</p>
<p class="d-mute" style="margin:0 0 10px 0;font-size:14px;line-height:20px;color:#6b6b6b;">40 × 50 cm · giclée on cotton rag</p>
<p style="margin:0 0 14px 0;font-size:18px;line-height:24px;font-weight:700;color:#b8442d;">£65</p>
<!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td bgcolor="#b8442d" style="border-radius:4px;"><![endif]-->
<a href="https://example.com" class="cta" style="background:#b8442d;border-radius:4px;color:#ffffff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;font-weight:600;line-height:20px;padding:14px 28px;text-align:center;text-decoration:none;mso-padding-alt:0;">Add to basket</a>
<!--[if mso]></td></tr></table><![endif]-->
</td></tr>
</table>
</td>
</tr>
</table>
</td></tr>
<tr><td class="gutter" style="padding:6px 40px 30px 40px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-tile" style="background:#faf9f7;border-radius:4px;">
<tr><td style="padding:16px 20px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0;font-size:15px;line-height:24px;color:#242424;"><strong>Free UK shipping over £75.</strong> Framed options at checkout. Returns within 30 days, unframed.</p>
</td></tr>
</table>
</td></tr>
<tr><td class="gutter d-rule" style="padding:0 40px;border-top:1px solid #ebe7e2;"></td></tr>
<tr><td class="gutter" style="padding:20px 40px 30px 40px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0;font-size:13px;line-height:20px;color:#8a8a8a;">Northlight Print Co., Unit 4 Wharf Road, Leeds LS10 1JQ<br>
<a href="https://example.com" class="d-mute" style="color:#8a8a8a;">Unsubscribe</a> · <a href="https://example.com" class="d-mute" style="color:#8a8a8a;">View in browser</a></p>
</td></tr>
</table>
</td></tr>
</table>
</body>
</html> Following your theme — switch it in the header to see the other one.
Read the HTML for The Brief
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<title>The Brief</title>
<style>
body { margin:0; padding:0; width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; }
table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }
img { border:0; outline:none; line-height:100%; -ms-interpolation-mode:bicubic; display:block; }
a { text-decoration:underline; }
@media only screen and (max-width:620px) {
.wrap { width:100% !important; }
.stack { display:block !important; width:100% !important; max-width:100% !important; }
.gutter { padding-left:20px !important; padding-right:20px !important; }
.cta { display:block !important; width:100% !important; box-sizing:border-box !important; text-align:center !important; }
.h1 { font-size:26px !important; line-height:32px !important; }
.thumb { width:100% !important; height:auto !important; max-width:100% !important; }
/* A digest row is the one two-column layout that should NOT stack: the
thumbnail shrinks and stays beside the headline, because a roundup is
read by scanning and a full-width decorative image per story destroys
that. */
.row-thumb { width:80px !important; }
.row-thumb img { width:80px !important; height:80px !important; }
.hide-sm { display:none !important; }
}
@media (prefers-color-scheme: dark) {
.d-bg { background-color:#121212 !important; }
.d-card { background-color:#1a1a1a !important; }
.d-ink { color:#f2f2f2 !important; }
.d-mute { color:#a6a6a6 !important; }
.d-rule { border-color:#333333 !important; }
.d-tile { background-color:#232323 !important; }
.d-track { background-color:#2c2c2c !important; }
}
</style>
</head>
<body class="d-bg" style="margin:0;padding:0;background-color:#f1f0f4;">
<span style="display:none;font-size:1px;color:#fefefe;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;">Reply rate is up 4 points and we still do not know why. Best guess inside.</span><span style="display:none;font-size:1px;color:#fefefe;"> ͏ ͏ ͏ ͏ ͏</span>
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" class="d-bg" style="background-color:#f1f0f4;">
<tr><td align="center" style="padding:26px 12px;">
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="600" class="wrap d-card" style="width:600px;max-width:600px;background-color:#ffffff;border-radius:6px;">
<tr><td style="padding:0;background:#141414;border-radius:6px 6px 0 0;">
<img src="/_astro/brief-band.CsaAK-Uv.png" width="600" height="150" alt="Ledger Weekly masthead: violet arcs on near-black" style="width:100%;height:auto;max-width:600px;border-radius:6px 6px 0 0;">
</td></tr>
<tr><td class="gutter" style="padding:26px 32px 18px 32px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p style="margin:0 0 4px 0;font-size:12px;line-height:16px;letter-spacing:.1em;text-transform:uppercase;color:#8f83ff;">Ledger Weekly · Week 35</p>
<h1 class="h1 d-ink" style="margin:0;font-size:26px;line-height:34px;font-weight:800;color:#141414;">Reply rate moved and nobody shipped anything</h1>
</td></tr>
<tr><td class="gutter" style="padding:0 26px 8px 26px;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"><tr>
<td class="stack" width="33.33%" valign="top" style="width:33.33%;padding:0 6px;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-tile" style="background:#f6f5f8;border-radius:4px;">
<tr><td style="padding:18px 16px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 2px 0;font-size:30px;line-height:36px;font-weight:800;color:#141414;">31.4%</p>
<p class="d-mute" style="margin:0 0 6px 0;font-size:13px;line-height:18px;color:#6b6b6b;">Open rate</p>
<p style="margin:0;font-size:13px;line-height:18px;font-weight:700;color:#007d6a;">▲ 1.2 pts</p>
</td></tr>
</table>
</td>
<td class="stack" width="33.33%" valign="top" style="width:33.33%;padding:0 6px;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-tile" style="background:#f6f5f8;border-radius:4px;">
<tr><td style="padding:18px 16px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 2px 0;font-size:30px;line-height:36px;font-weight:800;color:#141414;">8.9%</p>
<p class="d-mute" style="margin:0 0 6px 0;font-size:13px;line-height:18px;color:#6b6b6b;">Click rate</p>
<p style="margin:0;font-size:13px;line-height:18px;font-weight:700;color:#b8442d;">▼ 0.4 pts</p>
</td></tr>
</table>
</td>
<td class="stack" width="33.33%" valign="top" style="width:33.33%;padding:0 6px;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-tile" style="background:#f6f5f8;border-radius:4px;">
<tr><td style="padding:18px 16px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 2px 0;font-size:30px;line-height:36px;font-weight:800;color:#141414;">6.1%</p>
<p class="d-mute" style="margin:0 0 6px 0;font-size:13px;line-height:18px;color:#6b6b6b;">Reply rate</p>
<p style="margin:0;font-size:13px;line-height:18px;font-weight:700;color:#007d6a;">▲ 4.0 pts</p>
</td></tr>
</table>
</td>
</tr></table>
</td></tr>
<tr><td class="gutter" style="padding:20px 32px 0 32px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-ink" style="margin:0 0 18px 0;font-size:16px;line-height:26px;color:#242424;">Nothing changed in the send. Same list, same Thursday, same template. The only variable we can find is that the subject line asked a question for the first time in eleven issues.</p>
<p class="d-mute" style="margin:0 0 10px 0;font-size:12px;line-height:16px;letter-spacing:.08em;text-transform:uppercase;color:#6b6b6b;">Replies by segment</p>
</td></tr>
<tr><td class="gutter" style="padding:0 32px 22px 32px;">
<table role="presentation" class="chart" width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="150" valign="middle" class="d-ink" style="width:150px;padding:7px 0;padding-right:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:20px;color:#242424;">Paid subscribers</td>
<td valign="middle" style="padding:7px 0;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-track" style="background:#ebe9f2;border-radius:2px;">
<tr><td width="100%" style="width:100%;background:#8f83ff;border-radius:2px;font-size:0;line-height:0;height:18px;"> </td><td style="font-size:0;line-height:0;"> </td></tr>
</table>
</td>
<td width="64" align="right" valign="middle" class="d-mute" style="width:64px;padding:7px 0;padding-left:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;font-weight:700;color:#555555;">11.2%</td>
</tr>
<tr>
<td width="150" valign="middle" class="d-ink" style="width:150px;padding:7px 0;padding-right:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:20px;color:#242424;">Free, active 90d</td>
<td valign="middle" style="padding:7px 0;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-track" style="background:#ebe9f2;border-radius:2px;">
<tr><td width="57%" style="width:57%;background:#8f83ff;border-radius:2px;font-size:0;line-height:0;height:18px;"> </td><td style="font-size:0;line-height:0;"> </td></tr>
</table>
</td>
<td width="64" align="right" valign="middle" class="d-mute" style="width:64px;padding:7px 0;padding-left:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;font-weight:700;color:#555555;">6.4%</td>
</tr>
<tr>
<td width="150" valign="middle" class="d-ink" style="width:150px;padding:7px 0;padding-right:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:20px;color:#242424;">Free, dormant</td>
<td valign="middle" style="padding:7px 0;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-track" style="background:#ebe9f2;border-radius:2px;">
<tr><td width="16%" style="width:16%;background:#8f83ff;border-radius:2px;font-size:0;line-height:0;height:18px;"> </td><td style="font-size:0;line-height:0;"> </td></tr>
</table>
</td>
<td width="64" align="right" valign="middle" class="d-mute" style="width:64px;padding:7px 0;padding-left:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;font-weight:700;color:#555555;">1.8%</td>
</tr>
<tr>
<td width="150" valign="middle" class="d-ink" style="width:150px;padding:7px 0;padding-right:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:20px;color:#242424;">Trial</td>
<td valign="middle" style="padding:7px 0;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" class="d-track" style="background:#ebe9f2;border-radius:2px;">
<tr><td width="44%" style="width:44%;background:#8f83ff;border-radius:2px;font-size:0;line-height:0;height:18px;"> </td><td style="font-size:0;line-height:0;"> </td></tr>
</table>
</td>
<td width="64" align="right" valign="middle" class="d-mute" style="width:64px;padding:7px 0;padding-left:12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;font-weight:700;color:#555555;">4.9%</td>
</tr>
</table>
</td></tr>
<tr><td class="gutter" style="padding:0 32px 28px 32px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<!--[if mso]><table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td bgcolor="#141414" style="border-radius:4px;"><![endif]-->
<a href="https://example.com" class="cta" style="background:#141414;border-radius:4px;color:#ffffff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;font-weight:600;line-height:20px;padding:14px 28px;text-align:center;text-decoration:none;mso-padding-alt:0;">Read the full breakdown</a>
<!--[if mso]></td></tr></table><![endif]-->
</td></tr>
<tr><td class="gutter d-rule" style="padding:0 32px;border-top:1px solid #e9e7ee;"></td></tr>
<tr><td class="gutter" style="padding:20px 32px 28px 32px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;">
<p class="d-mute" style="margin:0;font-size:13px;line-height:20px;color:#8a8a8a;">Ledger Weekly, 2 Cathedral Square, Edinburgh EH1 2QN<br>
<a href="https://example.com" class="d-mute" style="color:#8a8a8a;">Unsubscribe</a> · <a href="https://example.com" class="d-mute" style="color:#8a8a8a;">View in browser</a></p>
</td></tr>
</table>
</td></tr>
</table>
</body>
</html> Global Template Blocks
Every reusable email template should define these blocks before teams start writing campaign copy.
Header
Use a consistent sender identity, logo treatment, and optional navigation. For transactional templates, keep navigation minimal so the status update is obvious.
Recommended header fields:
- Logo or brand name.
- Sender identity that matches the email type.
- Optional navigation for marketing templates.
- Preview-safe first text after the preheader.
Preheader
The preheader is part of the template, not an afterthought. Add an editable field and a fallback. Do not let legal footer text or image alt text leak into inbox preview.
Hero Or Lead Block
The lead block answers one question: why is this email here?
| Email type | Lead block should say |
|---|---|
| Welcome | What happens next |
| Promotion | What the offer is and when it ends |
| Transactional | What status changed |
| Newsletter | Why this issue matters |
| Cart | What was saved or what help is available |
| Survey | What feedback is requested and why |
CTA Block
Use one primary CTA for most templates. Add secondary links only when they serve a different, useful job such as “view order,” “update preferences,” or “contact support.”
Dynamic Content Block
Dynamic blocks are powerful when they use accurate data. They are risky when data is stale, missing, or too sensitive for an inbox context.
Common ecommerce dynamic blocks:
- Product image and name.
- Cart total or saved item count.
- Order number and status.
- Loyalty balance or tier.
- Recommended products.
- Replenishment timing.
- Store location or delivery context.
Footer
Marketing templates need unsubscribe and preference controls. Transactional templates still need clear support and company identity. Use a footer component so teams do not forget required elements.
Welcome Email Templates
Welcome templates should help the subscriber take a first step. Keep the first email focused, then let the welcome series handle the rest.
Simple Welcome
Use when someone joins a list, creates an account, or requests content.
| Block | Copy pattern |
|---|---|
| Subject | Welcome to [Brand] |
| Preheader | Start with your preferences and first step |
| Lead | ”You are subscribed. Here is what you will receive.” |
| Body | 2-3 bullets explaining value, cadence, and next action |
| CTA | Set preferences, start setup, or browse resources |
| Footer | Preference center and unsubscribe |
Example body:
Welcome to [Brand]. You will receive [topic or benefit] [cadence]. Start by choosing your preferences so we can send the most relevant updates.
Ecommerce Welcome
Use when a shopper joins after browsing, purchasing, or opting into offers.
| Block | Copy pattern |
|---|---|
| Subject | Your subscriber perks are ready |
| Preheader | Choose preferences and see what is new |
| Lead | ”Thanks for joining. Here is what you can expect.” |
| Body | New arrivals, saved preferences, loyalty or support links |
| CTA | Shop new arrivals or set preferences |
| QA | Verify any discount, deadline, or loyalty language |
Avoid forcing a discount into every welcome email. If there is an offer, state the terms clearly and make sure the checkout experience matches the email.
Product Onboarding Welcome
Use for SaaS, apps, memberships, and tools.
| Block | Copy pattern |
|---|---|
| Subject | Your setup checklist is ready |
| Preheader | Complete the first steps in a few minutes |
| Lead | ”Your account is active. Start with these steps.” |
| Body | Step 1, step 2, step 3 with one CTA |
| CTA | Finish setup |
| QA | Test the setup link for new, partially active, and returning users |
Newsletter Templates
A newsletter template should make the issue easy to scan. The template is reusable, but the subject and lead should change every issue.
Editorial Digest
Best for weekly or monthly content.
| Block | Copy pattern |
|---|---|
| Subject | This week in [topic] |
| Preheader | The updates worth your time |
| Lead | One-sentence editor note |
| Main block | Featured article or main takeaway |
| Secondary block | 3-5 short links with context |
| CTA | Read the full guide, view all updates, or reply |
Use this when the team curates multiple stories. Keep summaries short and add “why it matters” context so the email is not just a list of links.
Product Newsletter
Best for ecommerce, marketplace, or product-led brands.
| Block | Copy pattern |
|---|---|
| Subject | New arrivals in [category] |
| Preheader | Picks based on your saved preferences |
| Lead | Collection or theme |
| Product grid | 3-6 products, each with image, name, price, CTA |
| Support block | Sizing, shipping, or returns help |
| CTA | View collection |
QA product grids carefully. Confirm product availability, image URLs, prices, variants, and tracking parameters before sending.
Personal Newsletter
Best for founders, creators, consultants, and thought leaders.
| Block | Copy pattern |
|---|---|
| Subject | A specific observation or question |
| Preheader | The practical lesson inside |
| Lead | Personal note tied to the topic |
| Body | One useful idea, example, or lesson |
| Links | Reading, tool, or resource recommendations |
| CTA | Reply, read more, or book a conversation |
The template should stay simple. The value comes from the voice and the insight, not a dense layout.
Promotional Templates
Promotional templates should make offer mechanics obvious. Ambiguity causes support tickets and disappointed clicks.
Limited-Time Offer
| Block | Copy pattern |
|---|---|
| Subject | [Offer] ends [day] |
| Preheader | Eligible products and terms are inside |
| Lead | Offer, deadline, and audience |
| Product block | Featured products or categories |
| Terms block | Exclusions, deadline, code, region, channel |
| CTA | Shop offer |
Do not use “last chance” unless it is truly the final reminder. Use real deadlines with a time zone when the deadline matters.
Product Launch
| Block | Copy pattern |
|---|---|
| Subject | Introducing [product or collection] |
| Preheader | See what is new and who it is for |
| Lead | Product promise |
| Body | 3 benefits, proof, product images, availability |
| CTA | Explore new product |
| QA | Confirm inventory, launch time, variants, and landing page |
Launch templates should include context: what changed, who it is for, and why it matters now.
Loyalty Or VIP Offer
| Block | Copy pattern |
|---|---|
| Subject | Your [tier/reward] is ready |
| Preheader | See eligible products and balance details |
| Lead | Reward status |
| Body | Balance, reward, expiration, how to redeem |
| CTA | Use reward |
| QA | Verify loyalty data and redemption rules |
Only mention loyalty balance or tier when the data is accurate. Add a fallback version for contacts without a balance.
Transactional Templates
Transactional templates need clarity first. They should not look like vague promotions.
Order Confirmation
| Block | Copy pattern |
|---|---|
| Subject | Order confirmed: [order number] |
| Preheader | We will send tracking when it ships |
| Lead | Confirmation status |
| Details | Order number, item summary, shipping address, payment summary |
| CTA | View order |
| Support | Contact support or update details if allowed |
Keep promotional cross-sells secondary. The customer’s primary job is to verify that the order is correct.
Shipping Update
| Block | Copy pattern |
|---|---|
| Subject | Your order is on the way |
| Preheader | Track delivery and see the latest ETA |
| Lead | Shipment status |
| Details | Carrier, tracking number, ETA, items |
| CTA | Track package |
| Support | Delivery help and address notes |
If tracking data is missing, use a fallback that does not show empty fields.
Account Or Security Notice
| Block | Copy pattern |
|---|---|
| Subject | Your password was changed |
| Preheader | If this was not you, take action now |
| Lead | What changed |
| Details | Time, account, next step |
| CTA | Secure account |
| Support | Contact support or review security settings |
Do not add promotional content to security templates. The message should be unmistakable.
Cart, Browse, And Ecommerce Recovery Templates
Recovery templates depend on data quality. If product, inventory, or price data is not reliable, use a softer category-level version.
Abandoned Cart
| Block | Copy pattern |
|---|---|
| Subject | Your cart is saved |
| Preheader | Reviews and checkout are one tap away |
| Lead | Saved cart reminder |
| Product block | Item image, name, variant, price, quantity |
| Support block | Sizing, returns, payment, or shipping help |
| CTA | Return to cart |
| QA | Verify item availability and checkout link |
Browse Abandonment
| Block | Copy pattern |
|---|---|
| Subject | More [category] picks for you |
| Preheader | Based on your recent store visit |
| Lead | Helpful recommendation |
| Product block | Viewed product or related category |
| CTA | Continue browsing |
| QA | Do not over-personalize sensitive browsing behavior |
Back-In-Stock
| Block | Copy pattern |
|---|---|
| Subject | Back in stock: [product] |
| Preheader | The item you asked about is available again |
| Lead | Availability update |
| Product block | Product, variant, stock-sensitive note |
| CTA | View product |
| QA | Confirm stock before the automation sends |
Post-Purchase Templates
Post-purchase emails should help the customer get value before asking for more.
Product Education
| Block | Copy pattern |
|---|---|
| Subject | How to get started with [product] |
| Preheader | Setup, care, and common questions |
| Lead | Help the customer use the purchase |
| Body | Setup steps, care tips, support links |
| CTA | Read the guide |
Review Request
| Block | Copy pattern |
|---|---|
| Subject | How did [product] work out? |
| Preheader | Share feedback when you have had time to use it |
| Lead | Ask for a review |
| Body | Why feedback helps, review link, optional incentive terms |
| CTA | Leave a review |
| QA | Trigger only after delivery and a reasonable usage window |
Replenishment
| Block | Copy pattern |
|---|---|
| Subject | Time to reorder [product]? |
| Preheader | Based on your previous purchase timing |
| Lead | Helpful reorder reminder |
| Body | Product, quantity, subscription option, support |
| CTA | Reorder |
| QA | Suppress if the customer already reordered |
Re-Engagement Templates
Re-engagement templates should give subscribers control. Many inactive subscribers do not need a louder discount; they need different content or fewer emails.
Preference Reset
| Block | Copy pattern |
|---|---|
| Subject | Choose what you receive |
| Preheader | Pick topics, channels, and frequency |
| Lead | Ask for preference update |
| Body | Topic options, frequency options, opt-down |
| CTA | Update preferences |
Winback Offer
| Block | Copy pattern |
|---|---|
| Subject | Still interested in [category]? |
| Preheader | Choose preferences or see what is new |
| Lead | Relevance check |
| Body | New products, changed value, optional incentive |
| CTA | See what is new |
| QA | Suppress recent buyers, recent complainers, and unsubscribed contacts |
Sunset Notice
| Block | Copy pattern |
|---|---|
| Subject | Should we keep sending [topic]? |
| Preheader | Confirm your interest or pause emails |
| Lead | Clear choice |
| Body | Why the subscriber is receiving the message, options |
| CTA | Keep me subscribed |
| Secondary | Unsubscribe or pause |
Announcement Templates
Announcements work when they answer what changed, why it matters, and what to do next.
Product Update
| Block | Copy pattern |
|---|---|
| Subject | New: [feature or integration] |
| Preheader | What changed and how to use it |
| Lead | Feature summary |
| Body | Use case, availability, setup steps |
| CTA | Try the feature |
Policy Or Terms Update
| Block | Copy pattern |
|---|---|
| Subject | Important update to [policy] |
| Preheader | Review what changes on [date] |
| Lead | What changed |
| Body | Summary, effective date, link to full terms |
| CTA | Review update |
| QA | Legal review, localization, and date accuracy |
Maintenance Or Incident
| Block | Copy pattern |
|---|---|
| Subject | Scheduled maintenance on [date] |
| Preheader | Expected impact and timing |
| Lead | Status and timing |
| Body | Affected services, expected duration, support path |
| CTA | View status page |
Survey And Feedback Templates
Survey templates should keep the ask small and explain why it matters.
NPS Or Satisfaction Survey
| Block | Copy pattern |
|---|---|
| Subject | How was your experience? |
| Preheader | One quick question helps us improve |
| Lead | Feedback request |
| Body | Rating question, optional comment prompt |
| CTA | Give feedback |
| QA | Avoid over-surveying the same customer |
Product Feedback
| Block | Copy pattern |
|---|---|
| Subject | Help shape [product] |
| Preheader | Tell us what should improve next |
| Lead | Product-specific ask |
| Body | Topic, expected time, privacy note |
| CTA | Share feedback |
Responsive Design Rules
Email clients vary widely. Templates should be boringly resilient.
Use these baseline rules:
- Design mobile-first with a single-column fallback.
- Keep the main message visible without relying on images.
- Use descriptive alt text for important images.
- Make buttons large enough to tap comfortably.
- Avoid tiny gray text for important terms.
- Use live text for essential copy instead of text embedded in images.
- Keep dark-mode contrast readable.
- Test Gmail, Apple Mail, Outlook, and the dominant mobile clients for your list.
- Include a plain-text version.
Accessibility And Compliance
Templates should support accessibility and legal requirements from the start.
Add these reusable checks:
- Logical heading order.
- Descriptive link text.
- Alt text for meaningful images.
- Sufficient color contrast.
- No image-only call to action.
- Clear unsubscribe and preference links for marketing emails.
- Accurate sender identity.
- Physical mailing address where required.
- Non-deceptive subject line and preheader.
- Footer language localized for non-English versions.
The FTC CAN-SPAM guidance makes deceptive subject lines and required unsubscribe handling more than a design issue. Build compliance into the template components so campaign creators do not have to remember it manually.
Dynamic Templates With Tajo And Brevo
Tajo helps Shopify teams use real ecommerce data inside Brevo templates. That means the template can adapt to lifecycle context without manual exports.
Useful dynamic template fields:
| Workflow | Dynamic fields |
|---|---|
| Cart recovery | Customer, cart items, checkout URL, product image, variant |
| Browse abandonment | Viewed product, category, related products |
| Post-purchase | Order, delivery status, product, care guide |
| Loyalty | Points, tier, reward eligibility |
| Replenishment | Product, last purchase date, expected reorder window |
| Back-in-stock | Product, variant, inventory status |
| Winback | Last purchase category, preferences, engagement status |
Dynamic templates need fallback logic. If an image, price, variant, or loyalty balance is missing, the email should still render professionally.
Template QA Checklist
Use this before approving a new template or major template change:
- Subject line and preheader fields exist and have fallbacks.
- Header, footer, and unsubscribe blocks render correctly.
- Primary CTA is clear and tracked.
- Every link works and has correct UTM parameters.
- Personalization fields work with real, missing, and long values.
- Dynamic products have fallback behavior.
- The template renders on mobile and desktop.
- Dark mode is readable.
- Images have useful alt text.
- Plain-text version exists.
- Legal footer, address, unsubscribe, and preference links are present where required.
- Transactional templates keep critical status updates clear.
- Suppression rules and consent rules match the email type.
Final Recommendation
Build email templates like a product system. Start with lifecycle jobs, define reusable blocks, connect dynamic data carefully, and make QA part of the template instead of the final scramble before send.
For ecommerce teams using Shopify, Brevo, and Tajo, the strongest templates are the ones tied to real customer context: cart saved, product viewed, order shipped, reward ready, replenishment due, or preference update needed. That context lets templates feel useful without becoming fragile or over-personalized.
Related Articles
- Email Subject Line Examples Library: Templates by Campaign Type, Intent, and QA Risk (2026)
- Email Subject Line Playbook: Inbox Fit, Testing, Examples, and Compliance QA (2026)
- Email Design Guide: Layout, Accessibility, Components, Rendering QA, and Testing Workflow (2026)
- Email Marketing Campaigns: The Complete Guide to Planning, Executing, and Optimizing
- Transactional Email Examples: Patterns, Templates, and QA Checklist (2026)
- Embed Video in Email: Client Support, Fallback Patterns, Accessibility, and QA Checklist (2026)
- Email Marketing Templates: Free Designs & Customization Tips