Most customer health scores are not predictive models. They are weighted opinions. They average usage, NPS, support tickets, and a few CRM fields, assign each one a weight that feels reasonable, and produce a number that looks scientific. The trouble is that the number has usually never been tested against the outcome it claims to predict. It turns green or red, nobody fully trusts it, and the account still churns on schedule.

This guide shows how to build one that predicts churn: the signals worth scoring, how to weight them with your own data, how to prove it works, and when to stop maintaining it by hand.

What a customer health score actually is

A customer health score is a single number, usually from 0 to 100, that estimates how likely an account is to renew and grow rather than churn. It rolls up behavioral and commercial signals into one figure a team can sort, watch, and act on.

The word doing the work in that definition is predict. A score that describes the present ("this account looks quiet") is a dashboard. A score that anticipates the future ("this account will probably churn in the next quarter unless someone acts") is an early-warning system. The difference between the two comes down to which signals you feed it.

Signals split into two kinds. Leading signals appear before a customer decides to leave: usage dropping off, the main champion going quiet, a key feature falling out of use. Lagging signals appear after the decision is effectively made: a cancellation request, a downgrade, a cold renewal call.

A health score is not the same thing as a churn model

Worth separating these before you go further, because the words get used interchangeably and they sit at different points on the same continuum:

What it isHow weights are setCan it predict?
Rule-based health scoreBy judgment, in a meetingOnly by accident, and you would not know
Calibrated health scoreFrom your own churned-vs-retained history, then back-testedYes, once the back-test says so. This guide builds this one.
Statistical churn model Fitted by a model (logistic regression, survival analysis, gradient boosting)Usually better, at the cost of explainability and a data team

A weighted score can be genuinely predictive without being a machine-learning model, but "predictive" has to be earned through back-testing rather than assumed from the fact that the formula has weights in it. That is the distinction the rest of this guide turns on.

Why most health scores fail to predict churn

Three failure modes explain almost every health score that looks fine and predicts nothing. Name them in your own model and you avoid most of the trouble.

They weight every signal the same. The most common health score averages four or five metrics with equal importance because equal felt fair. In reality, a 30-day drop in core-feature usage might be ten times more predictive of churn than a dip in NPS, yet the average treats them as equals. Equal weighting quietly buries your strongest signal under weak ones.

They lean on lagging indicators. Survey scores, renewal sentiment, and support satisfaction all tend to move after a customer has already disengaged. A score built on them tells you an account is unhealthy at roughly the same moment the account tells you itself. That is confirmation, not prediction.

They go stale. A score that depends on a human remembering to log a note is only as fresh as the team's least-busy week. Signals live in product analytics, billing, support, and the CRM, and those systems rarely talk to each other, so the score drifts out of date between quarterly business reviews. A stale score is worse than none, because people trust it while it lies.

The Leading-Signal Health Score: a framework you can own

  1. Score leading signals, not lagging ones. Favor behavior that precedes the decision to leave over events that follow it.
  2. Weight by predictive power, not by feel. Each signal earns influence in proportion to how well it separates churned accounts from retained ones in your data.
  3. Decay old signals. Recent behavior predicts better than behavior from months ago, so weight the last few weeks more heavily.
  4. Group signals into four families so the score stays explainable when someone asks why an account is red.
  5. Map the score to bands, and give each band one action. A number that does not trigger work is decoration.

The four signal families cover the distinct ways an account can quietly fail. Below are the families, what belongs in each, and a starting weight. Treat the weights as a rule of thumb to replace with your own numbers, not as a benchmark handed down from anywhere.

4 signals
The four signal families, weighted by how well each predicts churn. Starting weights shown, recalibrate with your own data.

1. Product adoption (starting weight 40 percent)

Depth and frequency of use and, above all, the trend. For many usage-driven products, a sustained decline in core-feature usage is one of the most useful early signals to test against churn, and slow onboarding that never reaches first value belongs here too. This family usually carries the most weight, because for many usage-driven products behavioural signals are worth testing before stated sentiment: they capture what customers actually do rather than what they said in a periodic survey. Whether that holds for your product is something the calibration step should tell you, not something to assume. A low-usage account with strong executive sponsorship can still renew, which is why usage is weighted, not treated as a verdict. GainTrace captures these as product signals, the backbone of any live score.

