{"id":"churn-prevention","name":"churn-prevention","summary":"SaaSのチャーン削減には、キャンセルフロー設計、動的セーブオファー、出口調査アーキテクチャ、ダニングシーケンス、支払い回収、ウィンバックキャンペーン、チャーン影響モデリングが含まれます。","body":"# Churn Prevention\n\nProduction-grade SaaS churn reduction framework covering cancel flow architecture, dynamic save offer mapping, exit survey design, dunning sequence engineering, payment recovery optimization, win-back campaigns, and churn impact modeling. Addresses both voluntary churn (customers who decide to leave) and involuntary churn (customers who leave due to payment failure).\n\n---\n\n## Table of Contents\n\n- [Initial Assessment](#initial-assessment)\n- [Churn Taxonomy](#churn-taxonomy)\n- [Cancel Flow Architecture](#cancel-flow-architecture)\n- [Exit Survey Design](#exit-survey-design)\n- [Dynamic Save Offer System](#dynamic-save-offer-system)\n- [Dunning Sequence Engineering](#dunning-sequence-engineering)\n- [Win-Back Campaign Framework](#win-back-campaign-framework)\n- [Churn Health Scoring](#churn-health-scoring)\n- [Metrics and Benchmarks](#metrics-and-benchmarks)\n- [Churn Impact Calculator](#churn-impact-calculator)\n- [Output Artifacts](#output-artifacts)\n- [Related Skills](#related-skills)\n\n---\n\n## Clarify First\n\nBefore designing the churn-prevention system, confirm these inputs. If any is unknown or vague, ASK — do not assume:\n\n- [ ] **Voluntary vs involuntary churn split** — which dominates (determines whether to build cancel flow/save offers or dunning/payment recovery)\n- [ ] **Existing cancel flow vs instant/support cancellation** — sets build-from-scratch vs optimize mode\n- [ ] **Current MRR + ARPU + billing cycle** — sizes the dollar impact and the save-offer budget\n- [ ] **Payment processor** — Stripe / Braintree / Paddle / Recurly (determines card-updater and dunning retry implementation)\n\nStop rule: ask only the 2-3 that most change the output. If the user says \"just draft it,\" proceed and list your assumptions at the top of the deliverable.\n\n## Initial Assessment\n\n### Required Context\n\n| Question | Why It Matters |\n|----------|---------------|\n| Current monthly churn rate? (voluntary vs involuntary split) | Determines which lever to pull |\n| Do you have a cancel flow, or is cancellation instant/via support? | Determines build vs optimize mode |\n| What payment processor? (Stripe, Braintree, Paddle) | Affects dunning implementation |\n| Average contract value and billing cycle? | Sizes the save offer budget |\n| Current MRR? | Calculates the dollar impact of churn reduction |\n| SaaS model? (self-serve vs sales-assisted) | Determines intervention type |\n| Do you collect exit reasons today? | Data availability for save offer mapping |\n\n---\n\n## Churn Taxonomy\n\n### Voluntary Churn (Customer Decides to Leave)\n\n| Type | Signal | Addressable? |\n|------|--------|-------------|\n| Value gap | Not getting enough value for the price | Yes -- save offers, feature education |\n| Product-market mismatch | Wrong ICP, product does not fit their use case | Partially -- downgrade or pivot |\n| Competitor switch | Found a better alternative | Yes -- competitive counter-offers |\n| Budget cut | Cannot afford it anymore | Yes -- discount or pause |\n| Project completion | Seasonal or project-based need | Yes -- pause option |\n| Poor experience | Bad support, bugs, frustration | Yes -- human intervention |\n| Never activated | Signed up, never used it | Partially -- reactivation before cancel |\n\n### Involuntary Churn (Payment Fails)\n\n| Cause | % of Failed Payments | Recoverable? |\n|-------|---------------------|-------------|\n| Expired card | 40-50% | Yes -- card updater service |\n| Insufficient funds | 20-30% | Yes -- smart retry timing |\n| Bank decline (fraud flag) | 10-15% | Sometimes -- customer must contact bank |\n| Account closed | 5-10% | No -- customer must provide new card |\n| Network error | 5-10% | Yes -- automatic retry |\n\n---\n\n## Cancel Flow Architecture\n\n### The 5-Stage Cancel Flow\n\n```\n[Cancel Button] → [Exit Survey] → [Dynamic Save Offer] → [Confirmation] → [Post-Cancel]\n```\n\n### Stage 1: Cancel Trigger\n\n- Cancel option is findable (Settings > Account > Cancel). Do not hide it.\n- Clicking \"Cancel\" starts the flow -- it does not immediately cancel the account\n- Works on both desktop and mobile\n\n### Stage 2: Exit Survey (Required, 1 Question)\n\n**Question:** \"What is the main reason you are cancelling?\"\n\nPresent as radio buttons (not a dropdown). Maximum 8 options:\n\n| Reason | Internal Code |\n|--------|--------------|\n| Too expensive for the value I get | PRICE |\n| Not using it enough | LOW_USAGE |\n| Missing a feature I need | MISSING_FEATURE |\n| Switching to a different product | COMPETITOR |\n| My project or need ended | PROJECT_END |\n| Too complicated to use | COMPLEXITY |\n| Just testing, did not plan to keep it | TESTING |\n| Other (with optional text field) | OTHER |\n\n**Rules:**\n- Survey is required before showing the save offer (the answer determines the offer)\n- One question only. No multi-page surveys.\n- Optional free-text field for \"Other\" and as a supplement to any selection\n- Track response distribution monthly to identify systemic issues\n\n### Stage 3: Dynamic Save Offer\n\n**Map each exit reason to exactly one save offer:**\n\n| Exit Reason | Save Offer | Offer Copy |\n|------------|-----------|------------|\n| PRICE | 30-50% discount for 2-3 months | \"We'd like to offer you [X]% off for the next [N] months\" |\n| LOW_USAGE | Pause account for 1-3 months | \"Pause your account and come back when you need it\" |\n| MISSING_FEATURE | Roadmap preview + workaround | \"[Feature] is coming in [Q]. Here's how to achieve it now\" |\n| COMPETITOR | Competitive comparison + discount | \"Here's how we compare to [competitor]. Plus [X]% off\" |\n| PROJECT_END | Pause option | \"Pause instead of cancel -- your data stays safe\" |\n| COMPLEXITY | Free onboarding session | \"Let us set it up for you -- free 30-min session with our team\" |\n| TESTING | No offer -- let them go | \"Thanks for trying us out. You're welcome back anytime.\" |\n| OTHER | General retention offer | \"Before you go -- we'd love to make this right. [Contact support]\" |\n\n**Offer presentation rules:**\n- One clear offer per screen (not multiple choices)\n- Quantify the value: \"Save $120 over the next 3 months\" not \"Get a discount\"\n- CTA: \"Accept Offer\" vs \"Continue Cancelling\" (both clearly labeled)\n- No countdown timers, no fake urgency\n- No guilt-trip copy\n\n### Stage 4: Confirmation\n\nIf they decline the save offer or there is no offer to make:\n\n```\n┌────────────────────────────────────────┐\n│  We're sorry to see you go             │\n│                                        │\n│  What happens when you cancel:         │\n│  - Your data is saved for 90 days     │\n│  - Access continues until [date]      │\n│  - You can reactivate anytime         │\n│                                        │\n│  [Yes, Cancel My Account]             │\n│  [Wait, I Changed My Mind]            │\n│                                        │\n│  No pre-checked boxes.                │\n│  No confusing language.               │\n└────────────────────────────────────────┘\n```\n\n### Stage 5: Post-Cancel\n\n| Timing | Channel | Message |\n|--------|---------|---------|\n| Immediately | Email | Cancellation confirmation + data retention policy + reactivation link |\n| Day 7 | Email | \"We miss you\" + single CTA to reactivate + what they are missing |\n| Day 30 | Email | Product update + relevant improvement + reactivation offer |\n| Day 60 | Email | Final win-back with strongest offer (if applicable) |\n\n---\n\n## Exit Survey Design\n\n### Data Analysis Framework\n\nTrack exit survey responses monthly and calculate:\n\n| Metric | Formula | Action Threshold |\n|--------|---------|-----------------|\n| Reason distribution | % of cancels per reason | Any reason > 30% = systemic issue |\n| Save rate by reason | Saved / Cancel attempts per reason | Any reason < 5% save rate = wrong offer |\n| Reason trend | Month-over-month change | Increasing trend = worsening problem |\n| Feature gap frequency | Count of \"missing feature\" with specific feature named | Top 3 missing features = product roadmap input |\n\n### Competitive Intelligence from Exit Surveys\n\nWhen users select \"Switching to a different product\":\n\n- Ask a follow-up: \"Which product are you switching to?\" (optional, free text or dropdown)\n- Track the top 3 competitors winning your churners\n- Feed this data into competitive-teardown skill for quarterly analysis\n\n---\n\n## Dynamic Save Offer System\n\n### Offer Economics\n\n| Offer Type | Cost to Business | Save Rate Benchmark | When Profitable |\n|-----------|-----------------|---------------------|----------------|\n| 30% discount (3 months) | 30% of 3 months revenue | 15-25% | If LTV after save > discount cost |\n| 50% discount (2 months) | 50% of 2 months revenue | 20-30% | If retained customer stays 6+ months |\n| Pause (1-3 months) | $0 (no revenue during pause) | 25-40% | If 50%+ reactivate after pause |\n| Free onboarding session | CS team time (~$50-100) | 10-20% | If ARPU > $100/month |\n| Downgrade to lower tier | Revenue reduction | 30-50% | If some revenue > no revenue |\n| Feature unlock | $0 (already built) | 5-15% | Always profitable |\n\n### Save Offer Decision Tree\n\n```\nUser selects exit reason →\n├── PRICE →\n│   ├── Customer ARPU > median? → Offer 30% discount\n│   └── Customer ARPU < median? → Offer downgrade to cheaper plan\n├── LOW_USAGE →\n│   ├── Last login > 30 days? → Offer pause\n│   └── Last login < 30 days? → Offer usage tips + discount\n├── MISSING_FEATURE →\n│   ├── Feature on roadmap? → Share roadmap + workaround\n│   └── Feature not planned? → Offer discount or acknowledge gap\n├── COMPETITOR →\n│   ├── Known competitor? → Show comparison + retention offer\n│   └── Unknown competitor? → General retention offer\n├── PROJECT_END →\n│   └── Always → Offer pause\n├── COMPLEXITY →\n│   ├── Enterprise/high-value? → Offer dedicated onboarding session\n│   └── SMB/low-value? → Offer guided tutorial link\n└── TESTING →\n    └── Always → No offer, let go gracefully\n```\n\n---\n\n## Dunning Sequence Engineering\n\nFailed payments cause 20-40% of total churn. Most of it is recoverable with proper dunning.\n\n### Smart Retry Schedule\n\nDo not retry immediately after failure. Cards often recover within 3-7 days.\n\n| Retry | Timing | Why This Timing |\n|-------|--------|-----------------|\n| Initial charge | Day 0 | Normal billing cycle |\n| Retry 1 | Day 3 | Most card issues resolve within 72 hours |\n| Retry 2 | Day 7 | Paycheck cycle alignment |\n| Retry 3 | Day 12 | Second paycheck cycle |\n| Retry 4 | Day 18 | Final attempt before service action |\n| Service action | Day 21 | Downgrade or cancel |\n\n### Card Updater Services\n\nEnable automatic card updating to prevent expired card churn:\n\n| Processor | Service | How to Enable |\n|-----------|---------|---------------|\n| Stripe | Automatic card updates | Enabled by default on most plans |\n| Braintree | Account Updater | Must enable in merchant settings |\n| Paddle | Built-in | Automatic |\n| Recurly | Account Updater | Configuration required |\n\n### Dunning Email Sequence\n\n| Day | Subject Line | Body Focus | CTA |\n|-----|-------------|-----------|-----|\n| 0 | \"Your [Product] payment didn't go through\" | Factual, no blame. Card may be expired or funds unavailable. | [Update Payment Method] |\n| 3 | \"Action needed: update your payment for [Product]\" | Remind what they will lose access to. | [Update Payment Method] |\n| 7 | \"Your [Product] account is at risk\" | List features/data they have created. Mild urgency. | [Update Payment Method] |\n| 14 | \"Final notice: your [Product] access ends in 7 days\" | Clear deadline. Offer to help if bank issue. | [Update Payment Method] + [Contact Support] |\n| 21 | \"Your [Product] account has been paused\" | Account status change. Data is safe. Easy reactivation. | [Reactivate Account] |\n\n**Email rules:**\n- Every email links directly to the payment update page (not the dashboard)\n- No guilt, no shame. Card failures happen.\n- Subject lines are specific (include product name)\n- Include the amount owed and the card last 4 digits\n- Offer a support channel for customers who need help\n\n---\n\n## Win-Back Campaign Framework\n\n### Win-Back Timing\n\n| Window | Success Rate | Approach |\n|--------|-------------|---------|\n| Day 7 post-cancel | 5-10% | Gentle reminder, no pressure |\n| Day 30 post-cancel | 3-7% | Product update + offer |\n| Day 60 post-cancel | 2-5% | Strongest offer + fresh start |\n| Day 90+ post-cancel | 1-3% | Major product change only |\n\n### Win-Back Email Sequence\n\n**Day 7 Email:**\n- Subject: \"Your [Product] account is waiting for you\"\n- Body: What they left behind (data, projects, team). One CTA: reactivate.\n- No discount. Just value reminder.\n\n**Day 30 Email:**\n- Subject: \"Here's what's new in [Product]\"\n- Body: 2-3 specific improvements since they left. One CTA: reactivate.\n- Small incentive: \"Come back with 1 month free\"\n\n**Day 60 Email:**\n- Subject: \"We'd love to have you back -- [offer]\"\n- Body: Strongest offer (50% off 3 months or extended free period). Clear deadline.\n- Final significant outreach attempt.\n\n---\n\n## Churn Health Scoring\n\n### Leading Indicators of Churn\n\n| Signal | Weight | Detection |\n|--------|--------|-----------|\n| Login frequency declining (week over week) | High | Usage analytics |\n| Feature usage dropping | High | Feature event tracking |\n| Support ticket escalation | High | Help desk data |\n| NPS response < 7 | High | Survey data |\n| Invoice dispute or payment question | Medium | Billing system |\n| Champion left the company | High | Contact monitoring |\n| Contract renewal in < 90 days | Medium | CRM data |\n| Competitor evaluation detected | High | Sales intelligence |\n\n### Risk Score Calculation\n\n```\nRisk Score = Sum of (Signal Weight x Signal Present)\n\n0-20: Low risk (monitor)\n21-40: Moderate risk (proactive outreach)\n41-60: High risk (intervention required)\n61+: Critical risk (executive escalation)\n```\n\n---\n\n## Metrics and Benchmarks\n\n### Key Metrics\n\n| Metric | Formula | Good | Excellent |\n|--------|---------|------|-----------|\n| Save rate | Customers saved / Cancel attempts | 10-15% | 20%+ |\n| Voluntary churn rate | Voluntary cancels / Total customers (monthly) | < 3% | < 1.5% |\n| Involuntary churn rate | Failed payment cancels / Total customers (monthly) | < 1.5% | < 0.5% |\n| Payment recovery rate | Failed payments recovered / Total failed | 25-35% | 40%+ |\n| Win-back rate | Reactivations / Cancellations (90-day window) | 5-10% | 10%+ |\n| Exit survey completion rate | Surveys completed / Cancel attempts | > 70% | > 90% |\n| Save offer acceptance rate | Offers accepted / Offers shown | 15-25% | 30%+ |\n\n### Red Flags\n\n| Signal | Diagnosis | Action |\n|--------|-----------|--------|\n| Save rate < 5% | Offers not matching reasons | Rebuild offer-reason mapping |\n| Exit survey completion < 60% | Survey too long or optional | Make it required, 1 question |\n| Recovery rate < 20% | Retry logic or emails broken | Audit dunning sequence |\n| Single reason > 40% | Systemic product/pricing issue | Escalate to product/leadership |\n| Churn rate > 5% monthly | Business is likely contracting | Churn prevention alone will not fix; review ICP + product |\n\n---\n\n## Churn Impact Calculator\n\n### Quick Estimate\n\n```\nMonthly MRR at risk = Total MRR x Monthly churn rate\nAnnual MRR saved by 1% churn reduction = Total MRR x 0.01 x 12\nAnnual MRR saved by 20% save rate = (Monthly MRR at risk x 0.20) x 12\n\nExample:\n  MRR: $500,000\n  Monthly churn: 4% = $20,000/month lost\n  Reduce to 3% = $5,000/month saved = $60,000/year\n  Add 20% save rate on remaining = $3,000/month saved = $36,000/year\n  Total annual impact: $96,000\n```\n\n---\n\n## Output Artifacts\n\n| Artifact | Format | Description |\n|----------|--------|-------------|\n| Cancel Flow Design | 5-stage flow with copy | Complete flow from trigger to post-cancel |\n| Exit Survey | Radio button options + mapping | 6-8 reasons with save offer mapping |\n| Save Offer System | Decision tree | Reason-to-offer mapping with economics |\n| Dunning Sequence | 5-email sequence | Subject lines, body copy, timing, retry schedule |\n| Win-Back Campaign | 3-email sequence | Day 7, 30, 60 emails with subject lines and offers |\n| Churn Scorecard | Metric table | Current metrics vs benchmarks with gap analysis |\n| Impact Model | Revenue calculation | Dollar impact of churn reduction at various improvement levels |\n\n---\n\n## Related Skills\n\n- **customer-success-manager** -- Use for health scoring, QBRs, and expansion revenue. Not for cancel flow or dunning design.\n- **pricing-strategy** -- Use when churn root cause is pricing or packaging mismatch. Not for save offer design.\n- **onboarding-cro** -- Use when churn traces back to poor activation. If users never experienced value, fix onboarding first.\n- **referral-program** -- Use for acquisition. Churn prevention handles the other end of the funnel.\n\n---\n\n## Tool Reference\n\n### 1. churn_impact_calculator.py\n\n**Purpose:** Calculate the revenue impact of churn reduction at various improvement levels.\n\n```bash\npython scripts/churn_impact_calculator.py --mrr 500000 --churn-rate 4.0 --save-rate 20\npython scripts/churn_impact_calculator.py --mrr 500000 --churn-rate 4.0 --save-rate 20 --json\n```\n\n| Flag | Required | Description |\n|------|----------|-------------|\n| `--mrr` | Yes | Current monthly recurring revenue in dollars |\n| `--churn-rate` | Yes | Current monthly churn rate as percentage (e.g., 4.0 for 4%) |\n| `--save-rate` | No | Cancel flow save rate as percentage (default: 15) |\n| `--target-churn` | No | Target churn rate as percentage (default: current minus 1) |\n| `--json` | No | Output results as JSON |\n\n### 2. dunning_sequence_analyzer.py\n\n**Purpose:** Analyze dunning email sequence effectiveness and recommend retry timing optimizations.\n\n```bash\npython scripts/dunning_sequence_analyzer.py dunning_data.json\npython scripts/dunning_sequence_analyzer.py dunning_data.json --json\n```\n\n| Flag | Required | Description |\n|------|----------|-------------|\n| `dunning_data.json` | Yes | JSON file with failed payment and retry data |\n| `--json` | No | Output results as JSON |\n\n**Input JSON format:**\n```json\n{\n  \"failed_payments\": [\n    {\n      \"payment_id\": \"PAY-001\",\n      \"amount\": 99.00,\n      \"failure_reason\": \"expired_card\",\n      \"retry_attempts\": [\n        {\"day\": 0, \"recovered\": false},\n        {\"day\": 3, \"recovered\": false},\n        {\"day\": 7, \"recovered\": true}\n      ]\n    }\n  ]\n}\n```\n\n### 3. exit_survey_analyzer.py\n\n**Purpose:** Analyze exit survey responses to identify churn patterns, save offer effectiveness, and systemic issues.\n\n```bash\npython scripts/exit_survey_analyzer.py survey_data.json\npython scripts/exit_survey_analyzer.py survey_data.json --json\n```\n\n| Flag | Required | Description |\n|------|----------|-------------|\n| `survey_data.json` | Yes | JSON file with exit survey response data |\n| `--json` | No | Output results as JSON |\n| `--period` | No | Analysis period label (default: \"current\") |\n\n---\n\n## Troubleshooting\n\n| Problem | Likely Cause | Solution |\n|---------|-------------|----------|\n| Save rate below 5% across all reasons | Save offers do not match exit reasons | Rebuild the exit-reason-to-offer mapping using survey data; run exit_survey_analyzer.py to identify mismatches |\n| Exit survey completion under 60% | Survey is optional or too long | Make the single-question survey required before showing the save offer; remove multi-page flows |\n| Payment recovery rate below 20% | Retry logic misconfigured or dunning emails not sending | Audit dunning sequence with dunning_sequence_analyzer.py; verify email deliverability and retry schedule |\n| Single exit reason exceeds 40% of responses | Systemic product or pricing issue | Escalate to product or leadership; this is not solvable with cancel flow alone |\n| Churn rate above 5% monthly | Likely ICP, product-market fit, or pricing problem | Churn prevention alone will not fix this; pair with pricing-strategy and product feedback loops |\n| Win-back emails have zero reactivations | Emails not reaching inbox or offers are weak | Check deliverability (SPF, DKIM, DMARC); test stronger offers; verify reactivation links work |\n| Involuntary churn rising while voluntary is stable | Card updater not enabled or retry timing is poor | Enable automatic card updating on your payment processor; review retry schedule in dunning_sequence_analyzer.py |\n\n---\n\n## Success Criteria\n\n- Monthly voluntary churn rate below 2.5% (below 1.5% is excellent)\n- Monthly involuntary churn rate below 1.0% (below 0.5% is excellent)\n- Cancel flow save rate of 15-25% (above 20% is excellent)\n- Payment recovery rate of 30%+ on failed payments\n- Exit survey completion rate above 80%\n- Win-back reactivation rate of 5-10% within 90 days post-cancel\n- Save offer acceptance rate above 20% with retained customers staying 6+ months post-save\n\n---\n\n## Scope & Limitations\n\n- **In scope:** Cancel flow design, exit survey architecture, save offer mapping, dunning sequences, payment recovery, win-back campaigns, churn impact modeling\n- **Out of scope:** Product-market fit analysis, pricing restructuring, ICP redefinition, customer acquisition\n- **Data dependency:** Scripts analyze point-in-time snapshots from JSON input; no real-time CRM integration\n- **Not predictive ML:** All scoring is deterministic and algorithmic -- no machine learning models\n- **Legal note:** Cancel flows must comply with FTC guidelines (US) and consumer protection laws (EU) -- do not make cancellation unreasonably difficult\n- **Revenue estimates:** Impact calculations are projections based on input assumptions, not guarantees\n\n---\n\n## Integration Points\n\n- **customer-success-manager** -- Feed health scores into churn risk assessment; use churn data to calibrate health score thresholds\n- **pricing-strategy** -- When exit survey data shows PRICE as the dominant reason (>30%), escalate to pricing-strategy for structural pricing review\n- **onboarding-cro** -- When exit survey data shows LOW_USAGE or COMPLEXITY as top reasons, the root cause is often poor activation; fix onboarding first\n- **revenue-operations** -- Pipeline and forecast models should account for churn reduction impact on net revenue retention (NRR)\n- **referral-program** -- Retained customers from save offers are candidates for referral program enrollment after 90 days of continued usage","author":"@borghei","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/borghei/Claude-Skills/tree/main/business-growth/churn-prevention","license":"MIT","category":"research","lang":"en","tokens":5337,"stars":0,"calls30d":1,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"scripts/churn_impact_calculator.py","size":8766,"sha256":"e7d3ce6f8fc7d5cc1e8d9a1538a494cc80e3ddde500166face613c4aeaf04ed0"},{"path":"scripts/dunning_sequence_analyzer.py","size":9791,"sha256":"e9abe057fec41249a77ce8d697c57826b02f3915514cf56630aa48490d7b5bca"},{"path":"scripts/exit_survey_analyzer.py","size":10009,"sha256":"7b8366d886109e5b81a9cba93583cf5e63b8b442cf0d1d1a154b3908c2371aad"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":true,"networkEndpoints":[]}}