Build A Klaviyo Winback Flow The Way Our Agency Does It

One marketing industry secret is that it's much cheaper and easier to generate sales from existing customers than new ones. 

DTC brands that prioritize new customers without a strategy to retain them are stuck in a grind cycle that makes profitability difficult to achieve.

Today I’m talking about Winback flows in Klaviyo, a key part of any online store’s retention strategy. Winback flows are built to convince existing customers who haven’t purchased in awhile to buy again.

Welcome to the Email Kong blog! We are a Klaviyo Master Platinum Partner agency, who have built hundreds of winback flows for our stable of over 150 DTC brands. 

In this guide we share our secrets and expertise on how to build a Klaviyo winback flow that brands really pay for.

Which Winback Emails To Send And What Each One Carries

Three sends is the working shape for a Klaviyo winback flow. Adding a fourth rarely helps, and it usually just deepens the discount.

Open With A Reminder Of The Last Purchase

Name the thing they bought. A lapsed customer who gets "we miss you" learns nothing they didn't already know, whereas a message that names the actual product tells them you still hold their history.

Ask for nothing in this send. No code, no urgency, no countdown.

That restraint is the whole point of email one, and it is the send most builders spoil by putting the offer in it.

Attach The Incentive To A Deadline Mid-Sequence

Put the offer in the middle. By then the customers who only needed a nudge have already come back, and the ones still sitting there are the ones an incentive was built for.

This is what that looks like in a real winback email of ours.

Give it an expiry. An open-ended code gives nobody a reason to act today, and a lapsed customer is somebody who's already comfortable not acting today.

In our creative library a winback send we wrote for a supplement client pairs a fixed-value next-purchase gift card with a 24-hour countdown timer and a no-risk guarantee. We let those two carry the urgency so the code stays flat across the sequence.

Our own published flow architecture runs this send as an email carrying an incentive at sixty days without a purchase.

What it carries is open, though. A 30 Day Workout Challenge invitation from our library reopens the relationship at zero margin cost. A social-proof send we built for the Flora+ supplement brand ran five-star testimonials with a Buy 2 Get 1 Free. Both put something in front of a lapsed customer without teaching the list to wait for a code.

Close The Sequence With A Clean Final Send

Email three ends the sequence. It doesn't escalate.

Escalation is tempting and it teaches your list the wrong lesson, because a customer who learns that going quiet produces a bigger code will go quiet again on purpose. Say plainly that this is the last one for now and stop. How often the rest of your program sends is a separate question worth settling.

Trigger The Flow At Sixty Days Without A Purchase

Sixty days is where we start clients who have no better number to hand. It's a defensible default, and your own catalog will probably want a different number.

Sixty Days Is A Starting Position Rather Than A Rule

Launch on it if you must launch this week. A flow firing at a roughly sensible moment beats a flow still in draft while you gather data.

There is a mechanical reason that default exists rather than a better number, which is that the data usually is not there yet. Klaviyo won't compute a predicted next order date for an account at all until at least 500 customers have placed an order and there are 180 days of order history behind them, so a young store has nothing better than a sensible default to work with.

Replace it as soon as you have the data. Whatever should govern the trigger lives in your own order history, and until it does the flow is working off somebody else's business.

Operators ask where to find it, reasonably, because Klaviyo ships no report that hands you the number directly. Export order dates by customer, work out how long each one waits between orders, and read the median of those waits.

Move The Window To Your Own Median Repurchase Interval

Take the median interval between orders for your repeat customers. Leave the mean alone.

This isn't a fussy distinction. A pooled average is dragged around by a long tail, and the agency BS&Co makes the same point in the methodology note to its own Klaviyo flow benchmarks: it reports a median across brands, because a single unusually strong brand drags a pooled figure upward by more than a point.

Your repurchase data carries the same distortion, where a handful of subscription-like buyers reorder every fortnight and everybody else takes months.

Which category you sell in matters less here than most people expect. Your own median repurchase interval is the number that governs, which is exactly why the lapsed threshold is a number you set for yourself.

Set the trigger some way past that median. Around one and a half times it is a sensible opening position, and worth adjusting from there.

Klaviyo Falls Back To A Customer Average For One-Time Buyers

Klaviyo publishes an expected date of next order per profile, and it is tempting to trigger on that instead. For your repeat buyers it is personalized in the way the name suggests.

