Post-purchase email for coffee brands

A customer just bought a 12oz bag of single-origin. This post-purchase email hands them a brew guide, storage notes, and a roast-cycle refill before the beans go stale, all in ESP-safe HTML.

Open the full email ↗ Get this on your brand
Live preview View HTML ↗

What makes this post-purchase work for coffee brands

Coffee is a perishable consumable bought on repeat, and the post-purchase window is short. Beans peak 7 to 21 days off roast, and a customer who brews the first cup wrong blames the coffee. This email does three jobs at once: teach the brew, protect freshness, and start the refill.

**Trigger.** Fire on Fulfilled Order (not Placed Order) filtered to whole-bean and ground SKUs, with a product-category condition that skips merch and equipment. Fulfilled means the bag is in transit; a one-day delay lands the brew guide the morning the box arrives on the doorstep.

**Timing.** One day after fulfillment. Sooner and the beans have not shipped. Later and the customer already guessed at a ratio and soured on the cup.

**Offer.** Lead with value, not a coupon. The brew guide is the offer. Convert on the refill: a roast-cycle subscription that ships every 14 days, timed to how fast a household finishes a 12oz bag. Coffee brands that move first-time buyers onto subscription typically see 2 to 4x higher 12-month LTV, because the reorder lands before the beans go stale.

**Copy angle.** Anchor everything to the roast date and name the bean. Give hard brew numbers, not adjectives.

Subject: "Your Ethiopian was roasted Tuesday. Here's how to brew it." Preheader: "Ratio, grind, and storage in 60 seconds."

Body that converts: "Your {{ item.product.name }} was roasted {{ event.roast_date }}. Peak flavor runs about 7 to 21 days from that date. Brew within three weeks for the sweet spot."

Brew block (real numbers): ratio 1:16 (1g coffee to 16g water), dose 18g coffee to 300g water for one cup, grind medium-fine like table salt, water just off the boil at 200 to 205F, pour a 45-second bloom then slow pour to 300g.

Storage block: airtight container away from light and heat, skip the fridge (moisture and fridge odors wreck the cup), drink within three weeks of the roast date.

**CTA.** One button, one job: "Start your roast-cycle subscription." Subtext carries the offer: "12% off, skip or cancel anytime."

Tune these levers: +1 day post-fulfillment send, 14-day default cadence, 12% subscribe-and-save, 21-day freshness window.

Why it renders in every inbox

Coffee emails lean dark and image-heavy, which is exactly where inbox rendering breaks. The HTML behind this template is built to survive the worst clients.

**Nested HTML tables, not divs or flex.** A 600px wrapper table holds section tables, which hold column tables. Outlook 2007 through 2019 uses Word's rendering engine, which ignores flexbox and CSS grid entirely. The brew-parameter block is itself a table, so the ratio and dose line up in Outlook the same way they line up in Gmail.

**Inline CSS on every element.** Gmail clips or strips <style> blocks in certain contexts. Inline styles on each td, p, and a survive. The MJML below compiles to fully inlined HTML.

**Bulletproof VML button for Outlook.** Word's engine ignores border-radius and padding on an <a>, so buttons collapse or lose their click target. The CTA wraps the link in a VML rectangle inside conditional comments so Outlook draws a real, clickable, full-width rectangle. Gmail and Apple Mail see the normal <a> and render the rounded button.

**Live text, not images.** The roast date, brew ratio, and storage steps are selectable text. Live text scales on mobile, translates for screen readers, and stays legible when Apple Mail inverts colors in dark mode. An image-based brew guide would turn into a dark rectangle.

**Dark-mode color-scheme meta.** A color-scheme meta tag plus a prefers-color-scheme media query swap the cream background and espresso text, so the email does not blind a dark-mode reader at 6am.

**One mobile media query.** A single max-width:600px block stacks the columns and bumps type size. One well-tested query beats a stack of nested queries that older Android clients mangle.

**Web-font fallbacks.** The brand serif loads where supported, with a Georgia and Times fallback stack so the email degrades to a clean serif everywhere web fonts are blocked. The layout never depends on the custom font loading.

How to use it in Klaviyo or Mailchimp

1. **Get the HTML.** Copy the MJML below into mjml.io and export, or copy the compiled HTML straight from the editor.

2. **Klaviyo.** In your post-purchase flow, add an email, switch the content to a Source or HTML block, and paste. Set the flow trigger to Fulfilled Order with a Product Category condition for Coffee, so merch and equipment SKUs do not fire a bean brew guide.

3. **Mailchimp.** Create an email, choose Code Your Own, then Paste in Code, and paste the HTML.

4. **Swap the brand layer.** Replace "Daybreak Coffee Roasters" with your roastery, the blend name with yours, the hex values with your brand espresso and cream, and the subscription URL with your Recharge or native checkout link.

5. **Wire the merge tags.** - Klaviyo: {{ customer.first_name|default:'friend' }} in the greeting, {{ item.product.name }} for the bean, and a roast-date reference. Most roasters store roast date as a product metafield or an event property on Fulfilled Order, referenced as {{ event.roast_date }}. If you roast on a weekly cycle, hardcode the roast date per product branch instead. - Mailchimp: *|FNAME|* for the first name and *|PRODUCT_TITLE|* for the bean.

6. **Test before you ship.** Send a preview to Gmail web, Gmail iOS, Apple Mail in dark mode, and Outlook desktop. Confirm the roast date renders, the brew-parameter table lines up, and the subscription button is clickable. Check the preheader shows under the subject line.

Questions

Is this coffee post-purchase template free to use? +

Yes. Copy the HTML or MJML, drop in your roastery name, blend, and roast-date merge tag, and send. No fee, no attribution required.

Will the brew-parameter table survive Outlook? +

Yes. The layout uses nested HTML tables and the CTA is a bulletproof VML button, so Outlook 2007 through 2019 (the Word rendering engine) draws the brew block and a clickable button without collapsing.

Can I match my roastery's brand colors? +

Yes. All colors sit in the inline styles and the mj-attributes block. Swap the espresso and cream hex values for yours, and the dark-mode swap updates inside the media query.

Do I need to know HTML to use this? +

No. Paste the HTML into a Klaviyo or Mailchimp code block and edit the text, links, and merge tags in their editor. Touch the MJML only if you want to restructure the sections.

Want this on your client's brand?

Paste a client's site and we build a real, on-brand sample in clean, ESP-safe HTML you can paste into Klaviyo.

Get a free sample

More templates