438 lines
18 KiB
Markdown
438 lines
18 KiB
Markdown
---
|
||
name: churn-prevention
|
||
description: "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."
|
||
risk: unknown
|
||
source: "https://github.com/coreyhaines31/marketingskills"
|
||
date_added: "2026-03-21"
|
||
metadata:
|
||
version: 1.1.0
|
||
---
|
||
|
||
# Churn Prevention
|
||
|
||
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.
|
||
|
||
## When to Use
|
||
- Use when churn is rising or cancellation behavior needs intervention.
|
||
- Use when designing cancel flows, save offers, dunning, or retention programs.
|
||
- Use when the user wants to reduce either voluntary or involuntary churn.
|
||
|
||
## Before Starting
|
||
|
||
**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):
|
||
|
||
### 1. Current Churn Situation
|
||
- What's your monthly churn rate? (Voluntary vs. involuntary if known)
|
||
- How many active subscribers?
|
||
- What's the average MRR per customer?
|
||
- Do you have a cancel flow today, or does cancel happen instantly?
|
||
|
||
### 2. Billing & Platform
|
||
- What billing provider? (Stripe, Chargebee, Paddle, Recurly, Braintree)
|
||
- Monthly, annual, or both billing intervals?
|
||
- Do you support plan pausing or downgrades?
|
||
- Any existing retention tooling? (Churnkey, ProsperStack, Raaft)
|
||
|
||
### 3. Product & Usage Data
|
||
- Do you track feature usage per user?
|
||
- Can you identify engagement drop-offs?
|
||
- Do you have cancellation reason data from past churns?
|
||
- What's your activation metric? (What do retained users do that churned users don't?)
|
||
|
||
### 4. Constraints
|
||
- B2B or B2C? (Affects flow design)
|
||
- Self-serve cancellation required? (Some regulations mandate easy cancel)
|
||
- Brand tone for offboarding? (Empathetic, direct, playful)
|
||
|
||
---
|
||
|
||
## How This Skill Works
|
||
|
||
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:
|
||
|
||
1. **Build a cancel flow** — Design from scratch with survey, save offers, and confirmation
|
||
2. **Optimize an existing flow** — Analyze cancel data and improve save rates
|
||
3. **Set up dunning** — Failed payment recovery with retries and email sequences
|
||
|
||
---
|
||
|
||
## Cancel Flow Design
|
||
|
||
### The Cancel Flow Structure
|
||
|
||
Every cancel flow follows this sequence:
|
||
|
||
```
|
||
Trigger → Survey → Dynamic Offer → Confirmation → Post-Cancel
|
||
```
|
||
|
||
**Step 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.
|
||
|
||
### Exit Survey Design
|
||
|
||
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:**
|
||
- 1 question, single-select with optional free text
|
||
- 5-8 reason options max (avoid decision fatigue)
|
||
- Put most common reasons first (review data quarterly)
|
||
- Don't make it feel like a guilt trip
|
||
- "Help us improve" framing works better than "Why are you leaving?"
|
||
|
||
### Dynamic Save Offers
|
||
|
||
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) | — |
|
||
|
||
### Save Offer Types
|
||
|
||
**Discount**
|
||
- 20-30% off for 2-3 months is the sweet spot
|
||
- Avoid 50%+ discounts (trains customers to cancel for deals)
|
||
- Time-limit the offer ("This offer expires when you leave this page")
|
||
- Show the dollar amount saved, not just the percentage
|
||
|
||
**Pause subscription**
|
||
- 1-3 month pause maximum (longer pauses rarely reactivate)
|
||
- 60-80% of pausers eventually return to active
|
||
- Auto-reactivation with advance notice email
|
||
- Keep their data and settings intact
|
||
|
||
**Plan downgrade**
|
||
- Offer a lower tier instead of full cancellation
|
||
- Show what they keep vs. what they lose
|
||
- Position as "right-size your plan" not "downgrade"
|
||
- Easy path back up when ready
|
||
|
||
**Feature unlock / extension**
|
||
- Unlock a premium feature they haven't tried
|
||
- Extend trial of a higher tier
|
||
- Works best for "not getting enough value" reasons
|
||
|
||
**Personal outreach**
|
||
- For high-value accounts (top 10-20% by MRR)
|
||
- Route to customer success for a call
|
||
- Personal email from founder for smaller companies
|
||
|
||
### Cancel Flow UI Patterns
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ 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:**
|
||
- Keep the "continue cancelling" option visible (no dark patterns)
|
||
- One primary offer + one fallback, not a wall of options
|
||
- Show specific dollar savings, not abstract percentages
|
||
- Use the customer's name and account data when possible
|
||
- Mobile-friendly (many cancellations happen on mobile)
|
||
|
||
For detailed cancel flow patterns by industry and billing provider, see [references/cancel-flow-patterns.md](references/cancel-flow-patterns.md).
|
||
|
||
---
|
||
|
||
## Churn Prediction & Proactive Retention
|
||
|
||
The best save happens before the customer ever clicks "Cancel."
|
||
|
||
### Risk Signals
|
||
|
||
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 |
|
||
|
||
### Health Score Model
|
||
|
||
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 |
|
||
|
||
### Proactive Interventions
|
||
|
||
**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 |
|
||
|
||
---
|
||
|
||
## Involuntary Churn: Payment Recovery
|
||
|
||
Failed payments cause 30-50% of all churn but are the most recoverable.
|
||
|
||
### The Dunning Stack
|
||
|
||
```
|
||
Pre-dunning → Smart retry → Dunning emails → Grace period → Hard cancel
|
||
```
|
||
|
||
### Pre-Dunning (Prevent Failures)
|
||
|
||
- **Card expiry alerts**: Email 30, 15, and 7 days before card expires
|
||
- **Backup payment method**: Prompt for a second payment method at signup
|
||
- **Card updater services**: Visa/Mastercard auto-update programs (reduces hard declines 30-50%)
|
||
- **Pre-billing notification**: Email 3-5 days before charge for annual plans
|
||
|
||
### Smart Retry Logic
|
||
|
||
Not 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:**
|
||
- Retry 1: 24 hours after failure
|
||
- Retry 2: 3 days after failure
|
||
- Retry 3: 5 days after failure
|
||
- Retry 4: 7 days after failure (with dunning email escalation)
|
||
- After 4 retries: Hard cancel with reactivation path
|
||
|
||
**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.
|
||
|
||
### Dunning Email Sequence
|
||
|
||
| 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:**
|
||
- Direct link to payment update page (no login required if possible)
|
||
- Show what they'll lose (their data, their team's access)
|
||
- Don't blame ("your payment failed" not "you failed to pay")
|
||
- Include support contact for help
|
||
- Plain text performs better than designed emails for dunning
|
||
|
||
### Recovery Benchmarks
|
||
|
||
| 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](references/dunning-playbook.md).
|
||
|
||
---
|
||
|
||
## Metrics & Measurement
|
||
|
||
### Key Churn Metrics
|
||
|
||
| 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 |
|
||
|
||
### Cohort Analysis
|
||
|
||
Segment churn by:
|
||
- **Acquisition channel** — Which channels bring stickier customers?
|
||
- **Plan type** — Which plans churn most?
|
||
- **Tenure** — When do most cancellations happen? (30, 60, 90 days?)
|
||
- **Cancel reason** — Which reasons are growing?
|
||
- **Save offer type** — Which offers work best for which segments?
|
||
|
||
### Cancel Flow A/B Tests
|
||
|
||
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).
|
||
|
||
---
|
||
|
||
## Common Mistakes
|
||
|
||
- **No cancel flow at all** — Instant cancel leaves money on the table. Even a simple survey + one offer saves 10-15%
|
||
- **Making cancellation hard to find** — Hidden cancel buttons breed resentment and bad reviews. Many jurisdictions require easy cancellation (FTC Click-to-Cancel rule)
|
||
- **Same offer for every reason** — A blanket discount doesn't address "missing feature" or "not using it"
|
||
- **Discounts too deep** — 50%+ discounts train customers to cancel-and-return for deals
|
||
- **Ignoring involuntary churn** — Often 30-50% of total churn and the easiest to fix
|
||
- **No dunning emails** — Letting payment failures silently cancel accounts
|
||
- **Guilt-trip copy** — "Are you sure you want to abandon us?" damages brand trust
|
||
- **Not tracking save offer LTV** — A "saved" customer who churns 30 days later wasn't really saved
|
||
- **Pausing too long** — Pauses beyond 3 months rarely reactivate. Set limits.
|
||
- **No post-cancel path** — Make reactivation easy and trigger win-back emails, because some churned users will want to come back
|
||
|
||
---
|
||
|
||
## Tool Integrations
|
||
|
||
For implementation, use the billing, analytics, and experimentation tools available in the current environment.
|
||
|
||
### Retention Platforms
|
||
|
||
| 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 |
|
||
|
||
### Billing Providers (Dunning)
|
||
|
||
| 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 |
|
||
|
||
### Related CLI Tools
|
||
|
||
| 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 |
|
||
|
||
---
|
||
|
||
## Related Skills
|
||
|
||
- **email-sequence**: For win-back email sequences after cancellation
|
||
- **paywall-upgrade-cro**: For in-app upgrade moments and trial expiration
|
||
- **pricing-strategy**: For plan structure and annual discount strategy
|
||
- **onboarding-cro**: For activation to prevent early churn
|
||
- **analytics-tracking**: For setting up churn signal events
|
||
- **ab-test-setup**: For testing cancel flow variations with statistical rigor
|
||
|
||
## Limitations
|
||
- Use this skill only when the task clearly matches the scope described above.
|
||
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
|
||
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
|