Back-in-stock email for coffee brands

A back-in-stock email built for coffee roasters whose single-origin lot or signature blend sold out before the last batch could land. Restock the sold-out roast, date the fresh batch, and turn the waitlist into subscribers who never run dry, all in ESP-safe HTML that drops into Klaviyo or Mailchimp.

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

What makes this back-in-stock work for coffee / tea

In coffee, back-in-stock is a freshness event, not a restock notice. The roast date is the real scarcity clock. Beans peak 7 to 21 days off the drum and decline fast after that, so this email has to land the morning the batch comes off the roaster, not when someone remembers to send it. The people who clicked Notify Me on a sold-out single origin are the most likely buyers on your list, and the only people who should see this send.

Trigger and timing. Fire the moment the fresh batch hits the shelf, within 15 minutes of inventory going live. Coffee freshness decays every day, and a three-day delay means the beans are already past peak. Blast the restock to the full mailing list and you burn deliverability; the waitlist exists for exactly this. One send the morning of the roast. A second send at 48 hours to non-openers, and stop there. With 2,800 people on the waitlist and 340 bags to sell, every hour you sit on the list is revenue that buys a competitor's bag instead.

Know which restock you are sending. A recurring signature blend that sold out is a fresh-batch notice: we just roasted another batch of the House Blend, dated today. A finite micro-lot is different and rarer. You scored a few more bags of green from the same farm and re-roasted, and once those 340 bags are gone the lot is finished for the season. The scarcity is honest because the lot is real and small, and specialty buyers can tell.

Offer. Resist the discount. Coffee is the category where discounting a restock actively hurts you, because it trains shoppers to wait for the next markdown and cannibalizes the subscription that drives margin. Lead with the roast date instead, which costs nothing and is the proof a coffee buyer actually screens for. Then convert on the subscribe. Never run dry again. Fresh roast to your door every 14 days, 10% off, skip or cancel anytime. Roasters who move first-time buyers onto a roast-cycle subscription see 2 to 4x higher 12-month LTV, because the refill lands before the last bag goes stale.

Copy angle. The roaster writes it, not the brand. Name the farm, the varietal, the process, and the tasting notes, then date the batch as live text. "Ethiopia Yirgacheffe Konga, washed, 1,950m. Stone fruit, jasmine, clean finish. Roasted Tuesday, June 24. Peak through July 15." Pair the origin line with one verified reviewer note and one freshness fact. Put the roast date as selectable text, never baked into an image, so it survives dark mode. The same logic holds for tea: a first-flush Darjeeling or a single-estate green has a harvest date and a shelf life, and the buyer who hit Notify Me wants to know the flush before they click.

CTA. One button. Grab the fresh batch. Subtext carries the subscription nudge. Restock emails that run a single CTA outperform versions with a nav row, a bestseller carousel, and a social strip piled underneath.

Example copy for a restock of 340 bags: Subject line: It's back. Ethiopia Yirgacheffe Konga. Preheader: 340 bags, roasted this morning. The waitlist gets first pick. Hero headline: The Konga is back on the shelf. Body: We scored a little more green from the Konga cooperative and roasted 340 bags this morning. You asked to hear about it first. Peak flavor runs about three weeks off the roast, so brew it fresh. Subscribe and we'll send the next lot the day it comes off the drum. Button: Grab the fresh batch.

Why it renders in every inbox

Coffee emails lean dark and image-heavy, which is exactly where inbox rendering breaks first. 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, every one with role set to presentation. Outlook 2007 through 2021 runs on Word's rendering engine, which ignores flexbox and CSS grid entirely. The origin-and-roast-date block is itself a table, so the varietal, process, and roast date line up in Outlook the same way they line up in Gmail.

Inline CSS on every element. Gmail strips style blocks from the head whenever it feels like it. Style lives on the element itself, on each td, p, and a, so the espresso text and terracotta button survive the strip. The mj-attributes block in the MJML source keeps it consistent without you typing it.

Bulletproof VML button for Outlook. Word's engine ignores border-radius and padding on an anchor tag, so the CTA collapses or loses its click target. The button wraps the link in a VML rectangle inside conditional comments, so Outlook draws a real, clickable, filled rectangle with rounded corners. Gmail and Apple Mail see the normal anchor and render the rounded button.

