Win back lapsed customers with a silence window instead of a discount ladder
Reactivation timed on returning intent, not on days since last order.
The short answer
A win-back silence window is a deliberate pause after a customer lapses, before any reactivation contact. It exists because immediate discount ladders reactivate the customers who were returning anyway and burn the rest. Markin decides who to contact, when, and with what, then reads reactivation against a randomised holdout.
Last reviewed 2026-09-10
Who this applies to, and who it must not reach
Eligible
- Lapsed against a per-cohort definition, not a single site-wide day count.
- Modelled probability of unaided return is low enough that contact can add value.
- Consent still valid and the address still deliverable.
- No reactivation offer in the previous window.
Excluded
- Customers whose buying rhythm simply has a long natural gap.
- Addresses with poor deliverability history, which damage the sending domain.
- Customers who lapsed after a service failure. That is a service recovery, not a promotion.
- Holdout members.
The minimum data, and where it normally comes from
| What is needed | Usual source |
|---|---|
| Order and subscription history | Shopify, Stripe or the warehouse |
| Per-cohort purchase cadence | Warehouse |
| Email and SMS engagement, deliverability state | Klaviyo |
| Margin per category | Finance, supplied as an input |
| Service and refund history | Support platform |
Step by step
How the decision runs
- 01Markin
Define lapse per cohort
A 60-day gap means something different for a weekly grocery buyer and a twice-a-year traveller. Lapse is set against each cohort's own cadence.
- 02Markin
Hold the silence window
Nothing is sent while the modelled chance of unaided return is still high. The window is a decision, and it is tested like any other.
- 03Markin
Rank reactivation candidates on expected margin
Content, category and incentive depth are all candidate actions. A no-discount reminder frequently outperforms a discount once margin is counted.
- 04Your stack
Send through Klaviyo
Klaviyo keeps flows, templates, sending reputation and suppression. It receives the decision, the reason and the decision ID.
- 05Markin
Read reactivation and repeat behaviour
Success is not the first order back. It is incremental margin over the following cycle, so one-off discount hunters do not count as a win.
Measurement
How you know whether it worked
- Holdout
- Randomised among eligible lapsed customers, receiving no reactivation contact for the whole window.
- Window
- One full purchase cycle for the cohort, plus 30 days.
- Primary result
- Incremental margin per lapsed customer over the cycle.
Guardrails
- Discount depth per reactivated customer.
- Second-purchase rate after reactivation.
- Unsubscribe and spam-complaint rate.
- Deliverability of the sending domain.
Illustrative only
A worked example
Illustrative comparison of two reactivation policies on the same lapsed cohort.
| Lapsed customers in the cohort | 80,000 |
|---|---|
| Policy A | Discount ladder starting on day 30 |
| Policy B | Silence to day 55, then one ranked action per customer |
| What A usually wins | Reactivation rate |
| What decides it | Incremental margin per lapsed customer against the holdout |
Both policies must be read against the same untouched control, or the comparison is decorative.
Run it on your own numbers
The arithmetic, spelled out
Incremental margin per lapsed customer = (reactivation rate in the contacted group - reactivation rate in the holdout) x margin per returning customer - discount cost x reactivation rate in the contacted group.
| Input | Value |
|---|---|
| Lapsed customers in the cohort | 80,000 |
| Reactivation in the untouched holdout over the cycle | 9.0% (unaided return) |
| Reactivation in the contacted group, Policy A (30% ladder) | 13.5% |
| Incremental reactivation from Policy A | 4.5 points |
| Average returning order value | $60.00, margin 45% = $27.00 |
| Incremental margin per lapsed customer, Policy A | 0.045 x $27.00 = $1.215 |
| Discount cost, paid on all reactivations including unaided ones | 0.135 x (0.30 x $60.00) = $2.43 |
| Net per lapsed customer, Policy A | $1.215 - $2.43 = -$1.215 |
| Policy B: silence to day 55, then one ranked no-discount action | Reactivation 11.8%, incremental 2.8 points, no discount cost |
| Net per lapsed customer, Policy B | 0.028 x $27.00 = +$0.756 |
Policy A wins on the reactivation rate a dashboard shows (13.5% against 11.8%) and loses roughly $1.22 per lapsed customer, because the discount is paid to the 9% who were returning anyway. Across 80,000 customers that is about $97,000 of margin against $60,000 gained by the quieter policy.
Illustrative inputs. The mechanism is general: any incentive paid on unaided returns is a transfer, and only a holdout separates the two groups.
Timeline
How long it takes to a first measured result
- 01Weeks 1 to 2
Cadence and lapse definition
Purchase rhythm is measured per cohort, so lapse stops being a single site-wide day count. This alone usually changes who is contacted.
- 02Week 3
Unaided-return baseline
The share of lapsed customers who return with no contact is measured historically. Without this number the whole programme is unreadable.
- 03Week 4
Silence window and action set
The window is set from cohort cadence and treated as a testable variable; incentive depth becomes one candidate action among several.
- 04Week 5
First cohort live in Klaviyo
Flows receive the decision, the reason and the decision ID. Suppression and deliverability rules stay with Klaviyo.
- 05Week 13 onwards
First causal read
One full purchase cycle for the cohort plus 30 days, so second purchases are counted rather than only the first order back.
Technical detail
What is read and written, field by field
Klaviyo
Read
- Profiles, consent state and suppression list
- Email and SMS engagement events and deliverability signals
- Existing flow and segment membership
Written
- markin_action, markin_decision_id, markin_reason and markin_holdout as profile properties
- Or a custom event that triggers the flow directly
Daily profile update; event trigger where a flow starts on the decision.
Shopify or the commerce platform
Read
- Order history: date, value, line items, category
- Refunds and cancellations
- Customer records for identity mapping
Written
- Nothing.
Read only, daily.
BigQuery or your warehouse
Read
- Per-cohort purchase cadence and the unaided-return baseline
- Margin per category supplied by finance
- Service and refund history
Written
- Decision, exposure and holdout tables keyed by decision ID
Daily.
Effort
What it asks of your team
| Who | How much of their time |
|---|---|
| Email or lifecycle manager | Around a day a week: flows, templates and the review of who is being contacted. |
| Data analyst | Around 3 days in weeks 1 to 3 for cadence and the unaided-return baseline. |
| Finance or merchandising | One session for margin per category and the discount ceiling. |
| Deliverability owner | One review of send volumes against the sending domain's reputation. |
What normally goes wrong
The escalating discount ladder
Ten percent, then twenty, then thirty teaches the base to lapse on purpose. It also converts customers who were coming back anyway at a permanent margin cost.
One lapse definition for the whole base
A fixed day count mislabels slow-cadence customers as lost and contacts them while they are still active.
Counting the first order back as success
Reactivation that produces one discounted order and nothing afterwards is a cost. Read the following cycle.
Mailing every dormant address
Large sends to disengaged addresses damage deliverability for the customers who are still engaged.
Questions this playbook answers
- When should I send a win-back email?
- Do win-back discounts actually work?
- How long should I wait before contacting a lapsed customer?
- How do I measure win-back incrementality?
- How do I run win-back flows in Klaviyo?
Frequently asked
- Why wait instead of contacting immediately?
- Because a large share of recently lapsed customers return without any prompting. Contacting them early does not create the return, it just attaches a discount to it. The silence window exists to let those customers come back on their own, so the offer reaches the ones who need it.
- How long should the silence window be?
- It depends on cohort cadence, and it should be treated as a variable to test rather than a fixed number. What matters is that the window is derived from each cohort's own purchase rhythm instead of a single site-wide day count.
- Should the first contact carry a discount?
- Often not. Once margin is counted, a relevant no-incentive reminder frequently beats a discounted one, and it avoids repricing the relationship. Markin treats incentive depth as one of the candidate actions rather than as a given.
- Does this work for subscriptions as well as commerce?
- Yes, with a different lapse definition. For subscriptions the equivalent trigger is a cancellation that has already taken effect, and the same logic applies: wait, rank, contact once, measure the following cycle.
- What does Klaviyo keep doing?
- Everything it already does well: flows, templates, segments, suppression, sending reputation and compliance. Markin decides who, when and what, and hands that decision to Klaviyo to execute.
Where this connects
- PlaybookRun a retention offer before renewal without paying customers who were staying anywayPre-renewal save offers on Stripe, sized by risk instead of by list membership.
- PlaybookCross-sell a second product without cannibalising the plan the customer already pays forSecond-product offers valued on incremental margin, not on attach rate.
- PlaybookAdd next best action to journeys you already run in BrazePer-customer arbitration written into the canvases your team already operates.
- SolutionRetention DecisioningChoose the right intervention before churn, not after the score
- SolutionGrowth OptimizationMake every growth motion you already run perform better