Free birthday email template for Klaviyo & Mailchimp

A birthday email marks a subscriber's birthday with a personal gift: a discount, a free item, or bonus loyalty points, sent once a year on the date they gave you. Its single job is to drive one redemption before the code expires.

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

What makes this birthday email work

A birthday email is the one campaign a year where a subscriber expects you to know something personal about them. That is the whole brief: make them feel seen for one morning, then hand them a gift they can actually use.

Trigger it off a birthday date property on the profile. In Klaviyo that is a date-based flow keyed to a Birthday custom property; in Mailchimp it is the Birthday automation off the birthday field. Send the morning of, between 8 and 10am in the subscriber's local time when your tool supports it, otherwise pick one send time and accept that some land a few hours off. The bigger sin is sending on the wrong date. Clean the date data first. Collect MM/DD without the year, because you do not need the year and people hand over a birthday more readily without it.

The message is one sentence: it is your birthday, here is your gift. Resist the urge to stack a sale, a referral ask, or a product grid beside it. Every extra option you add splits the click. The strongest birthday emails I have audited share a structure: the first name in the greeting, a single offer stated in plain terms, the code in giant text, one button.

Offer matters more than design. Across the DTC birthday emails I have pulled numbers on, 20% off is the reliable middle. Ten percent underperforms; thirty rarely lifts more than twenty and trains the list to wait. A free gift with purchase (a free 12oz bag over $35, free shipping, or double loyalty points for the month) matches or beats a flat percentage for brands with a healthy average order value. State the expiry out loud. A code good for two weeks or through the end of the month redeems at two to three times the rate of a code that never expires, because the recipient opens it instead of saving it for later.

Example copy that has worked: eyebrow "HAPPY BIRTHDAY, MARA", headline "Your birthday, on the house.", sub "Take 20% off your next order, plus a free bag of seasonal beans when you spend $35. Our gift to you." Subject line "Happy birthday, Mara, here is 20% off" with preheader "Your code BDAY-MARA20 expires July 31." One button: "Claim your birthday roast."

CTA discipline is where most birthday emails leak revenue. One button, one destination, the checkout with the code preloaded when your platform allows it. No nav bar above the offer, no social row, no "shop new arrivals" link beside it. The email exists to earn one click.

Why it renders in every inbox

The template compiles to the kind of HTML that survives the clients email marketers actually fear: Outlook on Windows, Gmail clipping, and Apple Mail in dark mode.

Layout is built from nested HTML tables, not divs or flexbox. Outlook desktop renders mail through Word's engine, which ignores flexbox, ignores most margins, and honors only what it can map to a table cell. Every section here is a table with td cells, the way email was built in 2009 and still is in 2026, because that is the one layout Word reads correctly.

Every style sits inline on the element it styles. Gmail strips the head style block in some versions and applies class-based CSS unpredictably, so color, font-size, line-height, and padding live on the td and the a. The compiled output does not lean on a stylesheet to look right.

The button is bulletproof. A plain a tag styled as a button loses its background and padding in Outlook desktop and collapses to a thin text link. The template ships a VML fallback inside MSO conditional comments, a v:roundrect with an anchor lock, that draws a real rectangle with the link baked in. Outlook 2007 through 365 desktop then show a solid button with correct padding.

The headline, the code, and the call to action are live text, not images. Image text vanishes when images are blocked (the default in many Outlook installs), inverts badly in dark mode, and is invisible to screen readers. A redeem code baked into an image is the single most common reason a birthday email fails to convert, because the reader cannot copy it.

Dark mode is handled with a color-scheme meta and a supported-color-schemes meta in the head, which tells Apple Mail and Outlook to invert intelligently instead of forcing a pure-black flip. The cream background becomes a dark warm tone and the text stays readable. Fonts load from Google Fonts (Fraunces for the display headline, Inter for body) with system fallbacks stacked behind them, Georgia for the serif and Helvetica or Arial for the sans, so Apple Mail and Samsung Mail render the web font while Gmail falls back to the system face silently.

One media query, max-width 600px, stacks the columns to full width, shrinks the hero headline, and keeps the button tappable. There is no second breakpoint, because this layout does not need one.

How to use it in Klaviyo or Mailchimp

If you are editing the MJML, compile it to HTML first. The MJML desktop app, the VS Code extension, or npx mjml birthday.mjml all output the single HTML file you will paste. If you skip MJML entirely, copy the compiled HTML and start there.

In Klaviyo, open the email you want, go to the content step, add an HTML content block (or toggle Source on a text block) and paste the full HTML inside. For a birthday, put this email in a date-based flow: Flows, Create Flow, Core Triggers, Date-Based, and key it to your Birthday property. Set "Send at a specific time" to the morning, and turn on smart sending so a promo the same day does not land on top of it.

In Mailchimp, start a Regular campaign, reach the Content step, choose Code Your Own, then Paste In Code, and drop in the HTML. For the trigger, use the Birthday automation (Automations, Create, Birthday), which fires off the birthday field on the audience.

Swap the brand before you do anything else. Replace the logo image and wordmark, find-and-replace the two brand hex colors (the espresso and the terracotta), and update every link. Change the brand name in the header and the footer.

Wire the merge tags. First name: {{ first_name|default:'there' }} in Klaviyo, *|FNAME:there|* in Mailchimp. The redeem code: hardcode a static code for a simple send, or, if your plan supports it, generate unique per-person codes in Shopify and pass them through a profile property or Klaviyo's coupon feature. Unsubscribe: {{ unsubscribe }} in Klaviyo, *|UNSUB|* in Mailchimp. Keep a real postal address in the footer; CAN-SPAM and CASL require it, and the email looks off without one.

Test before you send. Send a preview to yourself and open it in Gmail (web and the Gmail app), Apple Mail on iPhone and Mac, and Outlook on Windows. Turn dark mode on in iOS and macOS Mail and check that the hero and the footer still read. In Klaviyo use "Preview as" against a real profile so the merge tags resolve; in Mailchimp enable live merge tags in the Inbox Preview. Run it through Litmus or Email on Acid if you have a seat. Send when the date property and the code both look right for one real person.

Questions

Is this birthday email template free to use? +

Yes. Copy the compiled HTML or the MJML source and drop it into Klaviyo or Mailchimp for your own clients, no sign-up and no watermark. What Mailwright builds on top is the brand-skinned version with the copy written for that specific brand, if you do not want to do the swap yourself.

Will it render in Outlook? +

Yes. The layout uses nested tables and inline CSS, and the button carries a VML v:roundrect fallback so Outlook 2007 through 365 on Windows draw it as a solid button with correct padding instead of a collapsed text link. I check Outlook desktop before I call any birthday email done, because it is the client most likely to break a redeem code.

Can I change the colors and fonts to my brand? +

Yes. The palette is set in two places: the mj-all defaults in the head and the per-section background colors, both as plain hex. Find-and-replace the espresso (#2E2018) and the terracotta (#C7593A) with your two brand colors and the whole email restyles. Fonts swap the same way, in the mj-all font-family and on the display headline.

Do I need to know HTML or MJML to use it? +

No. Paste the compiled HTML into an ESP block and edit the copy in place: the greeting, the redeem code, and the button label. The only code you must touch is the first-name merge tag and the code itself. If you want to reorder sections, MJML reads close enough to HTML that most marketers can move a block without help.

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