For a one-time purchaser it is not. Klaviyo's own documentation says that where it knows little about a profile's buying behavior it calculates the expected date from data across all your customers. For exactly the population a winback targets, that prediction is a cohort average wearing a personalized label.

Klaviyo also advises against counting down to that date as a trigger at all, on the grounds that repeat customers then receive the same sequence before every order. Worth knowing before you build the whole flow around it.

First-Time Buyers Need A Different Threshold From Repeat Buyers

Someone who bought once and someone who has bought four times lapse on different timescales, and one threshold applied to both will mistime at least one of them. Klaviyo is explicit that a profile which has never ordered has no expected date of next order at all, which puts never-purchasers outside this population by definition.

Split the flow on order count and give each branch its own window. It's ten minutes in the flow builder, and it stops you chasing a first-time buyer who was never going to reorder monthly.

There is an outer boundary on all of this. Eightx puts it at 120 to 180 days without engagement, after which a profile stops being a winback candidate and becomes a sunset candidate, because continuing to mail it starts costing you inbox placement.

Price The Discount Against Gross Margin Before Choosing Its Depth

Discount depth usually gets set by convention, with the code escalating toward twenty percent off by the final send. Almost nobody prices it first.

A discount isn't obligatory at all. Plenty of re-engagement builds run three angles and no code whatsoever, which is a useful reminder that the escalating ladder is only a convention.

Bob Thordarson of Geysera, who writes on ecommerce email strategy, puts the objection about as plainly as it can be put:

The customers who would have come back at full price convert from Emails 1 and 2. They just needed a reminder. If you open with a discount in Email 1, you're giving away margin to people who didn't need the incentive.

So do the arithmetic on the customers who reach email two still unconverted. Take your gross margin on a typical reorder and decide what share you will spend to recover a customer who would otherwise be gone.

Work it through on your own numbers and the convention starts to look expensive. A twenty percent code on a sixty percent margin hands over a third of the margin on that order, much of it to customers who would have returned anyway. Whatever depth you land on is usually shallower, and it belongs to your business.

Wire The Klaviyo Trigger And Filters So It Fires On The Right People

Three settings decide whether your Klaviyo winback flow reaches lapsed customers or simply annoys everybody. Where an abandoned cart flow is already live, these are the settings that keep the two from colliding.

Use Placed Order As The Trigger Event

Trigger on Placed Order. Using a purchase to start a lapse flow sounds backwards until you follow the sequence through. The customer enters at the moment they buy and waits out the delay, and the flow sends only if nothing has happened since.

Set it any other way and the population changes. An engagement trigger catches people who stopped opening. That's a different population with a different problem, and mailing them a discount does nothing for a deliverability issue.

BS&Co makes the same argument structurally, publishing its winback guidance under the heading that the flow should be purchase-triggered and not engagement-triggered. It is the one point on which the field broadly agrees and most builds still get wrong.

Filters Must Drop Anyone Who Buys Mid-Sequence

Klaviyo checks flow filters before each individual message goes out, and removes profiles that no longer meet the criteria. Put a filter on purchase activity and anyone who converts partway through drops out of the sequence.

Without it a customer who buys after email one still receives the discount in email two. You have then paid margin to somebody who had already come back, which is the most avoidable loss in the whole build.

Exclude Profiles Already Sitting In Another Flow

Winback fires into people who are simultaneously in browse abandonment and post-purchase flows, and none of those knows about the others.

Our own published architecture puts cart recovery at one hour after abandonment and the winback at sixty days. That is a wide enough spread for a single profile to sit inside both windows in the same fortnight, with each flow firing on its own schedule and neither checking the other.

That collision is common enough that the standing advice in Klaviyo's own community forum is to add conditions excluding customers from Add to Cart and abandonment flows whenever they are sitting in the winback.

Take that instruction both ways. Add exclusions against every flow a lapsed profile might be sitting in. Turn Smart Sending on as well so the account enforces a floor between messages, and you have covered the most neglected setting in the build.

Three Different Numbers Are All Called The Win-Back Rate

Your dashboard and your repeat-purchase rate disagree about whether the Klaviyo winback flow is working, and the disagreement is an artefact of how each one is measured.

Separate Entry Conversion From Full-Flow Conversion

