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]
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 |
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.
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%.
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.
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.
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.
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_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 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 | 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 |
| 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 |
Applying the same scoring model to SMB and enterprise accounts produces misleading results. Segment-specific scores achieve 15-20% higher prediction accuracy. [src1]
Build separate scoring models or normalization baselines per segment. Enterprise weights relationship quality and outcome metrics higher; SMB weights product engagement higher.
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]
When a score drops into At-Risk, examine which dimension(s) drove the decline. Route to the specific save play matching the root cause.
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]
Route all payment failures to the dunning workflow. Tone should be helpful and transactional. Offer multiple payment alternatives with frictionless update links.
| 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]
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.