The biggest mistake in win-back email campaigns is being generic. "We miss you!" Subject line. "Come back, here's a discount." Body copy. "Reactivate now." Button. This approach performs at 2–3% conversion if you are lucky. The businesses achieving 8–15% conversion from their win-back campaigns are doing something fundamentally different: they are using the cancellation reason data they captured at the moment the customer left to send a personalised, contextually relevant message.

This guide provides complete win-back email examples for each cancellation reason, the copy principles that drive conversion, the technical requirements that make reactivation frictionless, and the benchmarks to tell you whether your campaign is working.

What you will learn

  • Full win-back email examples for each cancellation reason
  • The 30/90/180-day timing strategy with conversion benchmarks
  • Copy principles that separate 3% conversion from 12% conversion
  • The one-click reactivation mechanic that doubles completions
  • The involuntary churn sequence — completely different from standard win-back
  • How to measure win-back performance

📋 In this article

Why personalisation is the difference between 3% and 12%

A churned customer who receives a generic "we miss you" email has no specific reason to return. They left for a reason. That reason is still true. A discount does not address why they left — it just makes the product cheaper. If the reason was a missing feature, the feature is still missing. If the reason was insufficient usage, nothing has changed to make them more likely to actually use it this time.

Personalisation works because it shows the customer you know why they left and have a specific response to it. "You told us you needed Zapier integration — we shipped it last month" is a fundamentally different proposition from "we miss you, here's 30% off." The first is a genuine reason to return. The second is a financial inducement to try again without addressing the underlying problem.

Cancellation reason Generic campaign conversion Personalised campaign conversion Difference
Too expensive3–5%9–15%3x
Missing a feature (shipped)2–4%15–25%5–7x
Not using it enough2–4%6–12%3x
Involuntary (payment failure)5–8%18–30%3–4x

Timing and performance benchmarks

Win-back campaign performance decays predictably over time. The 30-day email hits the highest-converting window. The customer has been gone long enough to notice the absence — missed workflows, friction with alternatives, unresolved problems — but not so long they have fully adapted to life without the product.

Timing Open rate Conversion (personalised) Offer level Email length
30 days28–35%8–15%Moderate — 20–25% off3–4 short paragraphs
90 days20–28%4–9%Stronger — 35–40% off2–3 short paragraphs
180 days15–22%2–5%Best offer — 40–50% or free month2 paragraphs max

Win-back email examples by cancellation reason

Too expensive: lead with the financial offer

Subject: You told us cost was the issue — here is a new offer

Hi [Name],

It has been 30 days since you cancelled. You mentioned the price was the issue.

We want you back. Here is a direct offer: 30% off your first two months — applied automatically when you click below. No code needed.

If the product delivered value before, the math changes at this price. If something else has changed, reply and tell me — I read everything.

Come back with 30% off →

This offer expires in 7 days.

Why this works: It references the specific reason immediately (no guessing), leads with the offer in the first sentence, makes it concrete (30%, not "a significant discount"), removes friction (applied automatically, no code), and adds a genuine human element (reply and tell me — not a bot response).

Missing a feature that shipped: the highest-converting scenario

Subject: The feature you were waiting for just shipped

Hi [Name],

You cancelled on March 15 because [specific feature] wasn't available. We shipped it last week.

Here is what it does: [one sentence description]. Here is a short demo: [link or GIF].

Come back and try it free for a month — no payment required to restart.

Start your free month →

✅ This is your highest-converting win-back scenario

A customer who left because of a missing feature and receives a personalised email the month it ships converts at 15–25% — 3–7x higher than a generic campaign. This requires capturing the specific feature text at cancellation through a cancel flow with a required text field for the "missing feature" reason. Without that data, you cannot write this email.

Not using it enough: address the engagement barrier

Subject: 5 minutes to your first real result — we made it easier

Hi [Name],

You cancelled because you weren't using [Product] enough to justify the cost. That's a fair call.

Since you left, we have simplified the onboarding process significantly. Most customers now reach their first meaningful result in under 5 minutes. Here is a specific thing you could do in that time: [concrete example relevant to their use case].

Come back for a month free. If it still doesn't fit your workflow, no hard feelings.

Try one more month free →

Why this works: It acknowledges the customer was right without being defensive. It offers evidence of change (simplified onboarding). It provides a concrete example of what success looks like. The free month reduces the risk of trying again — there is no financial downside to giving it another shot.

Switching to a competitor: acknowledge honestly

