The formula
Health score equals the sum of every normalized signal multiplied by its weight, with the weights adding to 1.
Normalization matters as much as weighting. Weekly active licenses, ticket counts, and days since the last executive conversation live on different scales and point in opposite directions. Each has to be converted to a 0 to 100 axis where higher always means healthier before anything can be added.
A worked example with four components:
| Component | Raw signal | Normalized | Weight | Contribution |
|---|---|---|---|---|
| Product usage | 68% of licenses active weekly | 68 | 0.40 | 27.2 |
| Adoption depth | 3 of 5 core workflows live | 60 | 0.25 | 15.0 |
| Support pattern | 4 routine tickets in 12 months | 90 | 0.20 | 18.0 |
| Relationship | Sponsor unchanged, QBR attended | 75 | 0.15 | 11.3 |
| Total | 1.00 | 71.5 |
Setting weights from your own churn history
Export every account that churned or renewed over the past two years and calculate each candidate signal as it stood 90 days before the renewal date. Measure how far apart the churned and renewed populations sat on each signal. That separation is your weight.
Weights set by consensus overweight relationship signals, because those are the ones the account team can feel and defend in a meeting. Usage data almost always carries more of the prediction than the room expects.
Where the formula breaks
Correlated inputs double count. Weekly usage and adoption depth measure overlapping behavior, so stacking both at full weight exaggerates every swing in either direction.
Uncalibrated scores go unchallenged. Track what share of accounts scoring red actually churned last year. If red accounts churned at roughly the same rate as yellow ones, the formula is sorting noise, and the fix is new signals rather than new weights.
Finally, a score with no threshold attached to it changes nothing. Define the number that triggers an intervention and the number that triggers an expansion play, then hold the team to both. Health scoring protects net revenue retention only when a falling score becomes a phone call, and it improves renewal forecast accuracy only when the bands map to renewal rates you have actually observed.
Frequently Asked Questions
How do you calculate a customer health score?
Normalize each signal to a 0 to 100 scale where higher always means healthier, assign a weight to each signal, multiply, and add the results. An account scoring 68 on usage with a weight of 0.40 contributes 27.2 points to the total. The arithmetic is trivial. Picking the signals and setting the weights is the real work.
What weights should each signal get?
Weights should come from your own churn history. Pull two years of churned and renewed accounts, measure each candidate signal as it stood 90 days before the renewal date, and see which ones actually separated the two groups. Signals that separated cleanly earn weight. Signals that did not get cut, however intuitive they felt in the room.
Should the health score be one number or a set of components?
Keep both. The rolled-up number handles triage across a large book of accounts. The component breakdown tells the CSM what to do. A score of 54 is a queue position. A score of 54 caused entirely by a collapse in weekly active licenses is an assignment with a named owner.
How often should the weights be revalidated?
Score accounts weekly and revalidate the weights every two quarters. Signal relationships drift as the product changes and as the customer base shifts segment. A formula frozen at launch slowly becomes an accurate description of a customer base you no longer have.
Put these metrics to work
ORM builds custom revenue forecast models that turn concepts like customer health score formula into prescriptive action for your team.
Schedule a Demo