Entry-email conversion, full-flow conversion and revenue per recipient are three different measurements with three different denominators, and all three get called the win-back rate. Eightx calls that the single biggest source of confusion on the topic, and it is hard to disagree.

Most of the confusion comes from mixing a flow number with a program number. Program-level reactivation asks how many of your inactive customers returned through any channel at all, and the retention consultancy Eightx puts average programs at 12 to 20 percent on that measure. Somebody quoting a two percent flow conversion rate against a half-remembered fifteen percent is comparing those two numbers, and they are not the same measurement.

Those numbers are further apart than most operators expect. In BS&Co's benchmark set the winback flow converts at 0.09% on the entry email, against a welcome flow sitting two orders of magnitude above it.

That is also why revenue per recipient is the better ranking metric when you decide which flow to work on next. Conversion rate flatters flows that fire at people who were already close to buying.

For scale, Eightx puts a healthy email flow at $0.40 to $0.60 revenue per recipient at baseline, against a BS&Co winback median of seven cents. A flow that far below the range has room in it, and closing that room is what the settings above are for.

More telling is the pairing with open rate. BS&Co puts winback full-flow open rate at 40.8%, comfortably above the published campaign average, against a conversion rate of a fraction of a percent. Lapsed customers are reading these emails and choosing not to buy. Your subject line is doing its job already, and rewriting it will not become the fix.

Build A Holdout With A Conditional Split And A Profile Property

Klaviyo ships a holdout feature. It requires at least 400,000 profiles, which rules out very nearly everybody reading this. It also withholds all messaging at once, so no version of it answers a question about the winback on its own.

Nor will an A/B test, which is the substitution most accounts reach for. A split test tells you whether one version of an email beat another; a holdout tells you whether sending the email at all changed what the customer did. Only the second question is worth asking about a flow you are deciding whether to keep.

Asking it properly always takes the same construction. Deliberately do not message a small randomized subset who would otherwise be eligible, then compare their behavior against the exposed group over the same window. Whatever separates the two is your incremental signal.

Build your own instead, which takes about twenty minutes. Put a conditional split at the top of the flow. Send a random slice down a path that writes a profile property and sends nothing. Let the rest continue as normal. That property is your control group.

Operators who have run one land on the same construction, and on the reason for it: setting a custom profile property and excluding those profiles surgically beats switching whole flows off, because switching everything off leaves money on the table while you measure.

Containment is what that buys you, and it is the whole reason to prefer a property over an off switch: the measurement stays on the single flow you are asking about rather than spreading across the whole program.

That control group doesn't need to be large. Ten percent is plenty, and you compare revenue per recipient across the two groups afterwards, because attributed revenue counts orders that would have arrived without any help from the flow.

Be ready for the answer. Writing on r/Klaviyo, u/khaledalameldin describes a brand that ran one properly: "They'd run a real holdout test on their Klaviyo flows, split their active list 50/50, shut off all flow emails to one half for an extended window. Only the welcome series showed a statistically significant lift." A winback that survives that test has earned its place. One that fails it has been costing you margin every month it ran.

Week Eight Is Your First Honest Read

Give it time. A winback holdout measures customers who were always going to take months to reorder, so a reading at two weeks tells you nothing except that two weeks isn't long enough.

Week eight is roughly where the control group's natural repeat purchases have landed and the comparison starts to mean something. Reading it earlier is how a working flow gets switched off.

Get Your Klaviyo Account Audited By A Master Platinum Partner

Whoever set those thresholds can't see them the way a lapsed customer does. Proximity explains it. A Klaviyo winback flow can sit misconfigured for a year inside an account somebody checks every week.

Our free Klaviyo audit is a teardown of the retention funnel. Every winback setting above is on the list, from the trigger event through to whether anything in the account is measuring causation at all.

When we rebuilt the flows on Dense Hair Experts, attributed revenue reached 32% and returning-customer revenue rose 59% inside ninety days. Our Trustpilot reviews come from operators who sat through that process.

Book the audit and we will tell you which of those five settings is costing you money.

Written By
Bogdan Mihalache
Founder & CEO
Bogdan Mihalache is Founder and CEO of Email Kong, a London retention marketing agency working with over 140 DTC brands. He sits on Klaviyo's Partner Advisory Council and has spent over 10 years building email marketing strategies.