Most SaaS founders find out a customer is churning when the cancellation email lands. By then, it's too late. The decision was made weeks ago — in the silent period where usage dropped, support tickets went unanswered, and the champion stopped logging in.
A customer health score flips this dynamic. Instead of reacting to churn, you predict it 60 days out and intervene while there's still time to save the account.
I've built health scoring systems for three B2B SaaS companies, from scrappy Google Sheets setups to enterprise-grade Gainsight implementations. This guide covers the framework, the weighting model, threshold design, and a lightweight approach for solo founders.
What a Customer Health Score Actually Is
A health score is a single number (usually 0–100 or a red/yellow/green rating) representing the likelihood a customer will renew, expand, or churn. It's calculated from multiple signals — product usage, support interactions, payment history, sentiment — weighted by how predictive each signal is of churn.
The score isn't magic. It's a structured way to aggregate signals you're probably already tracking but not connecting. The value comes from the systematic approach: every customer gets scored on the same dimensions, and the thresholds trigger action.
The Five Dimensions of Customer Health
1. Product Usage (Weight: 35–45%)
The strongest predictor of churn. If a customer isn't using your product, they will churn. The signals that matter most:
- Active days per week — A customer using your product 4+ days/week is dramatically less likely to churn than one logging in once a week.
- Feature breadth — Customers using 1 feature churn at 3x the rate of customers using 3+.
- Usage trend (30-day vs. previous 30-day) — Direction matters more than absolute number. A 40% month-over-month drop is a red flag even if absolute usage is decent.
- Key action completion — Define 2–3 actions correlating with retention (e.g., "invited a teammate," "created a second project"). Track completion.
How to score: Normalize each metric to 0–100, then average. Example: 5 days/week (100), 2 of 4 features (50), flat usage trend (75) → usage score = 75.
2. Support and Engagement (Weight: 15–20%)
Counterintuitively, customers who file support tickets are healthier — they're engaged enough to ask for help. Watch for:
- Ticket sentiment — Escalating frustration? Use a simple positive/neutral/negative tag.
- Resolution time — Long resolution times correlate with churn, especially with expressed dissatisfaction.
- Silent customers — Those who went from active support engagement to zero tickets are often disengaging, not satisfied.
- Open bug reports — Unresolved bugs affecting core workflows are a major churn risk.
Red flag pattern: 3+ tickets in month 1, zero tickets in month 2, 30% usage drop. They didn't get happier — they gave up.
3. Payment History (Weight: 10–15%)
- Failed payments — Any failure in the last 90 days lowers the score. Multiple failures are a stronger signal.
- Discounts expiring — Customers on promotional discounts may churn when prices increase.
- Downgrade history — A customer who downgraded in the last 6 months is 2.5x more likely to churn (Recurly data).
- Billing complaints — Any ticket mentioning pricing, ROI, or budget concerns.
4. Sentiment and Feedback (Weight: 15–20%)
- NPS score — Promoters (9–10) are safe. Passives (7–8) are at risk. Detractors (0–6) need immediate intervention.
- CSAT after support interactions — Track satisfaction after each ticket resolution.
- Champion engagement — Is your primary contact still responding? A champion who goes dark is one of the strongest churn signals.
- Survey non-responses — If you send quarterly health checks, silence is itself a signal.
5. Relationship and Commercial (Weight: 10–15%)
- Time since last check-in — 90+ days without contact means the relationship is weakening.
- Contract timeline — Customers within 90 days of renewal should be scored more frequently.
- Stakeholder changes — Did your champion leave? This is a top-3 churn reason in B2B SaaS.
- Expansion activity — Customers who added seats or upgraded in the last 6 months are healthier. Stagnant accounts are at risk.
Weighting: How to Allocate Points
The weights above are starting points, not gospel. Here's how to calibrate:
Step 1: Pull churned customers from the last 12 months. For each, look at the 60 days before cancellation and identify which signals were present.
Step 2: Calculate signal correlation. What percentage of churned customers showed a negative signal in each dimension? If 80% had declining usage but only 40% had payment issues, usage gets more weight.
Step 3: Adjust quarterly. As your product evolves, predictive signals change.
Here's a practical example from a project management SaaS:
| Dimension | Weight | Churn Correlation |
|---|---|---|
| Product usage | 40% | 82% showed declining usage |
| Support engagement | 15% | 55% showed engagement drop-off |
| Payment history | 10% | 28% had a failed payment |
| Sentiment (NPS) | 20% | 67% were passives or detractors |
| Relationship | 15% | 48% had no contact in 60+ days |
Threshold Design: Red, Yellow, Green
Once you have a composite score (0–100), set thresholds:
- Green (70–100): Healthy. Renewal likely. Focus on expansion.
- Yellow (40–69): At risk. Needs attention within 2 weeks.
- Red (0–39): Critical. Needs intervention within 48 hours. Executive escalation for high-value accounts.
Start with simple thirds. After 6 months of data, refine based on actual renewal outcomes.
One critical addition: auto-flag any score dropping 20+ points in a single month, regardless of absolute number. A customer going from 85 to 65 is more urgent than one sitting at 60 for six months.
Alerting and Automation
A health score is useless if nobody acts on it.
Yellow accounts: Weekly digest email to the account owner. Auto-create a check-in task. Suggest a specific intervention based on the lowest-scoring dimension.
Red accounts: Real-time Slack alert to the CS lead. Auto-schedule a check-in calendar invite. Create a high-priority task for executive outreach if ARR > $10K/year.
Score drops of 20+ points: Immediate alert regardless of current color. Flag the dimension that caused the drop.
Enterprise Tools: Gainsight vs. Totango
Gainsight is the enterprise standard — deep Salesforce integration, robust scorecard builder, playbook automation, and ML-powered predictive analytics. Implementation takes 3–6 months and costs $50K–$150K/year. Best for 500+ customers with a dedicated CS team.
Totango is more mid-market friendly — faster implementation (4–8 weeks), good integration ecosystem, intuitive UI. Pricing starts around $20K/year. Better for scaling from 100 to 500 customers.
My recommendation: Don't adopt either until you've manually operated a health scoring system for at least 6 months. You need to know which signals matter for your product before configuring a tool to track them.
The Solo Founder's Lightweight Approach
You don't need Gainsight. You need Google Sheets, Zapier, and 2 hours per week.
Step 1: Data Collection (Automated)
Set up Zapier (or Make.com) flows to populate a Google Sheet:
- Weekly: Active days, feature usage (from Mixpanel, Amplitude, or your database)
- On event: New support tickets, ticket resolution, NPS responses
- Monthly: MRR, plan type, failed payments
Each row is a customer. Columns are your health dimensions.
Step 2: Scoring (Formulas)
Add a "Health Score" column with a weighted formula:
=ROUND(
(Usage_Score * 0.4) +
(Support_Score * 0.15) +
(Payment_Score * 0.1) +
(Sentiment_Score * 0.2) +
(Relationship_Score * 0.15)
)
Add conditional formatting: green for 70+, yellow for 40–69, red for <40.
Step 3: Alerts (Zapier)
Trigger: when a row's Health Score changes to red, send a Slack message. When it drops by 20+ points, send an email. Weekly digest of all yellow accounts.
Step 4: Weekly Review (30 Minutes)
Every Monday, filter by red and yellow, and plan your outreach. This system costs $0 beyond what you're already paying for Zapier and analytics. It will catch 80% of the at-risk accounts a full system would.
Real Case Study: Predicting Churn at a $2M ARR SaaS
A B2B analytics SaaS (call them DataPulse) was losing 6% of customers monthly with no health scoring — the CS team reacted to cancellations after they happened.
We implemented the Google Sheets + Zapier approach with the five dimensions above. Results after 90 days:
- Identified 23 "red" accounts out of 340 total
- Proactive outreach saved 14 of them (61% save rate)
- Monthly churn dropped from 6% to 3.8%
- CS team spent 4 hours/week on health score review and outreach
The biggest insight: 11 of the 23 red accounts had a champion who had left the company. This was the single strongest predictor, and it had been invisible because nobody was tracking it.
Getting Started This Week
- List your last 20 churned customers. For each, identify the top 3 signals present in the 60 days before cancellation.
- Pick 5–7 signals that showed up most frequently across those accounts.
- Build a Google Sheet with those signals as columns, one row per active customer.
- Score each customer manually this week — you need to understand the data before automating.
- Reach out to every red account by Friday.
- Automate data collection with Zapier over the following 2 weeks.
The health score won't save every customer. But it gives you a 60-day head start on the ones you can save — and that head start is the difference between 6% monthly churn and 3%.
Written by Insight Lab — B2B SaaS content that converts. Follow for weekly playbooks on growth, retention, and founder-led content.
Top comments (0)