2. Account breadth (starting weight 20 percent)

A single-threaded account, one champion and one active user, churns hard the day that person leaves, no matter how happy they were. Breadth is what turns a tool someone likes into infrastructure a company cannot easily remove.

3. Relationship and sentiment (starting weight 20 percent)

Weight survey scores like NPS lightly here, since they lag, and lean on the champion and support signals that move earlier.

4. Commercial and billing (starting weight 20 percent)

The money signals that predict or trigger loss, and they matter more than teams expect. Involuntary churn from failed payments alone is an estimated 20 to 40 percent of subscription losses, and it is unusually recoverable, because these customers never chose to leave. Recurly's 2026 State of Subscriptions report found that the software industry alone reclaimed more than 155 million dollars of failed-payment revenue through recovery tools in 2025. A chunk of the churn you fear is a billing problem wearing a churn costume, not a verdict on your product.

Signal family What it answersExample signalsStart weight
Product adoptionAre they getting value, and is it trending up or down?Core-feature usage trend, weekly active users per seat, time to first value40%
Account breadthHow embedded is the account across people and teams?Active vs licensed seats, active teams, admin logins20%
Relationship Is the champion present and the sentiment healthy?Champion status, escalations, ticket sentiment, NPS (light)20%
CommercialDo the money signals point to risk?Failed payments, downgrades, seat cuts, renewal proximity20%
The Leading-Signal Health Score at a glance. Starting weights are a calibration point, not a law.

These percentages are a starting template, not a benchmark. The right weights depend on which signals actually preceded churn in your own customer base, which is exactly what rule two of the framework tells you to measure and apply.
Starter weights versus calibrated weights

Keep two versions of the model clearly apart, because copying the starter weights and calling the result predictive is the most common mistake readers make.

Starter model: a practical first pass you can ship this week.

  • 40 / 20 / 20 / 20 across the four families
  • Equal sub-weights inside each family
  • Good enough to sort accounts and start acting

Calibrated model: weights derived from your own history, not from this page.

  • Set by how strongly each signal separates churned from retained accounts
  • Tuned to your prediction window and customer segment
  • Re-checked each quarter as signals drift

A worked example

Here is the starter model applied to one account, with illustrative numbers to show the mechanics.

Acme Corp (illustrative)

  • Product adoption: 30 of 100 (core usage down 35 percent over 60 days)
  • Account breadth: 55 of 100 (two of eight seats active)
  • Relationship: 60 of 100 (champion engaged, one open escalation)
  • Commercial: 80 of 100 (payments healthy, renewal in 75 days)

Score = (30 × 0.40) + (55 × 0.20) + (60 × 0.20) + (80 × 0.20)
Score = 12 + 11 + 12 + 16 = 51

See how it works

Start your 14-day trial

The bands act on the total, but the families tell you what to do. Acme's 51 is driven almost entirely by the adoption drop, so the play is an adoption review, not a billing chase. The reverse case matters just as much. An account can post a healthy overall score while one family, say relationship, has quietly slipped into the 50s, which calls for a single well-timed champion check rather than a full rescue.

The starter weights get you a working score this week. Your own churn history, fed back through rule two, gets you an accurate one.

How to build it in six steps

A first version fits in a spreadsheet. The steps below hold whether you build it by hand or automate it.

Step 1. Define churn and pick an outcome window

Decide what churn means for you before you measure anything. Is it a full logo cancellation, a downgrade below some revenue threshold, or a non-renewal? Then pick how far ahead you want to see it coming, based on how much intervention time your business actually needs rather than on a default. For annual enterprise contracts, sixty to ninety days is a practical target because it leaves room to run a save before the renewal conversation starts. For a monthly self-serve product, ninety days is longer than most of your customers' entire lifecycle, and two to four weeks may be the only window that means anything. Match the horizon to your contract length and sales cycle. Your score needs a defined target and a defined window, or you cannot tell later whether it worked.

Step 2. Pull the signals you can actually get

