"Lapsed at 90 days" is a made-up category

Ask where the 90-day win-back trigger came from and the answer is almost always that it was the default in the ESP template. It is not derived from anything about the business. It is a round number that felt like a reasonable amount of silence.

The problem is that 90 days of silence means completely different things in different categories, and often nothing at all. A coffee brand's customer at 90 days is genuinely gone. A mattress brand's customer at 90 days is behaving exactly as expected. A skincare brand's customer at 90 days is probably mid-way through a jar and will reorder in three weeks without any prompting whatsoever.

That last case is where the money leaks. The flow fires, the customer was already going to return, they see an email with 15% off, and they use it. Klaviyo records attributed revenue. The flow's reported ROI looks outstanding. And the brand has converted a full-price order it already had into a discounted one, then congratulated itself.

A win-back flow doesn't reactivate a customer who was always coming back. It just gets in front of them on the way and charges you for the privilege of standing there.

This is the same interception dynamic that inflates affiliate performance — a channel positioned at the last moment before a purchase collecting credit for demand generated elsewhere. The mechanics and the correction are laid out in the revenue that was never incremental. Win-back is the owned-channel version, and it's more insidious because there's no external partner to blame.

Build your actual repurchase curve

The fix starts with one query you can run today. Take every customer who placed a first order at least 18 months ago. For those who went on to place a second order, record the number of days between order one and order two. Then plot the cumulative percentage.

You are looking for the shape, and specifically for where it flattens. A representative curve for a consumable DTC brand might look like this:

Read the 90-day row again. At the moment the standard win-back flow fires, 39% of everyone who will ever reorder has not yet done so. The flow is being aimed at a population that is nearly 40% "still coming back on their own." Every one of those is an order you were getting for free, now arriving at a discount.

Now read day 180. By then 86% of eventual repeat buyers have already returned, so only 14% of them are still outstanding — and since the audience still sitting there is mostly people who will never reorder at all, the natural-return share of who you're actually emailing is smaller still. Push to day 270 and only 6% of eventual repeaters remain. The later you trigger, the higher the share of responders who genuinely needed the nudge — and the smaller the audience gets. That trade-off is what the curve exists to let you reason about.

What the flow really earns, worked

Take a brand with $86 AOV, 58% gross margin, and a win-back flow firing at day 90 with a 15% off code. Shipping and fulfillment run $8.60, payment processing 2.9% plus $0.30.

Say 10,000 customers enter the flow in a quarter and 7.4% place an order — 740 orders. That's the number the ESP reports, alongside roughly $54,000 in attributed revenue. Healthy-looking flow.

Now split it using the curve. Of customers sitting at day 90 with no second order, the curve says a substantial share will still return unprompted within the next few months. Suppose a holdout tells you the natural reactivation rate over the same window is 5.1%, and the treated rate is 7.4%. The incremental reactivation rate is 2.3 points, not 7.4. Of the 740 orders, 510 were coming anyway and 230 were caused.

Per order, discounted: revenue $73.10, COGS $36.12, shipping $8.60, processing $2.42 → contribution margin $25.96.
Per order, full price (what the 510 would have paid): revenue $86.00, COGS $36.12, shipping $8.60, processing $2.79 → contribution margin $38.49.

Note what doesn't move: COGS stays at $36.12 in both lines. The discount doesn't shrink what the goods cost you. That's the whole mechanism — the entire 15% comes straight out of contribution margin, which is why a discount that looks modest against revenue lands hard against profit.

Now total it:

The flow reported $54,000 in revenue and produced slightly negative contribution margin. Nothing in the ESP dashboard shows this, because the ESP has no way to know which orders were already coming. Solving for the point where the two sides cancel — i × $25.96 = (7.4 − i) × $12.53 — puts break-even at an incremental rate of 2.41 points, just above where this flow actually lands.

Find the break-even lift on your win-back offer — free, no login

The Discount Stress Test takes your margin rate and discount depth and returns the order lift the offer has to produce before it breaks even on margin dollars. Run your win-back code through it.

Open the Discount Stress Test →

The holdout that settles it

Everything above depends on the natural reactivation rate, and you cannot estimate it from the curve alone because the curve was built on a population that also received emails. The only clean measurement is a holdout, and it is far easier to run than most teams assume.

Suppress a random 10–15% of every cohort entering the flow. Don't pick a segment — randomize, or the comparison is worthless. Let it run until you have enough entries for the difference to be readable, which for most mid-market brands is one to two quarters. Then compare the reactivation rate of the suppressed group to the treated group over an identical window measured from entry date.

