Retention & churn prevention specialist
Quick answer
- 01What is it?
- Reduce churn through cancel flows, dunning, health scoring, win-back. Use when churn, cancel flow, dunning, win-back, failed payment, retention rate, save offer. The value is a focused slice of go-to-market work judgment, useful when several similar skills cover the same ground.
- 02Inputs
- Context for go-to-market work: your goals, audience, constraints, and any source material the skill asks for.
- 03Output
- A ready-to-use result for go-to-market work: the analysis, copy, or recommendations the agent produces.
Add this skill
Install as a package
Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.
$ npx skills add gnoviawan/agentic-marketing --skill bmad-agent-marketing-retentionSkill instructions
The instruction file for this skill. The skill also includes other files you need to install to use it.
Retention & Churn Prevention Specialist
Overview
Prevents customer churn through cancel flow design, payment recovery sequences, health scoring systems, and win-back campaigns. Works with subscription businesses to reduce voluntary and involuntary churn, recover failed revenue, and re-engage churned customers. Grounds every intervention in actual customer behavior signals and the brand's SOSTAC plan.
Identity
A senior retention strategist with deep expertise in cancel flow design, proactive health scoring, payment recovery, dunning sequences, and win-back campaigns for subscription businesses.
Communication Style
Direct and data-driven, prioritizing diagnosis before prescription. Avoids vague advice -- delivers specific email sequences, decision trees, health score models, and implementation-ready recommendations.
Example interaction:
"Before I design the cancel flow, I need to understand your churn rate and dominant churn type. Involuntary churn (payment failures) is 30-50% of SaaS churn and has the highest recovery rate -- we should address that first. Do you have exit survey data or cohort analysis available?"
Principles
- Diagnose before prescribing -- understand churn type and root cause first
- Involuntary churn first -- payment failures are most recoverable, address them before voluntary churn
- Offer precision matters -- match interventions exactly to stated cancel reasons
- No dark patterns -- cancel flows are customer service, not manipulation
- Data retention preserves reactivation -- always keep customer data for 30-90 days post-cancellation
On Activation
Load available config from {project-root}/_bmad/config.yaml and {project-root}/_bmad/config.user.yaml if present. Resolve and apply throughout the session.
Greet the user appropriately and offer to show available capabilities.
Capabilities
| Capability | Route |
|---|---|
| Churn Diagnosis | Load ./references/churn-diagnosis.md |
| Cancel Flow Design | Load ./references/cancel-flow-design.md |
| Proactive Retention | Load ./references/proactive-retention.md |
| Payment Recovery & Dunning | Load ./references/payment-recovery.md |
| Win-Back Campaigns | Load ./references/win-back-campaigns.md |
| Metrics & Benchmarks | Load ./references/benchmarks.md |
| Research Mode | Load ./references/research-playbook.md |
| Shared Patterns | Load ./references/shared-patterns.md |
| Cancel Flow Templates | Load ./references/cancel-flow-templates.md |
Path Resolution
Campaign mode (named campaign): Save to ./brands/{brand-slug}/campaigns/{type}-{campaign-slug}/retention/
Standalone mode (evergreen/independent): Save to ./brands/{brand-slug}/operations/retention/
Legacy fallback (old structure): Save to ./brands/{brand-slug}/campaigns/retention/ and suggest migration.
If unsure, ask: "Is this part of a specific campaign, or standalone work?"
Reference Lookup Protocol
For cancel flow, dunning, win-back, or proactive retention copy:
- Read
./references/frameworks-index.csvto find the right file byretention_stageortags - Load only the specific file from
./references/frameworks/that matches the task
| Task | Load This File |
|---|---|
| Exit survey design | frameworks/exit-survey-copy.md |
| Cancel flow offer logic | frameworks/dynamic-offer-templates.md |
| Confirmation page copy | frameworks/cancel-confirmation-copy.md |
| Dunning emails | frameworks/dunning-email-sequence.md |
| Win-back emails | frameworks/win-back-email-sequence.md |
| Health score outreach | frameworks/proactive-retention-emails.md |
| Offer routing logic | frameworks/offer-decision-tree.md |
| Subject line selection | frameworks/subject-line-reference.md |
| Cancel flow A/B testing | frameworks/cancel-flow-ab-testing.md |
Escalation Signals
| Signal Detected | Escalate To |
|---|---|
| Pricing/positioning mismatch | marketing-pricing |
| Traffic source quality issue | marketing-paid-ads |
| Onboarding activation failure | marketing-cro |
| Email deliverability issues | marketing-email |
| Educational content gap | marketing-content |
Supporting file: references/benchmarks.md
Retention Benchmarks, Metrics, and Cohort Analysis
Detailed retention metrics, industry benchmarks, and cohort analysis methodology. Referenced from SKILL.md Sections 1.3, 6.1, and 6.2.
1. Cohort Retention Analysis
Run retention curves by signup cohort (monthly or quarterly). Key questions:
- Which cohorts have the steepest early drop-off? (Indicates onboarding failure)
- Which cohorts flatten out and retain long-term? (Indicates product-market fit segment)
- Is retention improving or worsening across recent cohorts? (Indicates product or go-to-market trends)
Present as a cohort retention table: rows = signup month, columns = months since signup (M0-M24), cells = % of original cohort still active.
Cohort Table Template
| Cohort | M0 | M1 | M2 | M3 | M6 | M12 | M18 | M24 |
|-----------|------|------|------|------|------|------|------|------|
| Jan 2025 | 100% | ?% | ?% | ?% | ?% | ?% | ?% | ?% |
| Feb 2025 | 100% | ?% | ?% | ?% | ?% | ?% | ?% | |
| Mar 2025 | 100% | ?% | ?% | ?% | ?% | ?% | | |
What to Look For
- Steep early drop-off (M0-M3): Onboarding failure. Customers are not reaching the aha moment. Fix activation before adding more customers.
- Gradual decline that never flattens: No product-market fit for the segment. Customers are not finding lasting value.
- Flattening curve after M3-M6: Healthy retention. Customers who survive the first 3-6 months tend to stay. Focus on getting more customers past that inflection point.
- Improving curves over time: Product or onboarding improvements are working. Keep investing.
- Worsening curves over time: Quality or onboarding regression. Investigate what changed.
Segmenting Cohorts
Always segment cohort analysis by:
- Plan tier: Enterprise vs SMB churn behaves very differently
- Acquisition channel: Organic signups may retain differently from paid acquisition
- Activation status: Activated vs non-activated cohorts reveal the true impact of onboarding
- Geography: Different markets may have different retention patterns
2. Retention Dashboard Metrics
Track these metrics weekly or monthly depending on business size. Build a single retention dashboard that surfaces all key numbers in one view.
| Metric | Formula | Healthy Target | Alert Threshold |
|---|---|---|---|
| Monthly customer churn rate | Customers lost / Customers at start | Under 2% | Above 4% |
| Gross MRR churn rate | MRR lost / Starting MRR | Under 1.5% | Above 3% |
| Net Revenue Retention | (Start MRR + Expansion - Contraction - Churn) / Start MRR | Above 100% | Below 90% |
| Cancel flow impression rate | Customers seeing flow / Customers cancelling | 80%+ | Below 60% |
| Save rate | Customers saved / Customers who saw flow | 25-35% | Below 15% |
| Offer acceptance rate | Offers accepted / Offers shown | 15-25% | Below 10% |
| Dunning recovery rate | Payments recovered / Payments failed | 50-60% | Below 30% |
| Win-back rate (90d) | Reactivations / Total churned | 10-15% | Below 5% |
| MRR saved per month | Sum of MRR from saves + dunning recovery | Varies by plan pricing | Baseline from Month 1 |
| Health score distribution | % Green / Yellow / Red | 70%+ Green | Under 50% Green |
3. Industry Benchmarks by Business Type
| Business Type | Monthly Churn | Annual Churn | NRR Target |
|---|---|---|---|
| SMB SaaS | 2-5% | 22-46% | 90-100% |
| Mid-market SaaS | 1-2% | 12-22% | 100-115% |
| Enterprise SaaS | 0.5-1% | 6-11% | 110-140% |
| Consumer subscription | 5-8% | 46-64% | 80-95% |
| E-commerce subscription box | 6-10% | 54-70% | 80-90% |
Context note: These are averages. Best-in-class performers in each category beat these numbers significantly. Use them as a floor, not a ceiling.
4. Leading vs Lagging Indicators
Lagging indicators (tell you what happened -- use for reporting):
- Monthly churn rate
- MRR lost to churn
- Win-back rate
Leading indicators (tell you what is about to happen -- use for intervention):
- Health score distribution (% of accounts in Yellow/Red)
- Activation rate for new signups (leading indicator of future churn in 30-90 days)
- NPS score trends
- Failed payment volume
- Average days since last login across customer base
Build alerts on leading indicators. By the time lagging indicators move, churn has already happened.
5. Retention Reporting Cadence
| Report | Frequency | Audience | Content |
|---|---|---|---|
| Retention dashboard | Weekly | Retention team, CS | All metrics, health distribution, MRR saved |
| Churn analysis | Monthly | Leadership | Churn rate, reasons breakdown, cohort curves, actions taken |
| Dunning recovery report | Weekly | Finance, CS | Payments failed, recovery rate, outstanding balance |
| Cancel flow performance | Monthly | Product, CS | Impression rate, save rate, offer acceptance by type |
| Win-back campaign report | Monthly | Marketing | Emails sent, open/click rates, reactivations, MRR recovered |
Supporting file: references/cancel-flow-design.md
Cancel Flow Design Capability
A well-designed cancel flow saves 25-35% of customers who intend to cancel. It is not manipulation -- it is giving the customer information, options, and offers they may genuinely want before making a permanent decision.
Cancel Flow Architecture
Cancel button --> [Pause Gate] --> [Exit Survey (4-6 reasons)] --> [Dynamic Offer (reason-matched)]
--> Accept: confirm save, update billing/plan
--> Decline: [Confirmation Page] graceful exit (data export, community, support)
--> [Post-Cancel Sequence] win-back emails start
See ./frameworks/cancel-confirmation-copy.md for full confirmation page copy and post-cancel email.
See ./frameworks/offer-decision-tree.md for the offer decision tree.
Exit Survey Design
Principles:
- Show 4-6 options maximum. More than 6 creates survey fatigue and reduces data quality.
- Include "Other" with an optional text field as the final option.
- Do not make the survey mandatory -- if a customer skips it, let them cancel. Forcing engagement creates resentment.
- Make options honest and non-judgmental. Customers notice when options are designed to manipulate.
- Use the survey data. If you collect it and nothing changes, it is performative.
Recommended options (adapt copy to match brand voice):
| # | Reason Label | Data Use |
|---|---|---|
| 1 | It's too expensive | Trigger discount or pause offer |
| 2 | I'm not using it enough | Trigger usage coaching + pause offer |
| 3 | It's missing a feature I need | Trigger roadmap acknowledgment |
| 4 | I'm switching to a competitor | Trigger differentiation + comparison |
| 5 | I had a technical issue | Trigger immediate support escalation |
| 6 | Something else | Route to text field + general offer |
See ./frameworks/exit-survey-copy.md for exact microcopy for each option.
Dynamic Offer Logic
Match the intervention precisely to the stated reason. Generic offers applied to all cancellation reasons perform significantly worse than targeted offers.
| Reason | Primary Offer | Secondary Option |
|---|---|---|
| Too expensive | 20-30% discount for 3 months or a permanent plan downgrade | Pause for 1-3 months |
| Not using it enough | Free 1:1 onboarding session + pause option | Usage tips + resource hub |
| Missing feature | Acknowledge the gap, share roadmap timeline if honest, offer workaround | Pause until feature ships |
| Switching to competitor | Direct feature comparison, differentiation statement, case study | One-month free to reconsider |
| Technical issue | Immediate escalation to senior support + account credit | Free extension while issue resolves |
| Other | Manager callback offer or open-ended "What would keep you?" | General discount or pause |
Offer hierarchy by value:
- Pause (costs nothing, preserves the relationship, buys time)
- Downgrade (reduces revenue but retains customer)
- Time-limited discount (3-month incentive with full price resuming)
- Free extension (1 month free, delays cancel 30 days)
- Feature access (unlock higher plan feature at current price)
Critical rule: Show the single best-matched offer for the stated reason rather than all offers at once -- multiple simultaneous offers reduce acceptance rates and train customers to hunt for deals. Exception: if the cancel reason is ambiguous, a choice of two options (e.g., pause vs. downgrade) can outperform a single guess.
Save Rate Benchmarks
| Metric | Target | Best-in-Class |
|---|---|---|
| Cancel flow impression rate | 80%+ of cancellers see the flow | 90%+ |
| Survey completion rate | 60-70% of impressions | 75%+ |
| Save rate (all methods) | 25-35% of intending cancellers | 35-45% |
| Offer acceptance rate | 15-25% of offer impressions | 25-35% |
| Pause adoption rate (where offered) | 10-20% | 20-30% |
Cancel Flow Tools
| Tool | Best For | Pricing Signal |
|---|---|---|
| Churnkey | SaaS, full cancel flow + dunning, smart offers | Mid-market |
| ProsperStack | SaaS, high customisation, A/B testing | Mid-market |
| Chargebee Retention | Chargebee billing users, native integration | Enterprise |
| Custom-built | Full control, requires engineering resources | Any |
| Stripe Portal | Basic only, no dynamic offer logic | Free with Stripe |
For brands on Stripe without a dedicated cancel flow tool, Churnkey integrates directly and adds the offer logic layer. For brands on Chargebee or Recurly, use their native retention modules first.
Cancel Flow Copy and UX Principles
- Never use dark patterns. Do not hide the cancel button, require a phone call, or use guilt-laden language ("You'll lose everything!"). These destroy trust and generate public complaints.
- Tone: helpful, not desperate. The cancel flow is a customer service interaction, not a negotiation.
- Mobile-first. A significant share of cancellations happen on mobile. Test the full flow on a phone.
- One screen per step. Do not combine the exit survey and the offer on the same screen.
- Respect the decision. If they decline the offer, complete the cancellation immediately. Do not add additional friction screens.
Deliverable
Cancel Flow Design: cancel-flow-{YYYY-MM-DD}.md
- Architecture diagram
- Exit survey copy
- Offer decision tree
- Confirmation page copy
- Tool recommendation
Supporting file: references/cancel-flow-templates.md
Cancel Flow Templates & Copy Library
Production-ready copy for cancel flows, dunning sequences, and win-back campaigns. All copy uses
[Brand],[Product],[Name], and[Plan]as placeholders. Adapt tone, voice, and specifics to match brand-context.md before using.
1. Exit Survey Copy
Survey Header Copy
Primary headline options (choose one, A/B test):
- "Before you go -- one quick question"
- "Help us understand (it takes 30 seconds)"
- "We're sorry to see you go. What happened?"
- "Your feedback helps us improve for everyone"
Subheading (use beneath headline):
- "Select the main reason you're cancelling. This helps us improve [Product] for everyone."
- "Tell us why so we can do better. Your answer will determine what we can offer you."
Survey Option Microcopy (6 Options)
Option 1: Too expensive
- Label: "It's too expensive"
- Microcopy below label: "The price doesn't match the value I'm getting right now."
- Icon suggestion: currency symbol or price tag
Option 2: Not using it enough
- Label: "I'm not using it enough"
- Microcopy below label: "I don't have the time or need to get full value from [Product]."
- Icon suggestion: clock or calendar
Option 3: Missing a feature
- Label: "It's missing something I need"
- Microcopy below label: "There's a specific feature or integration I can't work without."
- Icon suggestion: puzzle piece or feature block
Option 4: Switching to a competitor
- Label: "I'm switching to another tool"
- Microcopy below label: "I found a different solution that better fits my needs."
- Icon suggestion: arrow pointing right or comparison icon
Option 5: Technical issue or bad experience
- Label: "I had a technical problem"
- Microcopy below label: "I experienced a bug, outage, or issue that wasn't resolved."
- Icon suggestion: warning triangle or wrench
Option 6: Other
- Label: "Something else"
- Microcopy below label: "My reason isn't listed above."
- Follow-up text field placeholder: "Tell us more (optional) -- your feedback goes directly to our team."
- Icon suggestion: speech bubble or question mark
Survey Footer Copy
Below the option list: "Not sure? [Skip and cancel directly] -- no hard feelings." (Link opens confirmation screen directly, bypasses offer)
Privacy note (optional, builds trust): "Your response is shared only with our product team to improve [Product]. We won't use it for marketing."
2. Dynamic Offer Templates by Cancellation Reason
Offer Screen Wrapper Copy
Header above the offer card (after survey selection):
- "Wait -- before you go, we have something for you."
- "Based on what you told us, here's what we can do."
- "We'd like to make this right."
Decline link below offer (always present):
- "No thanks, I still want to cancel" (styled as plain text link, not a button)
Scenario 1: "It's too expensive"
Offer type: Discount (20-30% for 3 months) or Plan Downgrade
Offer card headline options:
- "Stay for [X]% less for the next 3 months"
- "We can reduce your bill by [X]% right now"
- "What if [Product] cost less?"
Offer card body copy:
We get it -- budget matters.
Here's what we can do: drop your [Plan] price by [X]% for the
next 3 months, then return to your regular rate.
No changes to your plan. No hidden conditions. Just a lower bill
while you see the full value [Product] can deliver.
[Apply [X]% Discount -- Keep My Account]
Downgrade alternative (below the main offer): "Or, would a smaller plan at $[price]/month work better? [See all plans]"
Pause alternative (below the main offer): "Not ready to commit? [Pause your account for 1-3 months] instead of cancelling."
Acceptance confirmation copy: "Done. Your new rate of $[price]/month applies immediately. Your next invoice will reflect this discount. See you on the inside."
Scenario 2: "Not using it enough"
Offer type: Free 1:1 onboarding session + Pause option
Offer card headline options:
- "Let's get [Product] actually working for you -- on us"
- "30 minutes with our team could change everything"
- "You're not stuck. We can help."
Offer card body copy:
Not using [Product] enough usually means one thing: you haven't
found your "aha moment" yet. That's on us.
Our team will personally walk through your account, understand
your specific goal, and set up [Product] to get you results --
for free, in one 30-minute session.
Customers who complete a setup session retain 3x longer and see
results within their first week.
[Book My Free Setup Session]
Pause alternative:
Not ready for a call right now?
Pause your account for up to 3 months instead. Your data stays
safe, your plan stays active, and you can unpause any time.
No charge while paused.
[Pause My Account Instead]
Acceptance confirmation (session booked): "Your setup session is confirmed. You'll receive a calendar invite shortly. We're looking forward to helping you get real results from [Product]."
Acceptance confirmation (pause selected): "Your account is paused. We won't charge you while you're paused. Resume any time from your account settings -- your data will be right where you left it."
Scenario 3: "Missing a feature I need"
Offer type: Roadmap acknowledgment + Workaround + Pause
Offer card headline options:
- "Tell us what you need -- it matters"
- "That feature might be closer than you think"
- "We're building it. Here's where we are."
Offer card body copy (roadmap version -- use when feature is planned):
We hear you -- [feature] is something our team is actively
working on.
Current status: [On roadmap / In development / Launching in Q{X}]
If you can wait, we'd love to keep your account active. In the
meantime, here's a workaround that some customers use to
approximate [feature]: [brief workaround description or link].
Would a 2-month pause give us time to ship this for you?
[Pause My Account for 2 Months] [View the Roadmap]
Offer card body copy (feature not yet planned -- honest version):
We don't have [feature] yet, and we want to be honest with you.
Your feedback has been sent directly to our product team. Features
that reach a certain threshold of requests get prioritised. Yours
counts.
If you want to stay and be notified the moment this ships,
we'll email you immediately. Otherwise, we understand.
[Stay and Notify Me When It Ships]
Acceptance confirmation: "You've been added to the notify list for [feature]. We'll email you the moment it's available. Thank you for your patience -- feedback like yours shapes our roadmap."
Scenario 4: "Switching to another tool"
Offer type: Direct comparison + Differentiation + 1-month free trial extension
Offer card headline options:
- "Before you switch -- a quick comparison"
- "We'd like the chance to show you what makes [Product] different"
- "Switching costs are real. Let's make sure it's worth it."
Offer card body copy:
Switching tools is a significant decision -- time, migration,
retraining, and integration work.
Before you go, here's how [Product] compares to the most common
alternatives our customers consider:
[Product] vs [Competitor A]
[Differentiator 1] [Gap or tradeoff]
[Differentiator 2] [Gap or tradeoff]
[Differentiator 3] [Gap or tradeoff]
If you've already decided, we respect that. But if you're still
evaluating, take one more month on us -- free -- to compare
fairly.
[Try 1 More Month Free] [Read Full Comparison]
Acceptance confirmation: "Your account has been extended by one month at no charge. We hope the extra time helps you make the best decision for your team -- whatever that turns out to be."
Scenario 5: "I had a technical problem"
Offer type: Immediate escalation to senior support + Account credit
Offer card headline options:
- "Let us fix this -- right now"
- "This should never have happened. We want to make it right."
- "Our senior team will personally resolve this today"
Offer card body copy:
A technical problem is the worst reason to lose you as a
customer -- because it's fixable.
Here's what happens next:
1. A senior member of our engineering team will review your
account within 2 hours.
2. We'll contact you directly at [email] with a resolution.
3. Your account will be credited for [X days/amount] for the
disruption.
You don't need to do anything except give us the chance to fix it.
[Yes, Please Fix This]
Immediate action on acceptance: Trigger internal alert to CS/engineering immediately. Do not route through standard support queue. Personal response within 2 hours is the expectation set.
Acceptance confirmation: "Our senior team has been notified and will reach out within 2 hours. In the meantime, we've applied a [X]-day credit to your account. We're sorry this happened."
Scenario 6: "Something else" (open text)
Offer type: Manager callback + General discount or pause option
Offer card headline options:
- "Can we call you? We'd like to understand."
- "Let's talk -- your situation is unique"
- "A real conversation might help"
Offer card body copy:
Not everything fits into a list. Whatever's going on, we'd like
to understand before you go.
If you're open to it, request a quick call with one of our
senior team members -- someone with the authority to actually
help, not just read from a script.
If a call doesn't work, we can also offer you a [X]% discount
or a [1-3 month] pause while you sort things out.
[Request a Quick Call] [Get [X]% Off Instead] [Pause Instead]
3. Cancel Flow Confirmation Page Copy
This page renders after the customer either declines the offer or skips the cancel flow entirely. It should be graceful, informative, and leave the door open without being pushy.
Confirmation Page: Immediate Cancellation
Headline: "Your [Plan] subscription has been cancelled."
Body:
Your account will remain active until [date] -- the end of your
current billing period. No further charges will be made.
Here's what happens to your data:
- Your account data is safely stored for 90 days
- You can export everything from [Settings > Export]
- After 90 days, your data is permanently deleted
If you change your mind, reactivating is instant. Everything
will be exactly where you left it.
[Export My Data] [Visit Our Community] [Contact Support]
Footer (below main content): "Changed your mind? [Reactivate my account] -- no forms, no waiting."
Confirmation Page: Pause Confirmed
Headline: "Your account is paused until [resume date]."
Body:
No charges will be made while your account is paused.
Your data, settings, and history are safe and will be waiting
when you return.
Resuming is instant -- just log in and click Resume, or we'll
automatically resume on [resume date].
You'll receive a reminder email 7 days before your pause ends.
[Change Resume Date] [Resume Early] [Export My Data]
Post-Cancellation Email (Sent Immediately After Cancel Flow)
Subject line options:
- "Your cancellation is confirmed, [Name]"
- "Account cancelled -- what you need to know"
- "We've processed your cancellation"
Email body:
Hi [Name],
Your [Brand] [Plan] subscription has been cancelled, effective [date].
A few things to know:
Access: Your account stays active until [billing period end date].
Your data: Safely stored for 90 days from today. Export any
time at [Settings > Export].
Reactivate: If you change your mind, your account reactivates
instantly with all your data intact. Just go to [link].
We're sorry to see you go. If there's anything we could have
done differently, reply to this email -- it goes to a real person
on our team who reads every response.
[The Brand] team
[Name of a real team member]
P.S. Your data export link: [direct link]
4. Full Dunning Email Sequence (6 Emails)
Email 1: Day 0 -- First Payment Failure (Soft, Helpful)
Subject line options:
- "Payment issue with your [Brand] account"
- "Quick heads-up: we couldn't process your payment"
- "Action needed: update your payment method"
Preview text:
- "Your account is fine -- let's get this sorted quickly."
- "Takes 30 seconds to fix."
Body:
Hi [Name],
We tried to process your [Plan] subscription payment today, but
something didn't go through.
This happens -- cards expire, banks flag international charges,
and limits reset. It's usually a quick fix.
Update your payment method here:
[Update Payment Details -- big, clear button]
Your account is fully active while we sort this out. If you
have questions, reply to this email or chat with us at [link].
[Brand] billing team
Tone note: Do not use the word "failed" or "declined" in email 1. Use "couldn't process" or "didn't go through." Softer language reduces defensive reactions and increases click-through.
Email 2: Day 1 -- Friendly Follow-Up
Subject line options:
- "Reminder: your [Brand] payment needs updating"
- "[Name], one more thing about your payment"
- "Still having trouble with your payment?"
Preview text:
- "We haven't been able to reach you -- let's fix this before it affects your account."
- "Your account is still active -- update takes 30 seconds."
Body:
Hi [Name],
We sent you a note yesterday about a payment issue on your
[Brand] [Plan] account. We wanted to follow up in case it
got buried.
Your account is still fully active. Updating your payment
details takes about 30 seconds.
[Update My Payment Method]
If you want to use a different card or switch payment methods,
you can do that here too: [link to billing portal]
Questions? We're here: [support email / chat link]
[Brand] billing team
Email 3: Day 3 -- Direct Link, Slightly More Urgent
Subject line options:
- "Your [Brand] payment is still outstanding"
- "Account at risk: payment update needed"
- "[Name] -- we really need to sort your payment out"
Preview text:
- "Your account is active but we need to hear from you."
- "Two more days and your access may be affected."
Body:
Hi [Name],
We've tried reaching you about a payment issue on your [Brand]
account -- we want to make sure you don't lose access.
Here's the direct link to update your payment:
[Direct billing portal link]
What happens if you don't update:
- Day 7: In-app notice about account status
- Day 14: Access may become limited
- Day 21: Account may be paused or cancelled
We'd rather sort this now while your account is fully active.
If you're having difficulties with payment or want to talk
through your options, reply to this email and a real person
will respond within a few hours.
[Update Payment Now]
[Brand] billing team
Email 4: Day 7 -- Urgent, Account at Risk
Subject line options:
- "Urgent: your [Brand] account is at risk"
- "Your account may be suspended soon, [Name]"
- "Last week to save your [Brand] account"
Preview text:
- "Don't lose your data and progress -- takes 30 seconds to fix."
- "7 days until your account is affected."
Body:
Hi [Name],
Your [Brand] payment has been outstanding for 7 days. We need
to hear from you today to keep your account fully active.
What's at risk:
- [X] projects / [X] integrations / [X] team members
- [X] months of data and history
- Your current plan pricing (reactivating after cancellation
means signing up at current rates)
Update your payment now to avoid any disruption:
[Update Payment -- prominent button]
Can't update right now? Reply to this email and tell us what's
happening. If you need a few extra days, we can arrange that.
We'd rather work with you than lose you.
This is the point where we'd also pick up the phone for accounts
above [threshold] MRR. If that's you, expect a call from
[Name] at [Brand] today.
[Brand] billing team
[Direct phone number if applicable]
High-value accounts: For accounts above $500 MRR, add a personal PS: "P.S. [Name] from our account team is going to try you on [phone number] today. We want to help sort this personally."
Email 5: Day 14 -- Final Warning Before Downgrade
Subject line options:
- "Final notice: [Brand] account action required"
- "Your [Brand] account will be affected in 7 days"
- "[Name], we need your decision"
Preview text:
- "One week left before your account changes. This is the last reminder."
Body:
Hi [Name],
This is our final payment reminder before your [Brand] account
is automatically affected.
In 7 days (on [date]):
- Your account will be moved to a limited/read-only mode
- You will not be able to [core action] until payment is resolved
- Your data will remain safe and accessible for 90 days
This is genuinely our last automated email about this.
If you want to keep your account, here's the link:
[Resolve Payment Now]
If you've decided to move on, no action is required -- your
account will transition automatically on [date] and you'll
receive a confirmation.
If there's a reason we don't know about that's making this
difficult -- financial hardship, billing dispute, a technical
issue -- please just reply. We handle these situations
individually and there may be options we haven't offered yet.
[Brand] billing team
Email 6: Day 21 -- Account Lapsed / Reactivation Offer
Subject line options:
- "Your [Brand] account has been paused"
- "Your account is waiting for you, [Name]"
- "[Brand] -- reactivate any time, your data is safe"
Preview text:
- "Your data is safe for 90 days. Reactivating takes 30 seconds."
Body:
Hi [Name],
Your [Brand] [Plan] account has been paused due to an
unresolved payment issue.
Your data is safe. Everything -- your [projects / settings /
history] -- is stored securely and will be there when you return.
To reactivate, just update your payment method:
[Reactivate My Account]
Your data will be available for 90 days from today ([date]).
After that, it will be permanently deleted.
If you meant to cancel and this is fine, you don't need to
do anything. You'll receive one final email confirming
permanent deletion 14 days before it happens.
If the pause was accidental or things have changed, we'd love
to have you back. Reactivation is instant.
[Brand] billing team
P.S. If you're coming back, your original plan pricing is
preserved for the next 30 days. After that, you'll sign up
at current rates.
5. Win-Back Email Sequence (3 Emails)
Email 1: 7-14 Days Post-Cancel -- Warm Check-In
Timing note: Send 7 days post-cancel for monthly plans. 14 days for annual or higher-value plans. Do not send sooner -- it feels desperate.
Subject line options:
- "We've been thinking, [Name]"
- "A note from [Brand] -- no pressure"
- "How's it going since you left, [Name]?"
- "[Name], it's been [X] days"
Preview text:
- "No pitch. Just checking in."
- "Things have changed since you left."
Body:
Hi [Name],
It's been [X] days since you cancelled your [Brand] account.
We hope whatever you switched to is working out for you.
We're not going to try to pressure you back -- if your needs
have changed, we respect that.
But we did want to share a couple of things that have happened
at [Brand] since you left that might be relevant:
- [Recent feature or improvement #1]
- [Recent feature or improvement #2]
- [Customer win, stat, or case study that speaks to their
use case]
If your situation changes, or if you just want to take another
look at where [Product] has evolved, you can reactivate your
account any time at [link]. Your data is still there.
No pressure, no pitch. Just wanted you to know the door is open.
[Name from the team]
[Brand]
P.S. If there's anything we could have done differently when
you were a customer, I'd genuinely appreciate hearing it.
Reply to this email -- I read every response.
Email 2: 21-30 Days Post-Cancel -- Value Proof + Offer
Subject line options:
- "A special offer to welcome you back, [Name]"
- "[Name], here's what [Brand] customers achieved last month"
- "We'd like you to give [Brand] another shot"
- "Something for you, if you're open to it"
Preview text:
- "Your old account and all your data are still there."
- "No setup required. Reactivate in 30 seconds."
Body:
Hi [Name],
[Brand] has changed a lot in the past [X] weeks. Here's what
customers in your situation have been achieving:
"[Customer quote or specific result]"
-- [Customer name, company]
"[Second customer quote or result]"
-- [Customer name, company]
We'd love to show you what's possible for [their company/use case].
Here's our offer: come back for [X months] at [X]% off your
original plan, with no commitment beyond the offer period.
[Redeem Offer -- Rejoin at [X]% Off]
This offer expires on [date]. After that, you'd sign up at
standard pricing.
If the timing still isn't right, no worries -- but if you're
even a little curious, this is the moment.
[Name from the team]
[Brand]
Offer placement note: Do not lead with the offer in the subject line. Lead with curiosity or social proof. Save the offer reveal for after you've reminded them of the value.
Email 3: 45-60 Days Post-Cancel -- Final Outreach / News Angle
Subject line options:
- "One last thing before we stop reaching out, [Name]"
- "[Brand] update you might want to know about"
- "[Feature they wanted] just launched -- thought you should know"
- "We're wrapping up our win-back outreach, [Name]"
Preview text:
- "After this, we'll leave you alone. But we wanted you to see this first."
- "Your data is safe for [X] more days."
Body (Feature launch version -- use when they churned for "missing feature"):
Hi [Name],
Quick note -- [feature name] just launched in [Brand].
You mentioned this was something you needed when you cancelled.
We built it. Here's what it does: [2-3 sentence description
with specific capabilities].
If this changes things for you, your account can be reactivated
instantly -- all your data is still there: [Reactivate Now]
We're wrapping up our outreach after this email, so if you'd
prefer we stop messaging you, just click here and we'll remove
you from all future win-back communications: [Unsubscribe link]
Either way, we hope things are going well.
[Brand] team
Body (Standard final outreach -- use for all other scenarios):
Hi [Name],
This is the last email we'll send about coming back to [Brand].
We don't want to be a brand that pesters people, so we're
wrapping up our outreach after this one.
Two things before we do:
1. Your [Brand] data will be permanently deleted on [date]
(90 days from your cancellation). If you want to export
it first, here's how: [export link]
2. If you ever want to come back, you can. Standard pricing
applies, but your reactivation will be instant.
Thank you for being a [Brand] customer. We hope things are
going well, whatever tools you're using now.
[Brand] team
P.S. If there's anything we could have done better, we're
still listening: [feedback link or reply to email]
6. Proactive Retention Emails (Health Score Interventions)
Yellow Tier -- Check-In Email (Day 0 of intervention sequence)
Subject line options:
- "Checking in on your [Brand] experience, [Name]"
- "[Name] -- quick question about [Brand]"
- "Is [Brand] working for you?"
Body:
Hi [Name],
I'm [Name] from the [Brand] customer success team. I noticed
you haven't been in [Product] as much lately and wanted to
reach out personally.
Is everything okay? Are you hitting any friction or not finding
the value you expected?
I ask because customers often go quiet when they're stuck on
something -- and we'd rather help than have you quietly drift
away.
No agenda, no sales. Just a genuine check-in.
If 15 minutes would be useful, you can grab time here:
[Calendar link]
Or just reply to this email with what's going on. I'm a real
person and I'll respond personally.
[Name]
[Brand] Customer Success
Red Tier -- Urgent Outreach Email (High-risk accounts)
Subject line options:
- "[Name], I wanted to reach out personally"
- "Quick question about your [Brand] account"
- "Can I help with something at [Brand], [Name]?"
Body:
Hi [Name],
I'm [Name], [title] at [Brand]. I'm reaching out because I
can see your account has been less active recently, and I
wanted to make sure you're getting the value you signed up for.
Here's what I'd like to offer:
A 45-minute working session where we look at your specific
setup, understand your goals, and make sure [Product] is
actually solving the problems you hired it for.
No pitch. This is purely to make your account work better.
[I'd like to book a session -- calendar link]
If you'd rather not, that's okay too. But if there's something
we could fix or improve, I'd genuinely like to know.
[Name]
[Title], [Brand]
[Direct phone / email]
7. Quick Reference: Offer Decision Tree
Customer selects exit survey reason
|
+-- "Too expensive"
| |
| +--> Show: Discount offer (primary)
| +--> Secondary: Pause option
| +--> Downgrade option (if multi-plan)
|
+-- "Not using it enough"
| |
| +--> Show: 1:1 setup session offer
| +--> Secondary: Pause option
|
+-- "Missing a feature"
| |
| +--> Feature on roadmap? YES --> Show roadmap date + pause
| +--> Feature on roadmap? NO --> Honest response + notify option
|
+-- "Switching to competitor"
| |
| +--> Show: Comparison table + 1 month free
| +--> Link: Full comparison page
|
+-- "Technical issue"
| |
| +--> Show: Senior support escalation + credit
| +--> Trigger: Internal CS alert immediately
|
+-- "Other" (open text)
|
+--> Show: Callback request + general discount or pause
+--> Route: Text field response to CS team for follow-up
8. Subject Line Quick Reference
Dunning Subject Lines (by tone)
Soft / Helpful:
- "Payment issue with your [Brand] account"
- "Quick heads-up about your [Brand] payment"
- "We couldn't process your payment -- easy fix"
Direct / Informative:
- "Action needed: update your [Brand] payment"
- "Your [Brand] payment needs attention"
- "Payment update required for your [Brand] account"
Urgent (Days 7-14):
- "Your [Brand] account is at risk"
- "Final payment reminder -- [Brand]"
- "Important: your [Brand] account will be affected on [date]"
Win-Back Subject Lines (by angle)
Curiosity:
- "We've been thinking about you, [Name]"
- "Something changed at [Brand] you should know about"
- "Before we stop messaging you -- one more thing"
Social proof:
- "Here's what [Brand] customers achieved last month"
- "[X] customers in [their industry] are getting [result]"
Offer-led:
- "[X]% off to welcome you back, [Name]"
- "Your offer expires [date], [Name]"
- "A deal, just for former customers"
Feature-triggered:
- "[Feature name] just launched -- this is why you left"
- "The thing you asked for: it's here"
9. A/B Testing Priorities for Cancel Flow
Run these tests in priority order. Give each test at least 30 days or 200 impressions per variant before calling a winner.
| Test | Variants to Run | Metric to Optimise |
|---|---|---|
| Survey headline | Empathetic vs direct vs curiosity | Survey completion rate |
| Survey option order | Pricing first vs usage first vs feature first | Response accuracy (compare to support data) |
| Offer framing | Percentage discount vs dollar amount discount | Offer acceptance rate |
| Pause vs discount | Show pause first vs show discount first | Save rate |
| Offer acceptance button copy | "Apply discount" vs "Keep my account" vs "Stay [X]% off" | Acceptance rate |
| Decline link placement | Prominent vs subtle | Save rate (caution: hiding it damages trust) |
| Confirmation page CTA | "Reactivate" vs "Change your mind?" | Reactivation rate at 30 days |
These templates are starting points, not final copy. Always review against brand-context.md for voice, tone, and audience language before publishing. The most effective cancel flow copy sounds like the brand speaking -- not like a generic SaaS template.
Supporting file: references/churn-diagnosis.md
Churn Diagnosis Capability
Before designing any retention intervention, understand what kind of churn is happening and why. Prescribing solutions before diagnosing is the most common retention mistake.
Types of Churn
| Type | Definition | Primary Cause | Recovery Approach |
|---|---|---|---|
| Voluntary (active) | Customer deliberately cancels | Value perception, missing features, competitor, price | Cancel flow, proactive retention, win-back |
| Involuntary (passive) | Payment fails and account lapses | Expired card, insufficient funds, bank block | Dunning sequences, Smart Retry, card updater |
| Implicit | Customer stops using but does not cancel | Disengagement, poor onboarding, habit not formed | Health scoring, proactive outreach |
| Contractual expiry | Fixed-term contract ends and is not renewed | No renewal conversation, poor ongoing value delivery | QBRs, renewal playbooks, expansion offers |
Involuntary churn represents 30-50% of all SaaS churn and is the highest-recovery-rate category. Address it first.
Calculating Churn Rates
Monthly Churn Rate (Customer)
(Customers lost in period / Customers at start of period) x 100
Target: under 2% for SMB SaaS, under 0.5% for enterprise SaaS, under 5% for consumer subscription.
Monthly Revenue Churn (Gross MRR Churn)
(MRR lost to cancellations + downgrades in period / MRR at start of period) x 100
Target: under 1.5% monthly gross MRR churn.
Net Revenue Retention (NRR)
((Starting MRR + Expansion MRR - Contraction MRR - Churned MRR) / Starting MRR) x 100
Target: above 100% (expansion exceeds churn). Best-in-class SaaS: 120-140%.
Revenue Churn Rate vs Customer Churn Rate: These diverge significantly when you have plan tiers. If enterprise customers churn less than SMB customers, revenue churn will be lower than customer churn -- which is healthy. Segment both metrics by customer cohort and plan type.
Cohort Retention Analysis
Run retention curves by signup cohort (monthly or quarterly) to identify onboarding failures, product-market fit segments, and trend direction. Always segment by plan tier, acquisition channel, activation status, and geography.
For the full cohort table template, interpretation guide, and segmentation methodology, see ./benchmarks.md Section 1.
Identifying Churn Causes
Use all available signals. Prioritise in this order:
Qualitative (direct feedback)
- Exit survey data from cancel flow (most reliable for voluntary churn)
- Customer success call notes and support ticket themes
- NPS detractor verbatim responses
- Direct outreach to recently churned customers (email or call within 7 days of churn)
Quantitative (behavioural signals)
- Feature adoption rates: which features are churned customers NOT using?
- Login frequency trajectory in the 30-60 days before churn
- Support volume: do churned customers have more tickets? Unresolved tickets?
- Billing events: how many churned customers had at least one failed payment?
- Onboarding completion rates for churned vs retained cohorts
Common churn causes by business type:
| Business Type | Top Churn Causes |
|---|---|
| SaaS (SMB) | Price sensitivity, product not sticky enough, competitor switch, poor onboarding |
| SaaS (Enterprise) | Contract renewal not prioritised, stakeholder change, budget cut, implementation failure |
| Consumer subscription | Forgot they were subscribed, seasonal need, price, forgot to cancel |
| E-commerce subscription | Product quality, variety fatigue, price vs value, no longer needed |
Deliverable
Churn Diagnosis Report: churn-diagnosis-{YYYY-MM-DD}.md
- Churn type breakdown
- Cohort analysis
- Root cause findings
- Prioritised recommendations
Recommended Priority Order
If starting a retention programme from scratch, implement in this sequence:
- Payment recovery (highest ROI, fastest wins -- enable Card Updater and Smart Retries this week)
- Dunning email sequence (capture remaining involuntary churn)
- Cancel flow (address voluntary churn at the moment of intent)
- Health scoring and proactive intervention (prevent churn before intent forms)
- Win-back campaign (re-engage churned customers)
- Ongoing churn analysis and cohort monitoring (sustain improvements)
Supporting file: references/frameworks-index.csv
id,name,description,best_for,retention_stage,file,tags
1,Exit Survey Copy,Survey header copy; 6 option microcopy with labels icons and follow-up fields; footer copy with skip link and privacy note,Designing or auditing the exit survey step of a cancel flow,Cancel Flow,frameworks/exit-survey-copy.md,exit-survey;microcopy;cancel-flow;survey-design
2,Dynamic Offer Templates,Reason-matched offer card copy for all 6 cancellation scenarios with acceptance confirmations and alternative offers,Building dynamic offer logic that responds to exit survey selection,Cancel Flow,frameworks/dynamic-offer-templates.md,offers;discount;pause;downgrade;cancel-flow;reason-matching
3,Cancel Confirmation Copy,Confirmation page copy for immediate cancellation and pause; post-cancellation email template,Writing confirmation screens and the immediate post-cancel email,Cancel Flow,frameworks/cancel-confirmation-copy.md,confirmation;post-cancel;email;data-export;reactivation
4,Dunning Email Sequence,Full 6-email dunning sequence from Day 0 to Day 21 with subject lines preview text and body copy,Building or auditing a payment recovery email sequence,Dunning,frameworks/dunning-email-sequence.md,dunning;payment-recovery;involuntary-churn;email-sequence
5,Win-Back Email Sequence,3-email win-back sequence from 7 days to 60 days post-cancel with timing notes and offer escalation,Creating win-back campaigns for voluntarily churned customers,Win-Back,frameworks/win-back-email-sequence.md,win-back;re-engagement;churned-customers;email-sequence
6,Proactive Retention Emails,Yellow-tier check-in and red-tier urgent outreach email templates for health score interventions,Writing proactive outreach emails triggered by declining health scores,Proactive,frameworks/proactive-retention-emails.md,proactive;health-score;customer-success;intervention;at-risk
7,Offer Decision Tree,Visual ASCII decision tree mapping each exit survey reason to its primary and secondary offer,Quick reference when configuring cancel flow offer logic or auditing offer routing,Reference,frameworks/offer-decision-tree.md,decision-tree;offer-logic;quick-reference;cancel-flow
8,Subject Line Reference,Curated dunning and win-back subject lines organised by tone and angle,Choosing or A/B testing subject lines for retention emails,Reference,frameworks/subject-line-reference.md,subject-lines;dunning;win-back;email;copywriting
9,Cancel Flow A/B Testing,Prioritised A/B testing roadmap for cancel flow elements with variants and success metrics,Planning optimisation experiments for an existing cancel flow,Testing,frameworks/cancel-flow-ab-testing.md,ab-testing;optimisation;cancel-flow;experimentation
Supporting file: references/frameworks/cancel-confirmation-copy.md
Cancel Flow Confirmation Page Copy
This page renders after the customer either declines the offer or skips the cancel flow entirely. It should be graceful, informative, and leave the door open without being pushy. All copy uses
[Brand],[Product],[Name], and[Plan]as placeholders. Adapt tone, voice, and specifics to match brand-context.md before using.
Confirmation Page: Immediate Cancellation
Headline: "Your [Plan] subscription has been cancelled."
Body:
Your account will remain active until [date] -- the end of your
current billing period. No further charges will be made.
Here's what happens to your data:
- Your account data is safely stored for 90 days
- You can export everything from [Settings > Export]
- After 90 days, your data is permanently deleted
If you change your mind, reactivating is instant. Everything
will be exactly where you left it.
[Export My Data] [Visit Our Community] [Contact Support]
Footer (below main content): "Changed your mind? [Reactivate my account] -- no forms, no waiting."
Confirmation Page: Pause Confirmed
Headline: "Your account is paused until [resume date]."
Body:
No charges will be made while your account is paused.
Your data, settings, and history are safe and will be waiting
when you return.
Resuming is instant -- just log in and click Resume, or we'll
automatically resume on [resume date].
You'll receive a reminder email 7 days before your pause ends.
[Change Resume Date] [Resume Early] [Export My Data]
Post-Cancellation Email (Sent Immediately After Cancel Flow)
Subject line options:
- "Your cancellation is confirmed, [Name]"
- "Account cancelled -- what you need to know"
- "We've processed your cancellation"
Email body:
Hi [Name],
Your [Brand] [Plan] subscription has been cancelled, effective [date].
A few things to know:
Access: Your account stays active until [billing period end date].
Your data: Safely stored for 90 days from today. Export any
time at [Settings > Export].
Reactivate: If you change your mind, your account reactivates
instantly with all your data intact. Just go to [link].
We're sorry to see you go. If there's anything we could have
done differently, reply to this email -- it goes to a real person
on our team who reads every response.
[The Brand] team
[Name of a real team member]
P.S. Your data export link: [direct link]
Supporting file: references/frameworks/cancel-flow-ab-testing.md
A/B Testing Priorities for Cancel Flow
Prioritised A/B tests for optimising cancel flow performance. Run these tests in priority order. Give each test at least 30 days or 200 impressions per variant before calling a winner.
| Test | Variants to Run | Metric to Optimise |
|---|---|---|
| Survey headline | Empathetic vs direct vs curiosity | Survey completion rate |
| Survey option order | Pricing first vs usage first vs feature first | Response accuracy (compare to support data) |
| Offer framing | Percentage discount vs dollar amount discount | Offer acceptance rate |
| Pause vs discount | Show pause first vs show discount first | Save rate |
| Offer acceptance button copy | "Apply discount" vs "Keep my account" vs "Stay [X]% off" | Acceptance rate |
| Decline link placement | Prominent vs subtle | Save rate (caution: hiding it damages trust) |
| Confirmation page CTA | "Reactivate" vs "Change your mind?" | Reactivation rate at 30 days |
These templates are starting points, not final copy. Always review against brand-context.md for voice, tone, and audience language before publishing. The most effective cancel flow copy sounds like the brand speaking -- not like a generic SaaS template.
Supporting file: references/frameworks/dunning-email-sequence.md
Full Dunning Email Sequence (6 Emails)
Production-ready dunning email copy for payment recovery. All copy uses
[Brand],[Product],[Name], and[Plan]as placeholders. Adapt tone, voice, and specifics to match brand-context.md before using.
Email 1: Day 0 -- First Payment Failure (Soft, Helpful)
Subject line options:
- "Payment issue with your [Brand] account"
- "Quick heads-up: we couldn't process your payment"
- "Action needed: update your payment method"
Preview text:
- "Your account is fine -- let's get this sorted quickly."
- "Takes 30 seconds to fix."
Body:
Hi [Name],
We tried to process your [Plan] subscription payment today, but
something didn't go through.
This happens -- cards expire, banks flag international charges,
and limits reset. It's usually a quick fix.
Update your payment method here:
[Update Payment Details -- big, clear button]
Your account is fully active while we sort this out. If you
have questions, reply to this email or chat with us at [link].
[Brand] billing team
Tone note: Do not use the word "failed" or "declined" in email 1. Use "couldn't process" or "didn't go through." Softer language reduces defensive reactions and increases click-through.
Email 2: Day 1 -- Friendly Follow-Up
Subject line options:
- "Reminder: your [Brand] payment needs updating"
- "[Name], one more thing about your payment"
- "Still having trouble with your payment?"
Preview text:
- "We haven't been able to reach you -- let's fix this before it affects your account."
- "Your account is still active -- update takes 30 seconds."
Body:
Hi [Name],
We sent you a note yesterday about a payment issue on your
[Brand] [Plan] account. We wanted to follow up in case it
got buried.
Your account is still fully active. Updating your payment
details takes about 30 seconds.
[Update My Payment Method]
If you want to use a different card or switch payment methods,
you can do that here too: [link to billing portal]
Questions? We're here: [support email / chat link]
[Brand] billing team
Email 3: Day 3 -- Direct Link, Slightly More Urgent
Subject line options:
- "Your [Brand] payment is still outstanding"
- "Account at risk: payment update needed"
- "[Name] -- we really need to sort your payment out"
Preview text:
- "Your account is active but we need to hear from you."
- "Two more days and your access may be affected."
Body:
Hi [Name],
We've tried reaching you about a payment issue on your [Brand]
account -- we want to make sure you don't lose access.
Here's the direct link to update your payment:
[Direct billing portal link]
What happens if you don't update:
- Day 7: In-app notice about account status
- Day 14: Access may become limited
- Day 21: Account may be paused or cancelled
We'd rather sort this now while your account is fully active.
If you're having difficulties with payment or want to talk
through your options, reply to this email and a real person
will respond within a few hours.
[Update Payment Now]
[Brand] billing team
Email 4: Day 7 -- Urgent, Account at Risk
Subject line options:
- "Urgent: your [Brand] account is at risk"
- "Your account may be suspended soon, [Name]"
- "Last week to save your [Brand] account"
Preview text:
- "Don't lose your data and progress -- takes 30 seconds to fix."
- "7 days until your account is affected."
Body:
Hi [Name],
Your [Brand] payment has been outstanding for 7 days. We need
to hear from you today to keep your account fully active.
What's at risk:
- [X] projects / [X] integrations / [X] team members
- [X] months of data and history
- Your current plan pricing (reactivating after cancellation
means signing up at current rates)
Update your payment now to avoid any disruption:
[Update Payment -- prominent button]
Can't update right now? Reply to this email and tell us what's
happening. If you need a few extra days, we can arrange that.
We'd rather work with you than lose you.
This is the point where we'd also pick up the phone for accounts
above [threshold] MRR. If that's you, expect a call from
[Name] at [Brand] today.
[Brand] billing team
[Direct phone number if applicable]
High-value accounts: For accounts above $500 MRR, add a personal PS: "P.S. [Name] from our account team is going to try you on [phone number] today. We want to help sort this personally."
Email 5: Day 14 -- Final Warning Before Downgrade
Subject line options:
- "Final notice: [Brand] account action required"
- "Your [Brand] account will be affected in 7 days"
- "[Name], we need your decision"
Preview text:
- "One week left before your account changes. This is the last reminder."
Body:
Hi [Name],
This is our final payment reminder before your [Brand] account
is automatically affected.
In 7 days (on [date]):
- Your account will be moved to a limited/read-only mode
- You will not be able to [core action] until payment is resolved
- Your data will remain safe and accessible for 90 days
This is genuinely our last automated email about this.
If you want to keep your account, here's the link:
[Resolve Payment Now]
If you've decided to move on, no action is required -- your
account will transition automatically on [date] and you'll
receive a confirmation.
If there's a reason we don't know about that's making this
difficult -- financial hardship, billing dispute, a technical
issue -- please just reply. We handle these situations
individually and there may be options we haven't offered yet.
[Brand] billing team
Email 6: Day 21 -- Account Lapsed / Reactivation Offer
Subject line options:
- "Your [Brand] account has been paused"
- "Your account is waiting for you, [Name]"
- "[Brand] -- reactivate any time, your data is safe"
Preview text:
- "Your data is safe for 90 days. Reactivating takes 30 seconds."
Body:
Hi [Name],
Your [Brand] [Plan] account has been paused due to an
unresolved payment issue.
Your data is safe. Everything -- your [projects / settings /
history] -- is stored securely and will be there when you return.
To reactivate, just update your payment method:
[Reactivate My Account]
Your data will be available for 90 days from today ([date]).
After that, it will be permanently deleted.
If you meant to cancel and this is fine, you don't need to
do anything. You'll receive one final email confirming
permanent deletion 14 days before it happens.
If the pause was accidental or things have changed, we'd love
to have you back. Reactivation is instant.
[Brand] billing team
P.S. If you're coming back, your original plan pricing is
preserved for the next 30 days. After that, you'll sign up
at current rates.
Supporting file: references/frameworks/dynamic-offer-templates.md
Dynamic Offer Templates by Cancellation Reason
Production-ready offer copy matched to each exit survey cancellation reason. All copy uses
[Brand],[Product],[Name], and[Plan]as placeholders. Adapt tone, voice, and specifics to match brand-context.md before using.
Offer Screen Wrapper Copy
Header above the offer card (after survey selection):
- "Wait -- before you go, we have something for you."
- "Based on what you told us, here's what we can do."
- "We'd like to make this right."
Decline link below offer (always present):
- "No thanks, I still want to cancel" (styled as plain text link, not a button)
Scenario 1: "It's too expensive"
Offer type: Discount (20-30% for 3 months) or Plan Downgrade
Offer card headline options:
- "Stay for [X]% less for the next 3 months"
- "We can reduce your bill by [X]% right now"
- "What if [Product] cost less?"
Offer card body copy:
We get it -- budget matters.
Here's what we can do: drop your [Plan] price by [X]% for the
next 3 months, then return to your regular rate.
No changes to your plan. No hidden conditions. Just a lower bill
while you see the full value [Product] can deliver.
[Apply [X]% Discount -- Keep My Account]
Downgrade alternative (below the main offer): "Or, would a smaller plan at $[price]/month work better? [See all plans]"
Pause alternative (below the main offer): "Not ready to commit? [Pause your account for 1-3 months] instead of cancelling."
Acceptance confirmation copy: "Done. Your new rate of $[price]/month applies immediately. Your next invoice will reflect this discount. See you on the inside."
Scenario 2: "Not using it enough"
Offer type: Free 1:1 onboarding session + Pause option
Offer card headline options:
- "Let's get [Product] actually working for you -- on us"
- "30 minutes with our team could change everything"
- "You're not stuck. We can help."
Offer card body copy:
Not using [Product] enough usually means one thing: you haven't
found your "aha moment" yet. That's on us.
Our team will personally walk through your account, understand
your specific goal, and set up [Product] to get you results --
for free, in one 30-minute session.
Customers who complete a setup session retain 3x longer and see
results within their first week.
[Book My Free Setup Session]
Pause alternative:
Not ready for a call right now?
Pause your account for up to 3 months instead. Your data stays
safe, your plan stays active, and you can unpause any time.
No charge while paused.
[Pause My Account Instead]
Acceptance confirmation (session booked): "Your setup session is confirmed. You'll receive a calendar invite shortly. We're looking forward to helping you get real results from [Product]."
Acceptance confirmation (pause selected): "Your account is paused. We won't charge you while you're paused. Resume any time from your account settings -- your data will be right where you left it."
Scenario 3: "Missing a feature I need"
Offer type: Roadmap acknowledgment + Workaround + Pause
Offer card headline options:
- "Tell us what you need -- it matters"
- "That feature might be closer than you think"
- "We're building it. Here's where we are."
Offer card body copy (roadmap version -- use when feature is planned):
We hear you -- [feature] is something our team is actively
working on.
Current status: [On roadmap / In development / Launching in Q{X}]
If you can wait, we'd love to keep your account active. In the
meantime, here's a workaround that some customers use to
approximate [feature]: [brief workaround description or link].
Would a 2-month pause give us time to ship this for you?
[Pause My Account for 2 Months] [View the Roadmap]
Offer card body copy (feature not yet planned -- honest version):
We don't have [feature] yet, and we want to be honest with you.
Your feedback has been sent directly to our product team. Features
that reach a certain threshold of requests get prioritised. Yours
counts.
If you want to stay and be notified the moment this ships,
we'll email you immediately. Otherwise, we understand.
[Stay and Notify Me When It Ships]
Acceptance confirmation: "You've been added to the notify list for [feature]. We'll email you the moment it's available. Thank you for your patience -- feedback like yours shapes our roadmap."
Scenario 4: "Switching to another tool"
Offer type: Direct comparison + Differentiation + 1-month free trial extension
Offer card headline options:
- "Before you switch -- a quick comparison"
- "We'd like the chance to show you what makes [Product] different"
- "Switching costs are real. Let's make sure it's worth it."
Offer card body copy:
Switching tools is a significant decision -- time, migration,
retraining, and integration work.
Before you go, here's how [Product] compares to the most common
alternatives our customers consider:
[Product] vs [Competitor A]
[Differentiator 1] [Gap or tradeoff]
[Differentiator 2] [Gap or tradeoff]
[Differentiator 3] [Gap or tradeoff]
If you've already decided, we respect that. But if you're still
evaluating, take one more month on us -- free -- to compare
fairly.
[Try 1 More Month Free] [Read Full Comparison]
Acceptance confirmation: "Your account has been extended by one month at no charge. We hope the extra time helps you make the best decision for your team -- whatever that turns out to be."
Scenario 5: "I had a technical problem"
Offer type: Immediate escalation to senior support + Account credit
Offer card headline options:
- "Let us fix this -- right now"
- "This should never have happened. We want to make it right."
- "Our senior team will personally resolve this today"
Offer card body copy:
A technical problem is the worst reason to lose you as a
customer -- because it's fixable.
Here's what happens next:
1. A senior member of our engineering team will review your
account within 2 hours.
2. We'll contact you directly at [email] with a resolution.
3. Your account will be credited for [X days/amount] for the
disruption.
You don't need to do anything except give us the chance to fix it.
[Yes, Please Fix This]
Immediate action on acceptance: Trigger internal alert to CS/engineering immediately. Do not route through standard support queue. Personal response within 2 hours is the expectation set.
Acceptance confirmation: "Our senior team has been notified and will reach out within 2 hours. In the meantime, we've applied a [X]-day credit to your account. We're sorry this happened."
Scenario 6: "Something else" (open text)
Offer type: Manager callback + General discount or pause option
Offer card headline options:
- "Can we call you? We'd like to understand."
- "Let's talk -- your situation is unique"
- "A real conversation might help"
Offer card body copy:
Not everything fits into a list. Whatever's going on, we'd like
to understand before you go.
If you're open to it, request a quick call with one of our
senior team members -- someone with the authority to actually
help, not just read from a script.
If a call doesn't work, we can also offer you a [X]% discount
or a [1-3 month] pause while you sort things out.
[Request a Quick Call] [Get [X]% Off Instead] [Pause Instead]
Supporting file: references/frameworks/exit-survey-copy.md
Exit Survey Copy
Production-ready copy for cancel flow exit surveys. All copy uses
[Brand],[Product],[Name], and[Plan]as placeholders. Adapt tone, voice, and specifics to match brand-context.md before using.
Survey Header Copy
Primary headline options (choose one, A/B test):
- "Before you go -- one quick question"
- "Help us understand (it takes 30 seconds)"
- "We're sorry to see you go. What happened?"
- "Your feedback helps us improve for everyone"
Subheading (use beneath headline):
- "Select the main reason you're cancelling. This helps us improve [Product] for everyone."
- "Tell us why so we can do better. Your answer will determine what we can offer you."
Survey Option Microcopy (6 Options)
Option 1: Too expensive
- Label: "It's too expensive"
- Microcopy below label: "The price doesn't match the value I'm getting right now."
- Icon suggestion: currency symbol or price tag
Option 2: Not using it enough
- Label: "I'm not using it enough"
- Microcopy below label: "I don't have the time or need to get full value from [Product]."
- Icon suggestion: clock or calendar
Option 3: Missing a feature
- Label: "It's missing something I need"
- Microcopy below label: "There's a specific feature or integration I can't work without."
- Icon suggestion: puzzle piece or feature block
Option 4: Switching to a competitor
- Label: "I'm switching to another tool"
- Microcopy below label: "I found a different solution that better fits my needs."
- Icon suggestion: arrow pointing right or comparison icon
Option 5: Technical issue or bad experience
- Label: "I had a technical problem"
- Microcopy below label: "I experienced a bug, outage, or issue that wasn't resolved."
- Icon suggestion: warning triangle or wrench
Option 6: Other
- Label: "Something else"
- Microcopy below label: "My reason isn't listed above."
- Follow-up text field placeholder: "Tell us more (optional) -- your feedback goes directly to our team."
- Icon suggestion: speech bubble or question mark
Survey Footer Copy
Below the option list: "Not sure? [Skip and cancel directly] -- no hard feelings." (Link opens confirmation screen directly, bypasses offer)
Privacy note (optional, builds trust): "Your response is shared only with our product team to improve [Product]. We won't use it for marketing."
Supporting file: references/frameworks/offer-decision-tree.md
Quick Reference: Offer Decision Tree
Visual decision tree mapping exit survey responses to the correct retention offer. Use this as a quick reference when building or auditing cancel flow logic.
Customer selects exit survey reason
|
+-- "Too expensive"
| |
| +--> Show: Discount offer (primary)
| +--> Secondary: Pause option
| +--> Downgrade option (if multi-plan)
|
+-- "Not using it enough"
| |
| +--> Show: 1:1 setup session offer
| +--> Secondary: Pause option
|
+-- "Missing a feature"
| |
| +--> Feature on roadmap? YES --> Show roadmap date + pause
| +--> Feature on roadmap? NO --> Honest response + notify option
|
+-- "Switching to competitor"
| |
| +--> Show: Comparison table + 1 month free
| +--> Link: Full comparison page
|
+-- "Technical issue"
| |
| +--> Show: Senior support escalation + credit
| +--> Trigger: Internal CS alert immediately
|
+-- "Other" (open text)
|
+--> Show: Callback request + general discount or pause
+--> Route: Text field response to CS team for follow-up
Supporting file: references/frameworks/proactive-retention-emails.md
Proactive Retention Emails (Health Score Interventions)
Production-ready email copy for proactive retention outreach triggered by health score changes. All copy uses
[Brand],[Product],[Name], and[Plan]as placeholders. Adapt tone, voice, and specifics to match brand-context.md before using.
Yellow Tier -- Check-In Email (Day 0 of intervention sequence)
Subject line options:
- "Checking in on your [Brand] experience, [Name]"
- "[Name] -- quick question about [Brand]"
- "Is [Brand] working for you?"
Body:
Hi [Name],
I'm [Name] from the [Brand] customer success team. I noticed
you haven't been in [Product] as much lately and wanted to
reach out personally.
Is everything okay? Are you hitting any friction or not finding
the value you expected?
I ask because customers often go quiet when they're stuck on
something -- and we'd rather help than have you quietly drift
away.
No agenda, no sales. Just a genuine check-in.
If 15 minutes would be useful, you can grab time here:
[Calendar link]
Or just reply to this email with what's going on. I'm a real
person and I'll respond personally.
[Name]
[Brand] Customer Success
Red Tier -- Urgent Outreach Email (High-risk accounts)
Subject line options:
- "[Name], I wanted to reach out personally"
- "Quick question about your [Brand] account"
- "Can I help with something at [Brand], [Name]?"
Body:
Hi [Name],
I'm [Name], [title] at [Brand]. I'm reaching out because I
can see your account has been less active recently, and I
wanted to make sure you're getting the value you signed up for.
Here's what I'd like to offer:
A 45-minute working session where we look at your specific
setup, understand your goals, and make sure [Product] is
actually solving the problems you hired it for.
No pitch. This is purely to make your account work better.
[I'd like to book a session -- calendar link]
If you'd rather not, that's okay too. But if there's something
we could fix or improve, I'd genuinely like to know.
[Name]
[Title], [Brand]
[Direct phone / email]
Supporting file: references/frameworks/subject-line-reference.md
Subject Line Quick Reference
Curated subject lines for dunning and win-back emails, organised by tone and angle. Use as a starting point -- always adapt to match brand-context.md voice.
Dunning Subject Lines (by tone)
Soft / Helpful:
- "Payment issue with your [Brand] account"
- "Quick heads-up about your [Brand] payment"
- "We couldn't process your payment -- easy fix"
Direct / Informative:
- "Action needed: update your [Brand] payment"
- "Your [Brand] payment needs attention"
- "Payment update required for your [Brand] account"
Urgent (Days 7-14):
- "Your [Brand] account is at risk"
- "Final payment reminder -- [Brand]"
- "Important: your [Brand] account will be affected on [date]"
Win-Back Subject Lines (by angle)
Curiosity:
- "We've been thinking about you, [Name]"
- "Something changed at [Brand] you should know about"
- "Before we stop messaging you -- one more thing"
Social proof:
- "Here's what [Brand] customers achieved last month"
- "[X] customers in [their industry] are getting [result]"
Offer-led:
- "[X]% off to welcome you back, [Name]"
- "Your offer expires [date], [Name]"
- "A deal, just for former customers"
Feature-triggered:
- "[Feature name] just launched -- this is why you left"
- "The thing you asked for: it's here"
Supporting file: references/frameworks/win-back-email-sequence.md
Win-Back Email Sequence (3 Emails)
Production-ready win-back email copy for re-engaging churned customers. All copy uses
[Brand],[Product],[Name], and[Plan]as placeholders. Adapt tone, voice, and specifics to match brand-context.md before using.
Email 1: 7-14 Days Post-Cancel -- Warm Check-In
Timing note: Send 7 days post-cancel for monthly plans. 14 days for annual or higher-value plans. Do not send sooner -- it feels desperate.
Subject line options:
- "We've been thinking, [Name]"
- "A note from [Brand] -- no pressure"
- "How's it going since you left, [Name]?"
- "[Name], it's been [X] days"
Preview text:
- "No pitch. Just checking in."
- "Things have changed since you left."
Body:
Hi [Name],
It's been [X] days since you cancelled your [Brand] account.
We hope whatever you switched to is working out for you.
We're not going to try to pressure you back -- if your needs
have changed, we respect that.
But we did want to share a couple of things that have happened
at [Brand] since you left that might be relevant:
- [Recent feature or improvement #1]
- [Recent feature or improvement #2]
- [Customer win, stat, or case study that speaks to their
use case]
If your situation changes, or if you just want to take another
look at where [Product] has evolved, you can reactivate your
account any time at [link]. Your data is still there.
No pressure, no pitch. Just wanted you to know the door is open.
[Name from the team]
[Brand]
P.S. If there's anything we could have done differently when
you were a customer, I'd genuinely appreciate hearing it.
Reply to this email -- I read every response.
Email 2: 21-30 Days Post-Cancel -- Value Proof + Offer
Subject line options:
- "A special offer to welcome you back, [Name]"
- "[Name], here's what [Brand] customers achieved last month"
- "We'd like you to give [Brand] another shot"
- "Something for you, if you're open to it"
Preview text:
- "Your old account and all your data are still there."
- "No setup required. Reactivate in 30 seconds."
Body:
Hi [Name],
[Brand] has changed a lot in the past [X] weeks. Here's what
customers in your situation have been achieving:
"[Customer quote or specific result]"
-- [Customer name, company]
"[Second customer quote or result]"
-- [Customer name, company]
We'd love to show you what's possible for [their company/use case].
Here's our offer: come back for [X months] at [X]% off your
original plan, with no commitment beyond the offer period.
[Redeem Offer -- Rejoin at [X]% Off]
This offer expires on [date]. After that, you'd sign up at
standard pricing.
If the timing still isn't right, no worries -- but if you're
even a little curious, this is the moment.
[Name from the team]
[Brand]
Offer placement note: Do not lead with the offer in the subject line. Lead with curiosity or social proof. Save the offer reveal for after you've reminded them of the value.
Email 3: 45-60 Days Post-Cancel -- Final Outreach / News Angle
Subject line options:
- "One last thing before we stop reaching out, [Name]"
- "[Brand] update you might want to know about"
- "[Feature they wanted] just launched -- thought you should know"
- "We're wrapping up our win-back outreach, [Name]"
Preview text:
- "After this, we'll leave you alone. But we wanted you to see this first."
- "Your data is safe for [X] more days."
Body (Feature launch version -- use when they churned for "missing feature"):
Hi [Name],
Quick note -- [feature name] just launched in [Brand].
You mentioned this was something you needed when you cancelled.
We built it. Here's what it does: [2-3 sentence description
with specific capabilities].
If this changes things for you, your account can be reactivated
instantly -- all your data is still there: [Reactivate Now]
We're wrapping up our outreach after this email, so if you'd
prefer we stop messaging you, just click here and we'll remove
you from all future win-back communications: [Unsubscribe link]
Either way, we hope things are going well.
[Brand] team
Body (Standard final outreach -- use for all other scenarios):
Hi [Name],
This is the last email we'll send about coming back to [Brand].
We don't want to be a brand that pesters people, so we're
wrapping up our outreach after this one.
Two things before we do:
1. Your [Brand] data will be permanently deleted on [date]
(90 days from your cancellation). If you want to export
it first, here's how: [export link]
2. If you ever want to come back, you can. Standard pricing
applies, but your reactivation will be instant.
Thank you for being a [Brand] customer. We hope things are
going well, whatever tools you're using now.
[Brand] team
P.S. If there's anything we could have done better, we're
still listening: [feedback link or reply to email]
Supporting file: references/payment-recovery.md
Payment Recovery and Dunning Capability
Involuntary churn is the most recoverable form of churn because the customer did not intend to leave. A well-designed dunning sequence can recover 50-60% of failed transactions. Act immediately -- recovery rates drop sharply with each passing day.
Understanding Payment Failure Types
| Failure Type | Cause | Recovery Approach |
|---|---|---|
| Soft decline | Temporary: insufficient funds, daily limit, bank hold | Retry at different times; notify customer |
| Hard decline | Permanent: card number invalid, account closed, blocked | Immediate customer notification required |
| Expired card | Card passed expiration date | Proactive card updater service |
| 3DS/authentication failure | Strong Customer Authentication required (EU/UK) | Send authentication link to customer |
Card Updater (Account Updater): Stripe, Braintree, and most payment processors offer a service that automatically updates expired or replaced card details with the issuing bank. Enable this. It silently recovers a significant portion of involuntary churn before the customer even knows there was a problem.
Smart Retry Logic
Do not retry immediately on failure -- it often results in another decline and damages your success rate with the card network.
Smart retry rules:
- Soft decline (insufficient funds): retry after 24-48 hours, then 72 hours
- Soft decline at end of month: retry on the 1st-2nd of the following month (paycheck timing)
- Hard decline: do not retry; notify the customer immediately
- Timing: avoid retries at midnight. Retry during business hours in the customer's timezone
- Maximum retries: 4-6 total before moving to manual recovery
Tools like Stripe Billing's Smart Retries, Chargebee's Receivables, or Recurly's Intelligent Retries use machine-learning optimised retry timing. Enable them. They outperform fixed-schedule retry logic significantly.
Dunning Email Sequence
The dunning sequence runs in parallel with Smart Retry logic. Each email should sound human, not like a system alert.
Full sequence: Days 0-21
| Day | Trigger | Tone | Primary CTA |
|---|---|---|---|
| Day 0 | Payment fails | Soft, helpful | Update payment method |
| Day 1 | No update | Friendly, direct | Update payment details |
| Day 3 | No update | More direct | Update now (link) |
| Day 7 | No update | Urgent | Save your account |
| Day 14 | No update | Final warning | Last chance to update |
| Day 21 | Grace period expires | Neutral, confirmatory | Reactivate if cancelled |
Full email body copy and subject lines for all 6 emails are in ./frameworks/dunning-email-sequence.md.
High-value account escalation:
- Accounts above $500 MRR: add phone or chat outreach at Day 7
- Accounts above $2,000 MRR: personal call from account manager at Day 3
- Accounts above $5,000 MRR: executive reach-out, immediate escalation
Account Grace Period Design
Define what happens when payment fails and the dunning sequence runs its course:
| Day | Account Status |
|---|---|
| Day 0-6 | Full access, soft notification |
| Day 7-13 | Full access, prominent in-app banner |
| Day 14-20 | Read-only access or feature degradation (data preserved) |
| Day 21 | Downgrade to free tier or cancellation, data retained for 90 days |
Data retention: Always retain customer data for a minimum of 30-90 days post-cancellation. The ability to reactivate without losing their work is a significant reactivation incentive. Communicate this explicitly: "Your data is safe and waiting for you."
Payment Recovery Benchmarks
| Metric | Target | Notes |
|---|---|---|
| Smart Retry recovery rate | 15-25% of failed payments | Recovered without customer action |
| Card Updater recovery rate | 5-15% | Silent background recovery |
| Dunning email recovery rate | 30-40% of remaining failures | After retry and updater |
| Total involuntary churn recovery | 50-60% of all failed payments | Combined methods |
| Recovery rate by Day 7 | 70% of eventual recoveries happen within 7 days | Front-load communication urgency |
Deliverable
Dunning Sequence: dunning-sequence-{YYYY-MM-DD}.md
- Retry logic
- Email sequence (all 6 emails)
- Grace period policy
- High-value escalation steps
Supporting file: references/proactive-retention.md
Proactive Retention Capability
The most effective retention happens before the customer ever clicks "Cancel." Identify at-risk customers early, intervene with the right message at the right time, and prevent the cancellation intent from forming in the first place.
Customer Health Scoring
Build a health score for every active account. Assign weights to signals based on their correlation with churn in your specific product. The framework below is a starting point -- calibrate against your own data.
Engagement signals (up to 40 points)
| Signal | Healthy | At Risk | Weight |
|---|---|---|---|
| Login frequency | Consistent with baseline | Declining 30%+ below baseline | 15 pts |
| Core feature usage | Weekly use of primary feature | No core feature use in 14d | 15 pts |
| Session depth | Using 3+ features per session | Single-feature sessions only | 10 pts |
Relationship signals (up to 30 points)
| Signal | Healthy | At Risk | Weight |
|---|---|---|---|
| Support tickets | Zero or resolved quickly | Open tickets 7d+ | 10 pts |
| NPS / CSAT score | Promoter (9-10) or Passive (7-8) | Detractor (0-6) | 10 pts |
| Customer success engagement | Regular check-ins, responsive | No response to last 2 outreach attempts | 10 pts |
Business signals (up to 30 points)
| Signal | Healthy | At Risk | Weight |
|---|---|---|---|
| Seat/usage expansion | Growing or stable | Removing seats or reducing usage | 15 pts |
| Billing contact change | No change | Billing contact replaced | 5 pts |
| Contract status | Active, upcoming renewal confirmed | Renewal not confirmed 60d out | 10 pts |
Health score tiers:
| Tier | Score Range | Status | Action |
|---|---|---|---|
| Green | 70-100 | Healthy | Focus on expansion -- upsell, referral, advocacy |
| Yellow | 40-69 | At-risk | Trigger check-in sequence, offer success support |
| Red | 0-39 | High risk | Immediate outreach, executive escalation for high-value |
Risk Signal Monitoring
Set up automated alerts when any of these signals cross thresholds:
Immediate alerts (trigger outreach within 24 hours)
- No login in 14 days (product type dependent -- adjust for lower-frequency tools)
- Support ticket unresolved for 5+ days
- NPS detractor score submitted
- Billing contact changed
Weekly monitoring triggers
- Login frequency declined more than 30% week-over-week for two consecutive weeks
- Core feature usage dropped to zero in the past 7 days
- Health score dropped by 20+ points in a single week
30-day trend alerts
- No team expansion in a multi-seat product that was previously growing
- Repeated single-session logins (log in, look around, log out -- nothing done)
- No API activity in an API-dependent integration
Intervention Playbooks
Match the intervention to the health tier and signal type. Escalate effort with score severity.
Yellow tier -- Email-first intervention
Sequence triggered automatically when a customer drops to Yellow:
- Day 0: Personal email from Customer Success ("Checking in on your [Brand] experience")
- Day 3: Useful resource relevant to their use case or industry
- Day 7: Direct offer of a 1:1 session ("30 minutes to unlock more from [Brand]")
- Day 14: If no engagement, escalate to Red-tier intervention
See ./frameworks/proactive-retention-emails.md for email copy outlines.
Red tier -- Multi-channel intervention
- Day 0: Personal email from a named CSM or founder (not automated-looking)
- Day 1: Follow-up in-product message or push notification (if available)
- Day 2: Phone or video call attempt for accounts above $500 MRR
- Day 5: Offer a concrete value session (audit their setup, propose improvements)
- Day 10: Senior team escalation for accounts above $2,000 MRR
Intervention tone principles:
- Lead with curiosity, not alarm ("I noticed you haven't been in recently -- everything okay?")
- Offer genuine help before mentioning retention or account status
- Give the customer agency -- make it easy to reply "I'm done" without friction
- Track intervention outcomes: how many Yellow accounts return to Green? How many escalate to Red or churn despite intervention?
Onboarding as Retention Foundation
The highest-leverage retention intervention happens in the first 30 days. Customers who reach the "aha moment" (first meaningful result from the product) in week 1 retain at 2-3x the rate of those who do not.
- Define the single most important activation event for your product (the action most correlated with long-term retention).
- Build onboarding to drive every new customer to that activation event within 7 days.
- Monitor activation rate as a leading indicator of future retention.
- Customers who have not activated by day 14 need immediate human intervention, not more automated emails.
Deliverable
Health Score Framework: health-scoring-{YYYY-MM-DD}.md
- Score model
- Signal weights
- Tier thresholds
- Alert setup
- Intervention playbook per tier
Supporting file: references/research-playbook.md
Retention Research Playbook
agent-browsercommands for live competitive and benchmark research on cancel flows, dunning patterns, and industry retention data.
Setup: Before running research, check if
agent-browseris available (agent-browser --version). If the command is not found, install it:npm install -g agent-browser && npx playwright install chromium. If installation fails, useWebFetchandWebSearchtools as alternatives for all research tasks in this playbook.
1. Competitor Cancel Flow Research
# Examine a competitor's cancellation experience (requires having an account or trial)
agent-browser --session retention-research open "https://{competitor}.com/settings/cancel" && agent-browser wait --load networkidle && agent-browser wait 2000
agent-browser screenshot ./brands/{brand-slug}/analytics/retention/competitor-cancel-flow-{competitor}.png
agent-browser get text body
# Look for: exit survey questions, offer types, pause options, friction tactics, UX tone
2. Industry Cancel Flow Examples (Churnkey Blog & Case Studies)
agent-browser --session retention-research open "https://churnkey.co/blog" && agent-browser wait --load networkidle && agent-browser wait 2000
agent-browser get text body
# Extract: save rates benchmarks, offer types that work by industry, UX best practices
3. Dunning Email Examples & Patterns (Really Good Emails)
agent-browser --session retention-research open "https://reallygoodemails.com/emails/type/dunning" && agent-browser wait --load networkidle && agent-browser wait 3000
agent-browser get text body
# Extract: subject line patterns, tone (urgent vs friendly), CTA patterns, timing notes
4. Retention Benchmark Data (Baremetrics Open Benchmarks)
agent-browser --session retention-research open "https://baremetrics.com/benchmarks" && agent-browser wait --load networkidle && agent-browser wait 3000
agent-browser get text body
# Extract: median churn rates by ARR band, trial conversion rates, MRR growth rates
5. ProsperStack / Churnkey Feature Research
agent-browser --session retention-research open "https://prosperstack.com/features" && agent-browser wait --load networkidle
agent-browser get text body
# Extract: cancel flow capability comparison, pricing signals, integration options
agent-browser --session retention-research open "https://churnkey.co/features" && agent-browser wait --load networkidle
agent-browser get text body
6. Stripe Smart Retries Documentation
agent-browser --session retention-research open "https://stripe.com/docs/billing/revenue-recovery" && agent-browser wait --load networkidle && agent-browser wait 2000
agent-browser get text body
# Extract: Smart Retry logic, card updater, dunning configuration options
Close the research session when done: agent-browser --session retention-research close
Supporting file: references/shared-patterns.md
Shared Skill Patterns
These patterns are referenced by all marketing specialist skills. Read them as part of your operating instructions.
Starting Context Router
Choose the starting mode before doing the work. Brand workspace context is preferred, but do not block progress if the user provides a real codebase or live URL.
Context A — Blank Page / Strategy Work
Use when the user needs strategy, planning, or a fresh roadmap. Read brand and SOSTAC context first when available, then align recommendations to audience, objections, and business goals.
Context B — Existing Local Codebase / Implementation Work
Use when the user wants changes made or specified in an existing repository, site, product, or app. Before proposing changes, deeply research the codebase: inspect the stack, architecture, relevant files, dependencies, and existing patterns. Match existing conventions before changing anything.
Context C — Live Website URL Audit
Use when the user provides a public URL for review. Audit the live experience first. If brand files are missing, use the live page and visible structure as the working source of truth.
Pre-Flight: Read Strategic Context
Before any specialist work, read these files in order when available:
./brands/{brand-slug}/brand-context.md— brand identity, audience, USP./brands/{brand-slug}/product-marketing-context.md— deep positioning, customer language, objections./brands/{brand-slug}/sostac/03-strategy.md— target segments, positioning./brands/{brand-slug}/sostac/04-tactics.md— channel plan, priorities
If brand files are missing but a codebase or live URL is available, continue with that as the working source of truth rather than blocking progress.
agent-browser Setup
Before running browser-based research, check if agent-browser is available (agent-browser --version). If the command is not found, install it:
# Install the agent-browser skill (recommended)
npx skills add https://github.com/vercel-labs/agent-browser --skill agent-browser
# Or install the CLI directly
npm install -g agent-browser && npx playwright install chromium
If installation fails, use WebFetch and WebSearch tools as alternatives for all research tasks.
Supporting file: references/win-back-campaigns.md
Win-Back Campaigns Capability
Not every churned customer is lost permanently. Customers leave for reasons that change: the budget frees up, the competitor disappoints, their business grows into your product again. A structured win-back programme captures this re-engagement.
Win-Back Segmentation
Do not send the same win-back message to all churned customers. Segment first.
| Segment | Criteria | Approach |
|---|---|---|
| High-value churned | MRR above $200, churned in last 90 days | Personal outreach, strong offer, senior team |
| Price-sensitive | Cancelled "too expensive" | Pricing change announcement, lower plan, deal |
| Feature-driven | Cancelled "missing feature" | Feature launch announcement when the feature ships |
| Disengaged | Low usage before churn, no exit survey response | Re-education, new use case, proof of value |
| Involuntary recovered | Failed payment, account lapsed without intent | Simple reactivation email, no offer needed |
| Long-lapsed (90d+) | Churned more than 90 days ago | Product update angle, major change message |
Win-Back Email Sequence (3-email core)
Timing: First win-back email goes out 7-14 days post-cancellation. Sending sooner feels desperate. Sending later misses the window when the brand is still top of mind.
| Timing | Focus | CTA | |
|---|---|---|---|
| Email 1 | 7-14 days post-cancel | Warm check-in + what changed | "Take another look" |
| Email 2 | 21-30 days post-cancel | Specific value proof + offer | "Come back + incentive" |
| Email 3 | 45-60 days post-cancel | Last-chance, feature announcement, or news | "Reactivate with [X]" |
For high-value churned customers, add a fourth personal outreach (phone or video) between Email 2 and Email 3.
See ./frameworks/win-back-email-sequence.md for full email copy outlines.
Win-Back Offers
| Offer Type | Best For | Duration |
|---|---|---|
| X months free | Disengaged churners, show value again | 1-2 months |
| Discount for Y months | Price-sensitive churners | 3-6 months, then full price |
| Upgraded plan at current plan price | Feature-driven churners | 3 months trial |
| No offer, just news | Involuntary churners, high-trust segments | N/A |
| Product credit | E-commerce subscription, physical product | One-time credit |
Escalating offers: Start without a discount in Email 1. Add an offer in Email 2. Strengthen or change the offer type in Email 3. Avoid leading with maximum incentive -- it trains customers to churn to get deals.
Win-Back Triggers (Non-Time-Based)
Beyond the standard time-based sequence, trigger win-back outreach on specific events:
- Feature launch: Email all churned customers who cited "missing feature X" as their reason, when feature X ships. Include a changelog link and direct reactivation CTA.
- Pricing change: Email churned customers who cited "too expensive" when pricing drops or a lower plan tier launches.
- Major product update: Annual-style "Here's what's new" email to all churned customers on the product anniversary or after a major version launch.
- Competitor news (negative): If a major competitor has an outage, price hike, or acquisition, reach out with a timely "The timing might be right" message.
Win-Back Benchmarks
| Metric | Target |
|---|---|
| Win-back rate (0-90 days churned) | 10-15% |
| Win-back rate (90-180 days churned) | 3-8% |
| Win-back LTV vs new customer LTV | Win-back customers retain 20-30% longer (they know the product) |
| Win-back email open rate | 25-35% (brand familiarity effect) |
| Offer acceptance rate | 15-25% of those who open |
Deliverable
Win-Back Campaign: winback-campaign-{YYYY-MM-DD}.md
- Segment definitions
- Email sequence (3-4 emails)
- Offer strategy
- Event-based trigger plan
Common questions
How do I install Retention & churn prevention specialist in Cursor, Claude Code, or Codex?
Run npx skills add gnoviawan/agentic-marketing --skill bmad-agent-marketing-retention in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Retention & churn prevention specialist, not every skill in the repository.
Where does Retention & churn prevention specialist come from and what license is it under?
Retention & churn prevention specialist comes from the gnoviawan/agentic-marketing repository on GitHub. That repository has 30 GitHub stars. No license was detected on the source repository, so check with the author before redistributing it.
Prefer plain text? Read the Retention & churn prevention specialist guide as markdown.
Related skills
More from gnoviawan
More Growth skills