List candidate signals across the four families, then cross off every one you cannot refresh on a schedule. A signal you can pull once but not update weekly is not a signal, it is a guess. Your data sources are product analytics, billing, support, and CRM. Start with what you have rather than waiting on a perfect pipeline.

Step 3. Find which signals actually predict churn

This is the step that separates a real score from a pretty one. Take a year of accounts and split them into two groups, the ones that churned and the ones that stayed. For each candidate signal, compare the two groups. Keep the signals that look clearly different between churned and retained accounts, and drop the ones that look the same in both. If failed payments show up in 40 percent of churned accounts and 3 percent of retained ones, that signal is gold. If a metric is identical across both groups, it carries no information, whatever your intuition says.

Two cautions before you trust the result. First, a signal can look different between churned and retained accounts without being independently predictive, because it may simply track company size or duplicate another signal you already use. Check whether it still adds information once your other signals are in the model, and confirm it holds inside a segment rather than across the whole book. Second, calculate every signal using only data that existed before the prediction window, or you will measure the past leaking into the future instead of a real forecast.

Step 4. Weight and combine

Give each surviving signal a weight proportional to how strongly it separated the two groups. Normalize each signal to a 0 to 100 sub-score so they are comparable, roll signals up within each family, then combine the four families using the starting weights above as a first pass. Recalibrate the family weights against your own results once you have them.

Step 5. Apply recency decay

Weight the most recent 30 days of behavior more than the previous 30, and so on backward. A simple decay factor is enough to start. This keeps the score reflecting what an account is doing now rather than what it did last spring, and it is why a score updated weekly beats one reviewed each quarter.

Step 6. Set bands and attach one play to each

Turn the number into action by mapping it to bands. A workable starting split is Healthy 70 to 100, Watch 50 to 69, At risk 30 to 49, and Critical 0 to 29. Give each band exactly one next step, so a drop into "At risk" launches an intervention instead of a shrug. A score that does not change what anyone does on Monday is not finished.

Band split
A starting band split, with one next step per band so the score drives action.

One calibration per segment, not one for everyone

The six steps assume a reasonably uniform customer base, and most books are not uniform. An account in month two of onboarding is supposed to look different from one in year three: low breadth, shallow feature adoption, and heavy support contact are healthy during onboarding and alarming at renewal. Blend both into one calibration and each group's normal behavior pollutes the other's baseline, so the score cries wolf on new accounts and sleeps through risk on mature ones.

The fix is to run the same six steps per segment, not to invent new math. Split by lifecycle stage first, onboarding versus established, and by size or motion second, such as SMB self-serve versus enterprise high-touch, then calibrate weights and thresholds separately inside each group. Two or three segments is usually enough. A segment too small to contain a meaningful number of past churns cannot be calibrated, so merge it back up.

Signals not to overweight

Choosing what to leave out matters as much as choosing what to include. None of these are worthless. They are the ones that most often get more weight than they have earned, usually because they are easy to pull.

SignalThe problemBetter use
NPS on its ownPeriodic, self-selected, and a promoter can churn on renewal daySmall weight, and only alongside behaviour
Ticket countAmbiguous. Heavy support contact means engagement during onboarding and trouble at renewalScore sentiment and escalation, segmented by lifecycle stage
Login countPresence is not value. A daily login to export one report is not adoptionCore-action frequency and depth, not sessions
CSM sentiment Optimistic, inconsistent between CSMs, and updated when someone remembersAn override flag with a written reason, not a scored input
Renewal proximity Every account reaches it. It is a calendar fact, not a risk signalA trigger for when to look, not a component of the score
Raw user countA static number hides the trend that mattersActive-to-licensed ratio and its direction over time
Stale CRM fieldsAnything updated by hand decays, then quietly poisons the scoreExclude unless you can refresh it on a schedule
Commonly overweighted signals, and what to do instead

How to prove your score predicts churn

A health score is a claim about the future, so test it like one.

Backtest it. Run your score on last year's accounts as they looked 90 days before their outcome, then check whether the low scores really did precede the churn. If they did not, your signals or weights are wrong, and better to learn that now than at a renewal.

Do not let the future leak into the past. When you backtest a 90-day prediction, score each account using only the data that existed 90 days before its outcome. If an account cancelled on 30 June, the test can only use what you knew on 31 March. Letting later information into the score, a mistake called data leakage, makes a model look brilliant in testing and fail in production.

