← All posts·health-scores·6 MIN READ·July 6, 2026

Customer health score: how to build one that predicts renewals

A step-by-step method for building a health score from the four signal families you already track, and the validation test most scores fail.

THE SHORT ANSWER

A customer health score is a single number, usually 0 to 100, that summarizes how likely an account is to renew. A score that actually predicts renewals combines four signal families: product usage, support history, billing events, and relationship data from your CRM. Start with equal weights, then adjust them against your real churn outcomes until the score separates renewals from cancellations.

What is a customer health score, really?

A customer health score compresses everything you know about an account into one number you can sort by. That is the entire job. Instead of opening four tools to answer "is this account okay?", you look at one column.

The catch: most health scores do not predict anything. They are built once, weighted by gut feel, and never checked against actual renewal outcomes. The score turns green, the account cancels anyway, and the team quietly stops trusting it.

This post covers how to build one that earns trust: which signals to include, how to weight them, how often to refresh, and the one validation test that separates a working score from decoration.

Which signals belong in a customer health score?

Four families. Each one lives in a tool you already pay for, so building the first version is a data-plumbing exercise, not a purchasing decision.

| Signal family | Example metric | Where it lives | | --- | --- | --- | | Product usage | Daily active users vs. 30-day average | Mixpanel, Amplitude, your own database | | Support history | Open tickets older than 7 days | Zendesk, Intercom, Freshdesk | | Billing events | Failed payments, downgrade requests | Stripe, Chargebee, Recurly | | Relationship / CRM | Days since last champion reply | Salesforce, HubSpot |

A few notes on each:

Product usage is the strongest family. Login frequency, active users, feature breadth, and session depth all lead churn by weeks or months. If you only had time to wire up one family, this is it.

Support history captures frustration your analytics cannot see. An account with four unresolved tickets is accumulating reasons to leave, even if their usage looks stable.

Billing events are commitment signals. A failed payment left unfixed for a week, a downgrade request, or a switch from annual to monthly billing all say the same thing: this account is loosening its grip.

Relationship data covers the human layer. Days since your champion last replied, skipped QBRs, and unanswered renewal reminders. In B2B, a silent champion often matters more than any usage chart.

Leave out demographics. Industry, company size, and region describe who the customer is, not what they are doing. They belong in segmentation, not in a health score. A score heavy on firmographics predicts what kind of customer churns on average, which is useless for saving any specific account.

How should you weight the signals?

Start with equal weights. Four families, 25 points each. Resist the urge to be clever on day one, because day-one cleverness is just gut feel wearing a lab coat.

Then let your own churn data adjust the weights:

  1. Score every account with the equal-weight version.
  2. Wait for outcomes. Every renewal and every cancellation over the next quarter is a labeled data point.
  3. Compare. For the accounts that churned, which signal families were red beforehand? For the accounts that renewed, which were green?
  4. Shift weight toward the families that discriminated. If usage decline preceded nearly every cancellation but support tickets barely differed between churned and renewed accounts, usage deserves more than 25 points and support deserves less.

At 50 to 500 accounts you will not have thousands of churn events to learn from, and that is fine. Even 10 to 15 cancellations reviewed honestly will tell you which families carry signal for your product. Repeat the review every quarter and the weights converge.

Why 0 to 100 with reasons attached?

Use a 0 to 100 scale, and attach a plain-language reason to every score.

The scale matters less than the reasons. "Acme Corp: 42" invites an argument about methodology. "Acme Corp: 42, usage down 38 percent and champion silent for 3 weeks" invites a phone call. The reason string is what turns the score from a dashboard ornament into a to-do list.

A practical format: score, trend arrow, top two contributing signals. That is enough for anyone on the team to pick up an account cold and know what the save call is about.

Bucket the scale for triage. 0 to 40 is at risk, 41 to 70 is watch, 71 to 100 is healthy. Three buckets are enough; ten buckets are precision you have not earned.

How often should the score refresh?

Weekly, as a floor. Usage and support signals move on a weekly rhythm, and a score refreshed monthly will regularly show green on an account that started collapsing three weeks ago.

Two signal types deserve faster treatment: billing events and champion silence. A failed payment or a downgrade request should update the score the day it happens, not at the next scheduled refresh. These are discrete events, not gradual drifts, and the save window after a failed payment is measured in days.

Do this week one: put the score review on a recurring calendar slot. Thirty minutes, every Monday, sorted ascending. The refresh cadence of the score matters less than the refresh cadence of the humans reading it. A daily-updated score nobody opens is a monthly score with better infrastructure.

The validation test: does the score predict renewals?

This is the test most health scores never face. Take your last two quarters of renewal decisions and split them into two groups: accounts that renewed and accounts that cancelled. Now look at what the health score said 90 days before each decision.

If the cancelled group's average score was meaningfully lower than the renewed group's, the score works. If the two distributions overlap so much that you could not have told the groups apart, the score is decoration, and every hour spent maintaining it is wasted.

90days before renewal: when the score must already separate churners from renewers

A useful bar for a first version: the majority of your cancellations should have sat in your bottom scoring bucket 90 days out. Perfect separation is not the goal. A score that flags 7 of your 10 churns a quarter early, with a manageable number of false alarms, changes how your quarter goes.

Run this test quarterly. It doubles as your weight-adjustment review from earlier: the same churn outcomes that validate the score also tell you which signal families to reweight.

Common failure modes

Three patterns account for most dead health scores.

The NPS-only score. Net Promoter Score is a survey answer about how a customer felt on the day they answered. It is one attitudinal data point with a response rate problem, and it lags behavior by months. A customer can score you a 9 and cancel a quarter later because their usage quietly halved. NPS can be one input among many; it cannot be the score.

The demographic-heavy score. Scores weighted toward firmographics (industry, headcount, funding stage) look sophisticated and predict nothing actionable. The customer's industry did not change last month. Their usage did. Weight behavior, not biography.

The score nobody re-checks. The most common failure is not a bad formula, it is abandonment. The score gets built, presented once, and never validated against outcomes or reviewed in a recurring meeting. Six months later nobody can say whether it works, so nobody uses it. A mediocre score reviewed weekly beats an elegant score reviewed never.

Start with a spreadsheet

You do not need new software to run the first version. One row per account, four columns of signals pulled from Stripe, Zendesk, Mixpanel, and your CRM, equal weights, sorted ascending. The accounts at the top of that sorted list are this week's save calls.

The spreadsheet version will be manual and slightly annoying, and that is fine. Its job is to prove the score predicts your renewals before you invest in automating it. Once the quarterly validation test passes, automation is a plumbing project with a known payoff.

〉 NEXT STEP

See which of your accounts are at risk right now

ChurnAI connects to your data and produces a ranked risk list within 48 hours. No data leaves your cloud.

Score my accounts free

Related resources

RELATED
01 ·

Why most customer health scores are decoration

A health score nobody validates against renewal outcomes is dashboard furniture. Here is the quarterly backtest that tells you if yours actually predicts anything.