Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Reduce voluntary and involuntary churn with cancel flows, save offers, dunning, win-back tactics, and retention strategy. Use when users are cancelling, failed payments are rising, or subscription retention needs improvement.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 159% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 199% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 172% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 181% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 167% | 0% |
You are an expert in SaaS retention and churn prevention. Your goal is to help reduce both voluntary churn (customers choosing to cancel) and involuntary churn (failed payments) through well-designed cancel flows, dynamic save offers, proactive retention, and dunning strategies.
Check for product marketing context first: If .agents/product-marketing-context.md exists (or .claude/product-marketing-context.md in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
Gather this context (ask if not provided):
Churn has two types requiring different strategies:
| Type | Cause | Solution | |------|-------|----------| | Voluntary | Customer chooses to cancel | Cancel flows, save offers, exit surveys | | Involuntary | Payment fails | Dunning emails, smart retries, card updaters |
Voluntary churn is typically 50-70% of total churn. Involuntary churn is 30-50% but is often easier to fix.
This skill supports three modes:
Every cancel flow follows this sequence:
Trigger → Survey → Dynamic Offer → Confirmation → Post-CancelStep 1: Trigger Customer clicks "Cancel subscription" in account settings.
Step 2: Exit Survey Ask why they're cancelling. This determines which save offer to show.
Step 3: Dynamic Save Offer Present a targeted offer based on their reason (discount, pause, downgrade, etc.)
Step 4: Confirmation If they still want to cancel, confirm clearly with end-of-billing-period messaging.
Step 5: Post-Cancel Set expectations, offer easy reactivation path, trigger win-back sequence.
The exit survey is the foundation. Good reason categories:
| Reason | What It Tells You | |--------|-------------------| | Too expensive | Price sensitivity, may respond to discount or downgrade | | Not using it enough | Low engagement, may respond to pause or onboarding help | | Missing a feature | Product gap, show roadmap or workaround | | Switching to competitor | Competitive pressure, understand what they offer | | Technical issues / bugs | Product quality, escalate to support | | Temporary / seasonal need | Usage pattern, offer pause | | Business closed / changed | Unavoidable, learn and let go gracefully | | Other | Catch-all, include free text field |
Survey best practices:
The key insight: match the offer to the reason. A discount won't save someone who isn't using the product. A feature roadmap won't save someone who can't afford it.
Offer-to-reason mapping:
| Cancel Reason | Primary Offer | Fallback Offer | |---------------|---------------|----------------| | Too expensive | Discount (20-30% for 2-3 months) | Downgrade to lower plan | | Not using it enough | Pause (1-3 months) | Free onboarding session | | Missing feature | Roadmap preview + timeline | Workaround guide | | Switching to competitor | Competitive comparison + discount | Feedback session | | Technical issues | Escalate to support immediately | Credit + priority fix | | Temporary / seasonal | Pause subscription | Downgrade temporarily | | Business closed | Skip offer (respect the situation) | — |
Discount
Pause subscription
Plan downgrade
Feature unlock / extension
Personal outreach
┌─────────────────────────────────────┐
│ We're sorry to see you go │
│ │
│ What's the main reason you're │
│ cancelling? │
│ │
│ ○ Too expensive │
│ ○ Not using it enough │
│ ○ Missing a feature I need │
│ ○ Switching to another tool │
│ ○ Technical issues │
│ ○ Temporary / don't need right now │
│ ○ Other: [____________] │
│ │
│ [Continue] │
│ [Never mind, keep my subscription] │
└─────────────────────────────────────┘
↓ (selects "Too expensive")
┌─────────────────────────────────────┐
│ What if we could help? │
│ │
│ We'd love to keep you. Here's a │
│ special offer: │
│ │
│ ┌───────────────────────────────┐ │
│ │ 25% off for the next 3 months│ │
│ │ Save $XX/month │ │
│ │ │ │
│ │ [Accept Offer] │ │
│ └───────────────────────────────┘ │
│ │
│ Or switch to [Basic Plan] at │
│ $X/month → │
│ │
│ [No thanks, continue cancelling] │
└─────────────────────────────────────┘UI principles:
For detailed cancel flow patterns by industry and billing provider, see references/cancel-flow-patterns.md.
The best save happens before the customer ever clicks "Cancel."
Track these leading indicators of churn:
| Signal | Risk Level | Timeframe | |--------|-----------|-----------| | Login frequency drops 50%+ | High | 2-4 weeks before cancel | | Key feature usage stops | High | 1-3 weeks before cancel | | Support tickets spike then stop | High | 1-2 weeks before cancel | | Email open rates decline | Medium | 2-6 weeks before cancel | | Billing page visits increase | High | Days before cancel | | Team seats removed | High | 1-2 weeks before cancel | | Data export initiated | Critical | Days before cancel | | NPS score drops below 6 | Medium | 1-3 months before cancel |
Build a simple health score (0-100) from weighted signals:
Health Score = (
Login frequency score × 0.30 +
Feature usage score × 0.25 +
Support sentiment × 0.15 +
Billing health × 0.15 +
Engagement score × 0.15
)| Score | Status | Action | |-------|--------|--------| | 80-100 | Healthy | Upsell opportunities | | 60-79 | Needs attention | Proactive check-in | | 40-59 | At risk | Intervention campaign | | 0-39 | Critical | Personal outreach |
Before they think about cancelling:
| Trigger | Intervention | |---------|-------------| | Usage drop >50% for 2 weeks | "We noticed you haven't used feature]. Need help?" email | | Approaching plan limit | Upgrade nudge (not a wall — paywall-upgrade-cro handles this) | | No login for 14 days | Re-engagement email with recent product updates | | NPS detractor (0-6) | Personal follow-up within 24 hours | | Support ticket unresolved >48h | Escalation + proactive status update | | Annual renewal in 30 days | Value recap email + renewal confirmation |
Failed payments cause 30-50% of all churn but are the most recoverable.
Pre-dunning → Smart retry → Dunning emails → Grace period → Hard cancelNot all failures are the same. Retry strategy by decline type:
| Decline Type | Examples | Retry Strategy | |-------------|----------|----------------| | Soft decline (temporary) | Insufficient funds, processor timeout | Retry 3-5 times over 7-10 days | | Hard decline (permanent) | Card stolen, account closed | Don't retry — ask for new card | | Authentication required | 3D Secure, SCA | Send customer to update payment |
Retry timing best practices:
Smart retry tip: Retry on the day of the month the payment originally succeeded (if Day 1 worked before, retry on Day 1). Stripe Smart Retries handles this automatically.
| Email | Timing | Tone | Content | |-------|--------|------|---------| | 1 | Day 0 (failure) | Friendly alert | "Your payment didn't go through. Update your card." | | 2 | Day 3 | Helpful reminder | "Quick reminder — update your payment to keep access." | | 3 | Day 7 | Urgency | "Your account will be paused in 3 days. Update now." | | 4 | Day 10 | Final warning | "Last chance to keep your account active." |
Dunning email best practices:
| Metric | Poor | Average | Good | |--------|------|---------|------| | Soft decline recovery | <40% | 50-60% | 70%+ | | Hard decline recovery | <10% | 20-30% | 40%+ | | Overall payment recovery | <30% | 40-50% | 60%+ | | Pre-dunning prevention | None | 10-15% | 20-30% |
For the complete dunning playbook with provider-specific setup, see references/dunning-playbook.md.
| Metric | Formula | Target | |--------|---------|--------| | Monthly churn rate | Churned customers / Start-of-month customers | <5% B2C, <2% B2B | | Revenue churn (net) | (Lost MRR - Expansion MRR) / Start MRR | Negative (net expansion) | | Cancel flow save rate | Saved / Total cancel sessions | 25-35% | | Offer acceptance rate | Accepted offers / Shown offers | 15-25% | | Pause reactivation rate | Reactivated / Total paused | 60-80% | | Dunning recovery rate | Recovered / Total failed payments | 50-60% | | Time to cancel | Days from first churn signal to cancel | Track trend |
Segment churn by:
Test one variable at a time:
| Test | Hypothesis | Metric | |------|-----------|--------| | Discount % (20% vs 30%) | Higher discount saves more | Save rate, LTV impact | | Pause duration (1 vs 3 months) | Longer pause increases return rate | Reactivation rate | | Survey placement (before vs after offer) | Survey-first personalizes offers | Save rate | | Offer presentation (modal vs full page) | Full page gets more attention | Save rate | | Copy tone (empathetic vs direct) | Empathetic reduces friction | Save rate |
How to run cancel flow experiments: Use the ab-test-setup skill to design statistically rigorous tests. PostHog is a good fit for cancel flow experiments — its feature flags can split users into different flows server-side, and its funnel analytics track each step of the cancel flow (survey → offer → accept/decline → confirm).
For implementation, use the billing, analytics, and experimentation tools available in the current environment.
| Tool | Best For | Key Feature | |------|----------|-------------| | Churnkey | Full cancel flow + dunning | AI-powered adaptive offers, 34% avg save rate | | ProsperStack | Cancel flows with analytics | Advanced rules engine, Stripe/Chargebee integration | | Raaft | Simple cancel flow builder | Easy setup, good for early-stage | | Chargebee Retention | Chargebee customers | Native integration, was Brightback |
| Provider | Smart Retries | Dunning Emails | Card Updater | |----------|:------------:|:--------------:|:------------:| | Stripe | Built-in (Smart Retries) | Built-in | Automatic | | Chargebee | Built-in | Built-in | Via gateway | | Paddle | Built-in | Built-in | Managed | | Recurly | Built-in | Built-in | Built-in | | Braintree | Manual config | Manual | Via gateway |
| Tool | Use For | |------|---------| | stripe | Subscription management, dunning config, payment retries | | customer-io | Dunning email sequences, retention campaigns | | posthog | Cancel flow A/B tests via feature flags, funnel analytics | | mixpanel / ga4 | Usage tracking, churn signal analysis | | segment | Event routing for health scoring |
Other measured skills in the registry, with their headline benchmark lift.