Subject: How did the switch go? Here is what has changed since March

Hi [Name],

You moved to [competitor] three months ago. We genuinely hope it's working out.

If it isn't — or if you're still evaluating — here is what has changed at [Product] since you left: [3 specific bullet points of real improvements]. And here is our most aggressive offer to make trying again a no-brainer: 40% off for two months.

Come back with 40% off →

If you're happy where you are, no worries — you won't hear from us again.

Why this works: The non-defensive opening acknowledges the switch without guilt. The "here is what changed" section gives a concrete reason to reconsider. The final line ("you won't hear from us again") is honest and reduces unsubscribe pressure — customers who see this often do not unsubscribe, they simply file it away for when circumstances change.

The involuntary churn sequence: completely different copy

Customers who churned due to payment failure should never receive a standard win-back campaign. The framing is wrong. They did not make a decision to leave. Treating them like a churned customer who needs to be persuaded to return misses the point entirely.

Subject: Your account was paused — your data is still here

Hi [Name],

Your [Product] account was paused on April 3 due to a payment issue. Your data, settings, and history are exactly where you left them.

Click below to restore access. It takes about 30 seconds.

Restore access →

No "we miss you." No discount. No persuasion copy. The message acknowledges what happened, reassures about data, and provides a single frictionless path back. Reactivation rates for this sequence run 18–30% — 3–4x higher than standard win-back campaigns for the same reason: there is no resistance to overcome, just a frictionless path to provide.

Copy principles that drive conversion

Name the date they left. "It has been 30 days since you cancelled on March 15" performs better than "It has been a while." The specific date signals that this is not mass email. It communicates that you actually know when they left and care about it.

Specific offer, not vague language. "30% off your first two months — applied automatically" outperforms "a significant discount." Vagueness creates uncertainty. Specificity creates actionability. Never make the customer wonder what the offer actually is.

Real product changes, not marketing copy. "We shipped Zapier integration, bulk CSV export, and a mobile app" outperforms "we've been busy improving the product." Specific shipped features give the customer a reason to believe this time might be different.

Short gets shorter over time. The 30-day email can be three to four paragraphs. The 90-day should be two to three. The 180-day should be two paragraphs maximum. By the time you are sending the 180-day email to a customer who has not responded to two previous outreach attempts, they do not need more persuasion — they need your best offer with the least possible friction.

One CTA per email, always. Never put "Come back with 30% off" and "Schedule a call" and "Read our changelog" in the same email. Multiple CTAs create decision paralysis. One clear action, prominent placement, no competing links.

The one-click reactivation requirement

Every win-back email — regardless of reason, timing, or offer — must contain a link that reactivates the subscription in one click with the offer already applied. Not a link to your login page. Not a link to your pricing page. Not a "use code COMEBACK30" instruction.

A tokenised URL opens a Stripe checkout session with the discount pre-applied, the customer's previous payment method pre-loaded, and a single confirmation step before the subscription restores. The entire process takes approximately 20 seconds from clicking the email link to seeing the confirmation screen.

Every additional step beyond that 20-second path reduces completions by 15–25%. On a 100-click win-back campaign, the difference between a one-click reactivation and a three-step login-then-apply-code process is 40–60 fewer reactivations from the same number of emails sent.

Automate personalised win-back campaigns

Retainly sends 30/90/180-day sequences automatically, personalised by cancellation reason, with one-click reactivation links built in. Free to start.

Start for free →

Frequently asked questions

What should a win-back email include?

A win-back email should include: a specific reference to when the customer left and why (if you have the cancellation reason), a relevant offer or reason to return tailored to that reason, specific product changes since they left, and a single prominent CTA that triggers one-click reactivation with the offer pre-applied. Generic "we miss you" copy without personalisation typically converts at 2–3%.

When should I send win-back emails?

Send three emails: at 30 days (highest conversion, moderate offer), 90 days (stronger offer, mention what changed), and 180 days (your best offer, shortest copy). After 180 days, stop — conversion rates drop below 2% and continued emailing risks spam complaints. Personalised campaigns at 30 days consistently achieve 8–15% conversion.

How much discount should I offer in win-back emails?

Escalate across the sequence: 20–25% off at 30 days, 35–40% at 90 days, 40–50% or one month free at 180 days. For "missing feature" win-backs where the feature shipped, a free month is often more compelling than a discount — it removes risk without communicating desperation. Avoid discounting for involuntary churners — they do not need financial incentive, they need a frictionless path back.

