TL;DR: A Klaviyo birthday flow triggers off the Birthday date property, repeats yearly, and sends 3 to 5 days before each customer's birthday in their local timezone. Use a 3-touch series: teaser offer, day-of send, expiry reminder. Birthday emails convert at nearly 5x normal campaigns, but the flow only reaches profiles with a birthday on file. Collecting that data is the real project.
A Klaviyo birthday flow is an automation triggered by the Birthday date property that repeats yearly and sends a personal offer 3 to 5 days before each customer's birthday, giving Shopify brands a message that drives 481% more transactions per email than standard promotions, per Experian. That number isn't a typo. Birthday emails are among the highest-converting messages in ecommerce, and most stores never build the flow. The ones that do usually stop at one generic email with no offer strategy and no plan for collecting birthday dates.
This guide covers the full Klaviyo birthday flow setup: the date property and formats Klaviyo requires, the trigger settings that trip people up, timing, the 3-touch structure, offers that protect margin, and the data collection system that decides how much this flow can ever earn. You can build the whole thing in an afternoon. The payoff repeats every year, on autopilot, for every customer who gives you a date.
Why a Klaviyo birthday flow?
Because nothing else you send converts like it. Automated birthday emails average a 43.3% open rate and a 0.72% conversion rate, about ten times the 0.07% average for automated messages, based on Omnisend's data. Klaviyo's own numbers put birthday email conversion at nearly 5x typical large-scale campaigns.
The revenue math holds up too. Experian found birthday emails generate 481% more transactions and 342% more revenue per email than promotional emails, a spread that Omnisend's birthday email research breaks down in detail.
Now zoom out to flows in general. Eightx's flow benchmarks put average flow revenue at about $1.94 per recipient versus $0.11 for campaigns. That's roughly an 18x gap. Yet those same benchmarks note that birthday flows are built so rarely they're almost impossible to benchmark. A proven high-converter that almost nobody runs. That's the opportunity.
The Birthday date property
Everything runs off one field: the Birthday date property on the Klaviyo profile. Klaviyo includes it by default, and it must hold a real date, formatted as MM/DD/YYYY or YYYY-MM-DD. A birthday saved in a plain text field looks fine on the profile but will never fire the flow.
If you imported birthdays from another platform, check the format first. Open a few profiles and confirm the value sits in the Birthday date property, not a custom text field. If it landed in text, re-import your CSV and map the column to the date property.
One more quirk: the Birthday property won't appear in the flow trigger dropdown until at least one profile has a value. If your account has zero birthdays on file, add your own to a test profile. That single record unlocks the trigger.
Klaviyo birthday flow setup
Here's the build, start to finish. Budget 30 to 60 minutes for the flow itself.
Step 1: Check the property
Confirm at least one profile has a Birthday value in the correct date format. Without it, the trigger option won't exist. This is the most common reason store owners think the feature is broken.
Step 2: Build the trigger
Go to Flows, click Create Flow, and build from scratch. Choose the Date property trigger and select Birthday. Then set Repeat to Yearly. Skip that setting and the flow fires once per customer, ever. Klaviyo's birthday flow guide documents the trigger options if you want the official reference.
Step 3: Set the timing
Schedule the first email to send a few days before the date. Start with 3 days and test up to 5. Set the send time earlier in the day, around 9 AM, and use Recipient's Local Timezone so a customer in London isn't celebrating at 3 AM.
Know this caveat: date-triggered flows pre-schedule recipients ahead of time. A customer who adds their birthday a day or two before the date can miss this year's cycle and catch the next one. It's one more reason to collect birthdays early and continuously.
Step 4: Add the messages
Build three touches. Email one, sent 3 to 5 days out, teases the gift and delivers a unique discount code with a clear expiry. Email two lands on the birthday itself with a warm, celebratory message. Email three reminds them before the code dies. Add a profile filter so anyone who already redeemed the code drops out.
When should the email send?
Send the first email 3 to 5 days before the birthday, earlier in the day, in the recipient's local timezone. People shop for themselves ahead of the date, and an early send puts your offer in front of them before the flood of birthday messages and gift cards arrives.
The day-of email still matters. It carries the most emotional weight, so keep it warm and simple. Some brands go further and open the entire birthday month, giving VIPs early access or double points for all 30 days. That works well for higher-AOV stores where one purchase justifies a month of goodwill.
Morning sends win here for a simple reason. Birthday plans get made during the day, and self-gifting happens on lunch breaks, not at midnight.
Should you send a reminder?
Yes. A reminder sent before the birthday code expires lifts opens, clickthrough, average order value, and revenue by 20% or more compared with stopping at the day-of email. In many accounts, the final nudge captures more revenue than the first send.
The logic is human. A birthday week is busy, and your 15% code isn't the priority. The reminder catches people once the cake is gone and the code is about to vanish. Give the code a hard expiry, around 7 days past the birthday, and say so plainly in the reminder.
This is also where SMS earns a spot. Add an SMS action inside the same flow, filtered to profiles with SMS consent. Keep it to one line, the unique code, and the deadline. And remember a reminder only pays if it reaches the inbox, which is exactly what deliverability work protects.
The real work: birthday data
Here's the part almost every guide skips. Your birthday flow's revenue is capped by the percentage of profiles that have a Birthday value. If 3% of your list has a date on file, you built a beautiful flow for 3% of your customers. The flow is the easy half. Data collection is the project.
Four systems fill the gap. First, add a birthday field to step two of your signup popup, after the email and phone are captured, so it never hurts your initial conversion. Good popup and capture setup makes this a five-minute change. Second, ask post-purchase, when goodwill peaks. Third, put the field on your preference page so it collects passively forever. Fourth, backfill: build a segment where Birthday is not set and send it a short email campaign that promises a yearly gift in exchange for the date.
Then protect your margin. A blanket 20% code trains customers to wait for it. Ladder the offer instead: double loyalty points during the birthday month for everyone, a free gift over a spend threshold for repeat buyers, early access for VIPs, and reserve the deep discount for your top-CLV tier only.
Across the Shopify stores we manage at CartStrings, accounts that treat birthday collection as a system, not a form field, are the ones where email reaches 32% of total revenue. If you don't know how much birthday data you're sitting on, a Klaviyo audit surfaces it fast.
What subject lines work?
Short, personal, and explicit about the gift. "Happy birthday, Sarah. Here's 20% off" beats clever wordplay every time. Use Klaviyo's first name tag with a default fallback, put the offer in the subject or preview text, and save the urgency for the expiry reminder.
For the teaser: "Your birthday gift is early." For the day-of: "Happy birthday, {{ first_name }}. This one's on us." For the reminder: "Your birthday gift expires tonight." Set a fallback like "friend" so profiles without a name never see a blank.
Inside the email, keep one offer, one button, and a small block of recommended products. Birthday emails already carry a 43% open rate. Your only job is not getting in the way of the click.
Wrap-up: build it this week
The build is an afternoon: confirm the Birthday property, trigger on it, set Repeat to Yearly, send 3 to 5 days early in the recipient's timezone, and close with an expiry reminder. The system that makes it pay takes longer. Popup step two, post-purchase asks, a backfill campaign, and an offer ladder that protects margin. That's the work most brands never reach, which is why the birthday flow stays the highest-converting automation almost nobody builds.
If you'd rather hand it off, this is what we do all day at CartStrings. We run email automation build-outs like this for Shopify brands doing $500k+ a year, with a 39% average open rate across the accounts we manage. Book a call and we'll map your birthday flow, plus the flows around it, in one conversation.
Frequently Asked Questions
How do I set up the flow?
In Klaviyo, go to Flows, create a new flow, and choose the Date property trigger with Birthday as the property. Set Repeat to Yearly, schedule the first email 3 to 5 days before the date, and send in the recipient's local timezone. Add a day-of email and an expiry reminder, then set each message live.
What date format is needed?
Klaviyo needs birthdays stored in the default Birthday date property, formatted as MM/DD/YYYY or YYYY-MM-DD. A birthday saved in a plain text field won't trigger the flow. If you imported birthdays as text, re-import the file and map the column to the date property.
Send before or on the day?
Before. Three to five days ahead performs best because customers shop for themselves before the date and your offer beats the birthday-week noise. Use the day-of email as your second touch, then send a reminder before the code expires.
Can Klaviyo send birthday SMS?
Yes. Add an SMS action inside the same birthday flow, filtered to profiles with SMS consent. Keep it to one line with a unique code and a short validity window, around 7 days. Let the email touches carry the detail.
How do I backfill birthdays?
Build a segment where Birthday is not set, then send that group a short campaign asking for the date, linked to your preference page or a simple form. Pair the ask with a reason, like a yearly birthday gift. Every date you collect adds a recipient to next year's flow.
.avif)