Three details decide whether the result is trustworthy. Measure from entry date, not send date, so both groups have the same clock. Measure all orders, not just email-attributed ones — the holdout group has no attribution by definition, so any attributed comparison is rigged. And measure contribution margin, not revenue, because the treated group's orders carry a discount the holdout's don't.

Leave the holdout on permanently. Reactivation economics drift as your mix and category change, and a one-off reading from eighteen months ago is how teams end up defending a flow that stopped working a year ago.

Why leading with a discount costs the most

Look at the worked example again and notice where the loss came from. It wasn't the flow existing. It was the discount reaching 510 people who didn't need it.

A discount in message one is applied to everybody, including the entire natural-return population. A discount in message four reaches only the people who ignored three non-discount attempts — a group that is, by revealed behavior, much more likely to need it. Same offer, radically different cost, because the sequencing acts as a filter.

So a defensible win-back sequence looks like: a genuine reason to return (new arrivals, a restock of what they bought, a category they never tried), then a reminder with social proof or a product they'd plausibly want next, then a low-friction nudge, and only then an offer — ideally the shallowest one that works rather than the deepest one that converts.

There's a compounding cost to getting this wrong. Customers who learn that going quiet produces a discount will go quiet. A win-back flow that reliably rewards inactivity is training your best customers to wait, and that training persists long after the campaign ends.

Your category sets the clock

The right trigger day is a function of consumption, not of a best-practice list. A useful rule: find the day by which about 80–85% of eventual repeat buyers have returned, and trigger just past it.

That lands in wildly different places. A coffee or supplement brand with a 30-day consumption cycle might hit 85% by day 120. An apparel brand with seasonal purchasing might not hit it until day 240. A durable-goods brand might never have a meaningful natural second-order curve at all, in which case win-back isn't a flow you should be running — the correct intervention is cross-sell into an adjacent category, which is a different campaign with different economics.

Multi-SKU brands should segment the trigger by first-product consumption cycle rather than running one global rule. Someone whose first order was a 90-day supply and someone whose first order was a 30-day supply are not at the same point in their lifecycle on day 90, and treating them identically guarantees you're early for one and late for the other.

This is also why win-back sits downstream of a much larger lever. If the second order isn't happening at acceptable rates in the first place, a better-timed win-back flow is a small correction on a big problem — the structural version of which is covered in repeat purchase rate is the most underused lever in DTC.

Rebuilding the flow

Common questions

When should a win-back campaign trigger?

Trigger it after the point where your natural repurchase curve has gone flat, not at a round number like 90 days. Pull the distribution of days between first and second order for a cohort that is at least a year old, then find the day by which roughly 80 to 85 percent of everyone who ever reordered had already done so. Customers still inactive past that point are genuinely lapsing rather than simply slow, so a campaign reaching them is far more likely to cause an order rather than intercept one that was already coming.

How do you measure win-back campaign incrementality?

Hold out a random ten to fifteen percent of every entry cohort from the flow and compare reactivation rates between the holdout and the treated group over the same window. The difference is your incremental reactivation rate. Attributed revenue from the flow is not the same thing, because a meaningful share of recipients would have returned without any email. The holdout is the only method that separates the two, and it costs almost nothing because the suppressed group is small and the comparison runs continuously.

Should a win-back email include a discount?

Not in the first message. Leading with a discount means every recipient who would have returned anyway now returns at a lower margin, which is the single largest source of loss in most win-back programs. A better structure is a sequence that opens with a non-discount reason to return, such as new products, restocks, or a reminder of what they bought, and escalates to an offer only for recipients who have not responded. That way the discount reaches only the segment that demonstrably needed it.

Find your real lapse point

Almost every win-back flow I look at is firing too early, leading with a discount, and reporting attributed revenue as though it were caused revenue. Individually those are defaults, not mistakes. Together they describe a campaign that converts free orders into discounted ones and books the result as a retention win.

The diagnostic is two days of work: plot the curve, install the holdout, and let the flow prove it's doing something. Most don't survive the first honest quarter without changes — and the ones that do get meaningfully more profitable once the discount is aimed at the people who actually needed it.

Want to know what your lifecycle flows are actually contributing?

I rebuild reactivation economics on incremental rate rather than attributed revenue, find your real lapse point from your own repurchase curve, and set offer depth your contribution margin can carry. Starts with a free diagnostic call.

Request a free audit →

Mike Emerson

Mike writes Ecommerce Cure, an independent consulting practice for DTC and mid-market operators who work in contribution margin rather than revenue. Every framework here is diagnostic-first and shows its arithmetic. About the practice · Free P&L tools