What is the average win-back email conversion rate?

For personalised campaigns with targeted offers: the 30-day email achieves 8–15%, the 90-day achieves 4–9%, and the 180-day achieves 2–5%. Generic campaigns with flat "we miss you" copy typically see 2–4% regardless of timing. The gap between generic and personalised widens most dramatically for customers who left because of a specific missing feature that has since shipped.

Should involuntary churners get win-back emails?

Yes — but a completely different sequence. Customers who churned due to payment failure never decided to leave. Their win-back email should not persuade them to return; it should make returning frictionless. No discount needed. The copy acknowledges the billing issue, reassures them their data is intact, and provides a one-click reactivation link. Reactivation rates for this sequence are typically 18–30% — among the highest of any win-back scenario.

Measuring win-back campaign performance

Three metrics give you the full picture of whether your win-back email campaigns are working:

Metric How to calculate Target Red flag
Reactivation rateReactivations ÷ churned cohort5–15% overall< 2% — sequence not personalised
Re-churn rate at 90 daysRe-churned ÷ reactivated< 35%> 60% — offer not addressing root cause
Reactivation rate by reasonPer cancellation reason cohortVaries — "feature shipped" should be highestNo variation = not personalised by reason

Win-back email campaigns are for voluntary churners — customers who chose to cancel. Reactivation emails are for involuntary churners — customers whose payment failed. These are different sequences with different copy, different tone, and different technical mechanics.

Win-back email: "You cancelled three months ago. Here's what changed, and here's our best offer to come back." Requires persuasion. Requires an offer. Requires building a case for returning.

Reactivation email: "Your account was paused due to a payment issue. Everything is intact. One click to restore access." Requires no persuasion. Requires no offer. Requires only a frictionless path back. Sends as part of your involuntary churn recovery sequence, not your win-back campaign.

Automating the win-back email sequence

A manually sent win-back email campaign is not sustainable at scale. The 30/90/180-day sequence needs to be automated — triggered by the customer.subscription.deleted Stripe webhook event — and personalised by cancellation reason. Here is the technical architecture:

// Triggered by customer.subscription.deleted webhook
if (event.type === 'customer.subscription.deleted') {
  const reason = await getCancellationReason(customerId); // from cancel flow data
  const isInvoluntary = await wasPaymentFailure(customerId);

  if (isInvoluntary) {
    // Different sequence — reactivation, not win-back
    await scheduleReactivationEmail(customerId, 3); // 3 days
    return;
  }

  // Voluntary churn — personalised win-back sequence
  await scheduleWinBackEmail(customerId, reason, 30);  // day 30
  await scheduleWinBackEmail(customerId, reason, 90);  // day 90
  await scheduleWinBackEmail(customerId, reason, 180); // day 180
}

Win-back offer mechanics: how the reactivation link works

Every win-back email must contain a reactivation link that creates a new subscription with the discount pre-applied in one click. The mechanics using Stripe:

When a customer cancels, store their previous plan details — the price ID, the billing interval, and any active coupon. When the win-back email sends at 30 days, generate a Stripe Checkout session with the pre-applied coupon and the customer's previous payment method pre-selected. The URL of that checkout session is the reactivation link in the email.

When the customer clicks and completes the two-step checkout (confirm payment method, confirm), they are resubscribed with the discount active and their previous data intact. The entire process takes approximately 20 seconds from email click to active subscription.

For technical implementation details on building one-click reactivation links with Stripe Checkout sessions, see the win-back email campaign guide.

Building your win-back email calendar

The practical implementation of a 30/90/180-day win-back email sequence requires knowing how it maps to calendar time for different customer cohorts. If you had 40 customers cancel in April, your win-back sequence for that cohort looks like this:

Cohort Email 1 (30 days) Email 2 (90 days) Email 3 (180 days)
April churnersLate MayLate JulyLate October
January churnersLate FebruaryLate AprilLate July

With multiple monthly cohorts each in their own 30/90/180-day sequence, the email volume builds up over time. By month 6 of running win-back campaigns, you are sending to three simultaneous cohorts in parallel — the current month's 30-day emails, the cohort from 3 months ago at 90 days, and the cohort from 6 months ago at 180 days. This is why automation is not optional for win-back campaigns at any meaningful scale. Manual management of multiple cohorts in different sequence stages is not sustainable beyond a handful of customers.


Related: Win-Back Email Campaign Guide · Cancel Flow Best Practices · Involuntary Churn Guide · How to Reduce SaaS Churn