Churn Prevention System Design
Purpose
This recipe builds an end-to-end churn prevention system: a multi-dimensional customer health score model, automated intervention triggers tied to score thresholds, a library of save plays mapped to churn reasons, and an involuntary churn recovery pipeline. The output is a live scoring system that flags at-risk accounts 30-90 days before cancellation and routes them to the correct intervention, reducing gross churn by 20-40%. [src1]
Prerequisites
- Product telemetry data (minimum 3 months) — event-level usage data including logins, feature usage, session depth
- Customer master list with contract values, renewal dates, segment tags from CRM/billing system
- Support ticket history from helpdesk platform — ticket volume, categories, resolution times, CSAT ratings
- NPS or CSAT survey data — at least one survey cycle completed (quarterly preferred)
- Payment/billing data — failed payment history, retry outcomes, card expiry dates
Constraints
- Health scores must be segment-specific — a single model across SMB and enterprise produces misleading signals. [src2]
- Minimum 50 churned accounts needed in historical data for statistically meaningful pattern identification. [src4]
- Score recalibration required every 90 days — product and market changes alter healthy usage patterns. [src5]
- Involuntary churn (payment failures) must comply with PCI DSS — never store raw card numbers in CS tooling. [src6]
- Save plays involving discounts require finance approval for offers exceeding 20% of ACV.
Tool Selection Decision
Which path?
├── No CS platform AND < 200 customers
│ └── PATH A: Spreadsheet Model — Google Sheets + manual triggers
├── No CS platform AND 200+ customers
│ └── PATH B: SQL + BI Tool — custom scoring via database queries + Metabase/Looker
├── CS platform available AND < 1000 customers
│ └── PATH C: CS Platform Standard — Gainsight/ChurnZero/Vitally native scoring
└── CS platform available AND 1000+ customers
└── PATH D: CS Platform + ML — platform scoring augmented with predictive models
| Path | Tools | Cost | Speed | Output Quality |
|---|---|---|---|---|
| A: Spreadsheet | Google Sheets, Zapier | $0-50/mo | 2-3 days setup | Basic — manual updates, limited automation |
| B: SQL + BI | PostgreSQL, Metabase/Looker | $0-500/mo | 1-2 weeks setup | Good — automated scoring, manual interventions |
| C: CS Platform | Gainsight/ChurnZero/Vitally | $2K-8K/mo | 1-2 weeks setup | Very good — automated scoring + triggers |
| D: CS + ML | CS platform + ML pipeline | $5K-20K/mo | 2-4 weeks setup | Excellent — predictive, self-calibrating |
Execution Flow
Step 1: Map Leading Indicators by Churn Reason
Duration: 4-8 hours · Tool: Spreadsheet or whiteboard
Analyze historical churn data to identify the top 5-7 reasons customers leave. For each reason, map the behavioral signals that preceded cancellation 30-90 days before the churn event. [src1]
USAGE SIGNALS (leading by 60-90 days):
- Login frequency decline > 40% vs. prior 30-day average
- Core feature adoption drop
- DAU/WAU ratio falling below 0.3
- Session depth declining
- Seat utilization below 50% of licensed seats
ENGAGEMENT SIGNALS (leading by 30-60 days):
- CSM email response time increasing > 48 hours
- Skipped QBRs or check-in meetings
- Champion/admin user goes inactive
- No executive sponsor engagement in 90+ days
SUPPORT SIGNALS (leading by 30-45 days):
- Support ticket volume spike > 2x baseline
- Repeat tickets on same issue
- CSAT on tickets dropping below 3.5/5
FINANCIAL SIGNALS (leading by 15-30 days):
- Payment failures
- Downgrade inquiries or seat reductions
- Requesting cancellation policy
SENTIMENT SIGNALS (leading by 30-90 days):
- NPS score drop > 2 points between surveys
- Detractor NPS score (0-6)
- Negative review sentiment
Verify: At least 5 distinct leading indicators identified per churn reason, confirmed against historical data. · If failed: Conduct 10-15 exit interviews with recently churned customers.
Step 2: Build the Health Score Model
Duration: 1-2 days · Tool: CS platform or spreadsheet
Construct a weighted composite score (0-100) across four dimensions. Weight allocation should reflect predictive power validated against historical churn data. [src2] [src5]
HEALTH SCORE MODEL (0-100):
Dimension 1: Product Engagement (weight: 35%)
- Login frequency, core feature adoption, breadth, session depth
Dimension 2: Relationship Quality (weight: 25%)
- CSM engagement, executive sponsor activity, QBR attendance
Dimension 3: Support Health (weight: 20%)
- Ticket volume trend (inverse), resolution satisfaction, escalation frequency
Dimension 4: Outcome & Sentiment (weight: 20%)
- NPS/CSAT, stated ROI achievement, renewal likelihood, growth trajectory
COMPOSITE = (D1 × 0.35) + (D2 × 0.25) + (D3 × 0.20) + (D4 × 0.20)
Verify: Back-test against 6 months of data — churned accounts should score below 40 at least 30 days before cancellation in >70% of cases. · If failed: Adjust dimension weights until back-test accuracy exceeds 70%.
Step 3: Set Intervention Triggers and Thresholds
Duration: 4-8 hours · Tool: CS platform automation
Define four health zones with trigger rules and response SLAs. [src2]
THRIVING (81-100): Move to expansion pipeline. SLA: 14 days.
HEALTHY (61-80): Standard cadence. Monthly check-in, quarterly QBR.
AT-RISK (41-60): Activate save play. SLA: outreach within 48 hours.
CRITICAL (0-40): Executive save play. SLA: outreach within 24 hours.
VELOCITY TRIGGERS (override zone-based):
- Score drops > 20 points in 7 days → immediate Critical treatment
- Champion user goes inactive → At-Risk regardless of score
- Payment failure → separate involuntary churn workflow
Verify: Triggers would have fired ≥30 days before actual churn for >60% of historical churned accounts. · If failed: Lower thresholds or add velocity triggers.
Step 4: Design Save Plays by Churn Reason
Duration: 1-2 days · Tool: Document + CS platform playbook builder
Create a save play for each top churn reason with trigger, owner, actions, timeline, and escalation path. [src1] [src4]
PLAY 1: Low Product Adoption
Trigger: Product Engagement < 30
Actions: Re-onboarding, best-practice workflows, solutions engineer sprint
Success: Product Engagement > 50 within 30 days
PLAY 2: Champion/Sponsor Departure
Trigger: Admin inactive > 14 days or marked as departed
Actions: New stakeholder identification, exec-to-exec outreach, ROI report
Success: New champion engaged within 21 days
PLAY 3: Support Frustration
Trigger: Support Health < 30 or 3+ escalations in 30 days
Actions: Ticket review, engineering escalation, executive apology, service credit
Success: All critical tickets resolved, CSAT > 4.0 within 14 days
PLAY 4: Price/Value Mismatch
Trigger: Downgrade inquiry or "too expensive" feedback
Actions: Value audit, ROI report, right-sized plan, retention offer
Success: Customer confirms renewal or accepts adjusted plan
PLAY 5: Competitive Threat
Trigger: Competitor mention or G2 comparison activity
Actions: Competitive intel, feature comparison, roadmap preview
Success: Competitor evaluation abandoned within 21 days
Verify: At least 5 save plays covering the most common churn reasons, each with clear triggers and success metrics.
Step 5: Implement Involuntary Churn Prevention (Dunning)
Duration: 4-8 hours · Tool: Billing platform + dunning tool
Payment failures account for up to 48% of all churn. Build a multi-channel dunning sequence with intelligent retry logic. [src6]
DAY 0: Classify decline (soft vs. hard). Soft: auto-retry in 24h.
DAY 1: Pre-dunning email with one-click payment update link.
DAY 3: Smart retry #2. If recovered, exit sequence.
DAY 5: In-app notification + email #2.
DAY 7: Smart retry #3 (final automated attempt).
DAY 10: Urgency email + SMS. Offer alternative payment methods.
DAY 14: Downgrade to free tier or pause (do NOT cancel).
DAY 30: Win-back email highlighting missed features.
DAY 60: Final win-back with incentive for high-value accounts.
Verify: Dunning recovers >50% of failed payments within 14 days. · If failed: Add SMS channel, test alternative retry timing, or switch to AI-powered retry engine.
Step 6: Build the Monitoring Dashboard
Duration: 4-8 hours · Tool: CS platform dashboard or BI tool
Build a live dashboard with health distribution, at-risk account queue, intervention effectiveness, churn metrics, leading indicator trends, and dunning recovery rates.
Verify: Dashboard updates daily. All four health zones represented with accurate counts. · If failed: Check data pipeline connections between analytics, CRM, and CS platform.
Output Schema
{
"output_type": "churn_prevention_system",
"format": "JSON",
"columns": [
{"name": "account_id", "type": "string", "required": true},
{"name": "health_score", "type": "number", "description": "Composite 0-100", "required": true},
{"name": "health_zone", "type": "string", "description": "thriving|healthy|at_risk|critical", "required": true},
{"name": "product_engagement_score", "type": "number", "required": true},
{"name": "relationship_quality_score", "type": "number", "required": true},
{"name": "support_health_score", "type": "number", "required": true},
{"name": "outcome_sentiment_score", "type": "number", "required": true},
{"name": "score_trend", "type": "string", "description": "improving|stable|declining", "required": true},
{"name": "active_save_play", "type": "string", "required": false},
{"name": "renewal_date", "type": "date", "required": true},
{"name": "arr", "type": "number", "required": true}
],
"sort_order": "health_score ascending",
"deduplication_key": "account_id"
}
Quality Benchmarks
| Quality Metric | Minimum Acceptable | Good | Excellent |
|---|---|---|---|
| Churn prediction accuracy (30-day) | > 60% flagged At-Risk | > 70% flagged | > 85% flagged |
| False positive rate | < 40% | < 25% | < 15% |
| Save play success rate | > 20% recovered | > 35% recovered | > 50% recovered |
| Involuntary churn recovery | > 40% recovered | > 55% recovered | > 70% recovered |
| Time to intervention | < 72 hours | < 48 hours | < 24 hours |
| Model back-test accuracy | > 65% | > 75% | > 85% |
| Score coverage | > 80% accounts | > 90% accounts | > 98% accounts |
If below minimum: Re-examine dimension weights. Most common cause is over-weighting lagging indicators (NPS) vs. leading indicators (usage trends). [src5]
Error Handling
| Error | Likely Cause | Recovery Action |
|---|---|---|
| Scores cluster around 50-60 | Metrics not normalized per segment | Segment accounts first, normalize within each segment, re-run |
| High false positive rate (>40%) | Engagement signals over-weighted for low-touch segments | Reduce engagement weight for enterprise, increase outcome weight |
| Save plays not triggered despite churn | Thresholds too conservative | Lower At-Risk threshold; add velocity triggers |
| Dunning recovery below 30% | Email-only dunning without retry optimization | Add in-app + SMS channels; use smart retry timing |
| Data gaps in scores | Missing integrations | Audit pipeline; implement fallback scoring with available dimensions |
| Scores not updating | API connection broken | Check webhook health; set up data freshness monitoring |
| Champion departure undetected | No user role tracking | Implement admin/champion tagging; monitor last-login of tagged users |
Cost Breakdown
| Component | Free Tier | Paid Tier | At Scale (1000+) |
|---|---|---|---|
| Health scoring engine | Spreadsheet ($0) | CS platform ($2K-8K/mo) | Enterprise CS ($10K-20K/mo) |
| Product analytics | PostHog free (1M events) | Mixpanel/Amplitude ($0-500/mo) | Enterprise ($1K-5K/mo) |
| Dunning/payment recovery | Stripe Smart Retries (included) | Churnkey ($100-300/mo) | Enterprise dunning ($300-1K/mo) |
| BI/dashboard | Metabase OSS ($0) | Looker/Tableau ($500-2K/mo) | Enterprise BI ($2K-5K/mo) |
| Total (200 accounts) | $0 | $2.5K-10K/mo | N/A |
| Total (1000+ accounts) | Not feasible | $5K-15K/mo | $15K-30K/mo |
Anti-Patterns
Wrong: Single Universal Health Score for All Segments
Applying the same scoring model to SMB and enterprise accounts produces misleading results. Segment-specific scores achieve 15-20% higher prediction accuracy. [src1]
Correct: Segment-Specific Models
Build separate scoring models or normalization baselines per segment. Enterprise weights relationship quality and outcome metrics higher; SMB weights product engagement higher.
Wrong: Reacting to Score Drops Without Root Cause Analysis
Triggering save plays based on score drops alone leads to generic outreach that customers ignore. A drop from 75 to 55 could mean lost champion, product bug, or budget freeze. [src2]
Correct: Diagnose Before Intervening
When a score drops into At-Risk, examine which dimension(s) drove the decline. Route to the specific save play matching the root cause.
Wrong: Treating Involuntary Churn as Voluntary
Sending "we're sorry to see you go" messaging to customers with expired credit cards destroys trust. Payment failures account for up to 48% of churn and are almost entirely preventable. [src6]
Correct: Separate Involuntary Churn Pipeline
Route all payment failures to the dunning workflow. Tone should be helpful and transactional. Offer multiple payment alternatives with frictionless update links.
Churn Rate Benchmarks (2025-2026)
| Segment | Monthly Churn (Good) | Monthly (Median) | Annual (Good) | NRR Target |
|---|---|---|---|---|
| Enterprise (>$50K ACV) | < 0.5% | 0.5-1.0% | < 5% | > 120% |
| Mid-Market ($10K-$50K) | < 1.0% | 1.0-2.0% | < 10% | > 110% |
| SMB (<$10K ACV) | < 2.0% | 3.0-5.0% | < 20% | > 100% |
| Self-Serve / PLG | < 3.0% | 4.0-7.0% | < 30% | > 95% |
Median B2B SaaS annual churn is 3.5% for companies above $10M ARR. [src3] [src4]
When This Matters
Use this recipe when a SaaS company has at least 50 customers, 3+ months of product telemetry, and is experiencing churn above segment benchmarks — or wants to build proactive retention infrastructure before churn becomes a crisis. This produces a working health scoring system, intervention playbooks, and dunning sequences that reduce churn within 90 days.