Live text, not images. The roast date, the origin line, and the tasting notes are selectable text, not baked into a product image. Live text scales on mobile, reads to screen readers, and stays legible when Apple Mail inverts colors in dark mode. An image-based roast date turns into a dark rectangle the moment the inbox flips.

Dark-mode color-scheme meta. A color-scheme meta in the head plus a prefers-color-scheme media query tell Apple Mail and Outlook.com to respect your cream-and-espresso palette instead of inverting it. The email does not blind a dark-mode reader scrolling at 6am, and the cream background does not wash out to a white slab.

One mobile media query. A single max-width 480px block stacks the columns, drops the headline from 32px to 26px, and stretches the CTA full width on a phone. One well-tested breakpoint 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 New Roman fallback stack so the email degrades to a clean serif everywhere web fonts are blocked. The layout never depends on the custom font loading, and on Outlook it will not.

How to use it in Klaviyo or Mailchimp

1. Copy the HTML. Export the MJML below and compile it at mjml.io, or grab the rendered HTML straight from the preview.

2. Klaviyo. Open the back-in-stock email inside your Back in Stock flow, drag an HTML block into the canvas, and paste. For a full custom template, go to Templates, Create Template, Import HTML, and upload the file.

3. Mailchimp. Start a campaign, choose Code your own, then Paste in code, and drop the HTML in. Mailchimp will warn about table elements. Ignore it; tables are correct here.

4. Swap the brand layer. Replace Northbank Coffee Roasters with your roastery in the logo image, the from-name, and every text mention. Swap the bag image URL and the CTA link to the restocked product page. Then find-and-replace the three brand hex values: the espresso text (#2A1810), the terracotta button (#A0431F), and the cream background (#F5EDE0). Change those three and the email re-skins to your roastery in about a minute.

5. Wire the merge tags so the coffee-specific data shows up. In Klaviyo, the Back in Stock event carries the product: {{ event.extra.product_name }} for the roast or blend, {{ event.extra.product_url }} for the PDP link, and {{ event.extra.variant_name }} for the grind or size, such as Whole bean, 12oz or 12oz, ground for pour over. Greet with {{ first_name|default:'friend' }}. For the roast date, most roasters store it as a product metafield or an event property referenced as {{ event.roast_date }}; if you roast on a weekly cycle, hardcode the date per product branch instead. In Mailchimp, use *|FNAME|* for the first name, *|PRODUCT_URL|* for the PDP link, and *|PRODUCT_TITLE|* for the bean.

6. Test before you ship. Send a preview to Gmail web, Gmail iOS, Apple Mail in both light and dark mode, and Outlook 365 desktop on Windows. Confirm the roast date renders as live text, the origin block lines up, and the CTA is a solid filled rectangle in Outlook. Check the preheader shows under the subject line. Then arm the send the morning the batch comes off the roaster.

Questions

Is this coffee back-in-stock email free to use for my roastery? +

Yes. The HTML and MJML are free to copy and send for your roastery or your clients. Paste them into Klaviyo or Mailchimp and keep the result. No license, no attribution, and no per-bag charge on the template itself.

Will it render in Outlook? +

Yes. The CTA is a bulletproof VML button, so Outlook's Word engine draws a solid filled rectangle with rounded corners instead of flattening the link. The layout runs on nested tables and inline CSS, which is the structure Outlook supports. Send one test to your own Outlook inbox before the batch goes live.

Can I match my roastery's brand colors? +

Yes. Three hex values drive the whole email: the espresso text (#2A1810), the terracotta accent (#A0431F), and the cream background (#F5EDE0). Swap those three in the inline styles or the mj-attributes block, and the dark-mode media query flips them automatically. A full rebrand takes about five minutes.

Do I need to know HTML to use this? +

No. Paste the code into a Klaviyo or Mailchimp code block and edit the text, image links, and merge tags in their editor. You only touch the MJML source if you want to restructure the sections, and you get the same ESP-safe HTML back out.

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