Day-90Day-60Day-30Renewal
Signal appearsScore flags riskPlay runsOutcome
A 90-day prediction window. When testing, score each account only on what was known at Day -90.
90-day prediction
A 90-day prediction window. When testing, score each account only on what was known at Day-90.

Measure precision and recall, not accuracy. If only 5 percent of accounts churn, a lazy model that calls everyone healthy is 95 percent accurate and completely useless. Track precision, the share of your at-risk flags that were real, and recall, the share of real churns you caught. You will trade one against the other, and that trade-off is a business decision about how many false alarms your team can absorb.

Measure lead time. A score that flags risk the week before cancellation is a report. A score that flags it 60 to 90 days out is a save. Lead time is the single number that decides whether the score is worth building.

Recalibrate every quarter. Signals drift as your product and market change, so re-run step three on a cadence to keep the weights honest.

When to stop maintaining it by hand

A manual score works, and plenty of good teams run one in a spreadsheet for years. It breaks for one predictable reason. It depends on people remembering to update it, and the signals live in four systems that were never designed to talk to each other. The math is rarely the problem. The upkeep is.

A spreadsheet is the right call when you have few accounts, stable signals, and one owner who keeps it current. It stops being the right call when the score goes stale because manual entry lags, when your signals are scattered across Salesforce, Stripe, Intercom, Mixpanel, and more, and when you need it to update whether or not a CSM logs a note. At that point the maintenance cost quietly exceeds the tool cost.

Once the manual process becomes hard to maintain, an automated system can take over the collection, scoring, and alerting. That is the job GainTrace does. It unifies those sources into one live, explainable score, shows the signals behind every number, and fires a play when risk rises, so churn prediction runs without a data team behind it. It is not the only option: if you are comparing categories, our rundown of the best customer success platforms for startups covers the alternatives fairly. The framework here is yours to build by hand regardless. Copy the four-family scorecard into a sheet and you have a start today.

See a flag with its reasoning

Once the manual process becomes hard to maintain, an automated system can take over the collection, scoring and alerting.

Frequently Asked Questions

What is a good customer health score?
There is no universal good score or universal recall target. A good health score catches enough genuine risk early enough for your team to act, while keeping false alarms manageable. Set the threshold using your own churn rate, your intervention capacity, and the economic value of a saved account. As a reference point for the churn side of that math, Recurly puts the average subscription churn rate at 5.57 percent, though it varies widely by industry. A model that catches 40 percent of churners with few false alarms can be worth more than one that catches 70 percent and floods the team.
What data do you need to build a churn-predicting health score?
Product usage, billing, support, and CRM data. A minimum viable version can start with three signals, such as a core-usage trend, payment health, and champion status, as long as those signals clearly separate churned accounts from retained ones in your history.
How many signals should a customer health score include?
Start with three well-chosen signals and let calibration set the ceiling. As you add candidates, keep only the ones that still separate churned from retained accounts once your existing signals are in the model. Most teams settle somewhere between five and twelve before new signals start duplicating information the score already has. More signals past that point add maintenance, not accuracy.
How is a customer health score different from NPS?
NPS is a periodic stated opinion captured at a moment in time. A health score is an ongoing behavioral and commercial estimate of risk that updates as accounts act. A customer can be a promoter on the survey and still churn, which is exactly the gap a live score is meant to close.
How often should a customer health score update?
As often as the signals behind it change, which for most B2B products means daily or weekly. Monthly is usually too slow to act on. Recency decay matters here, because a login from last week predicts churn far better than one from five months ago.
Can a spreadsheet health score predict churn?
Yes, if the signals are chosen by their correlation with churn and refreshed on a schedule. Spreadsheet scores fail when updates lag behind reality, which is an operational problem rather than a mathematical one. Fix the upkeep and a simple score can predict well.
How much customer churn is actually preventable?
Involuntary churn from failed payments is an estimated 20 to 40 percent of subscription losses and is highly recoverable with automated retries and card updaters. Much voluntary churn is catchable too, provided your score gives you enough lead time to intervene before the renewal.