How to Build a B2B Customer Health Score
Build a B2B customer health score from a few transparent inputs, check it against real renewals, and connect each score band to a defined action.
TL;DR. To build a B2B customer health score, pick three to five inputs that plausibly predict renewal: product usage, support signals, stakeholder engagement, and contract and renewal context. Give each one a simple, visible weight. Check the score against renewals that have already happened, then adjust it. Most important, link each score band to an action someone owns. If a score doesn't change what anyone does, it's only a dashboard decoration.
What is a customer health score actually for?
A health score is a shared, repeatable estimate of how likely an account is to stay and grow. It helps your team decide which accounts need attention first, before anyone has to ask.
It doesn't replace judgement, and it doesn't replace a structured review of the accounts coming up for renewal. That review is a separate process, covered in How to Run a SaaS Renewal Risk Review. The health score runs all the time, across every account. The renewal review looks closely at a smaller group as their contracts approach the end of term. A good health score decides which accounts go into that review early.
Before you start, decide what outcome the score should predict. For most B2B SaaS teams, it's renewal at the same or higher value. Write that down. Every input you choose has to earn its place against it.
Which inputs should go into the score?
Pick a few inputs from four areas. Each one should be something you can measure the same way for every account, and something with a believable link to renewal.
- Product usage. Is the account using the parts of the product that deliver the value it paid for? Look at the depth of core workflows, not just logins. Active usage as a share of licensed seats is often more telling than a raw activity count.
- Support signals. Are unresolved problems building up? Watch for severe or repeated tickets, open escalations, and unhappy replies. Getting no tickets at all can also be a warning sign when it comes with low usage.
- Stakeholder engagement. Do you still have a working relationship with the people who matter? Check whether there's a known champion, whether you have access to the budget holder, and whether the account attends reviews. A champion leaving is one of the clearest qualitative warnings you'll see.
- Contract and renewal context. How close is the renewal date? Has the account recently been through a price change, a downgrade request or a failed payment? This context shapes how urgently you need to act.
Leave out anything you can't collect for most accounts. Missing data that gets quietly scored as zero makes accounts look worse than they are. Missing data scored as neutral hides real problems.
How should you weight the inputs?
Start with weights you can explain in one sentence each, and publish them to everyone who uses the score. An approximate model the team can see through beats a precise-looking one nobody trusts.
Here is an illustrative starting model. The weights and thresholds are examples, not benchmarks.
| Input | What you measure | Healthy (2) | Watch (1) | At risk (0) | Illustrative weight |
|---|---|---|---|---|---|
| Core usage | Active users as a share of licensed seats, last 30 days | Most seats active | About half active | Few seats active | 35% |
| Support signals | Open severe tickets or escalations | None open | One open, in progress | Repeated or stalled | 20% |
| Stakeholder engagement | Champion status and access to the budget holder | Both in place | One in place | Neither, or champion left | 30% |
| Contract context | Recent downgrade request, failed payment or pricing dispute | None | One minor issue | Active dispute or downgrade request | 15% |
Score each input from 0 to 2, multiply by its weight, and add the results to get a total out of 2. Then group the totals into three bands: healthy, watch and at risk. Keep it to three bands. The difference between a 1.42 and a 1.47 means nothing, so don't present it as though it does.
Worked example (illustrative). An account has most of its seats active (2 × 35%), one escalation in progress (1 × 20%), a champion who has just left (0 × 30%) and no contract issues (2 × 15%). The total is 0.70 + 0.20 + 0 + 0.30 = 1.20, which lands in the watch band. On usage alone it looks healthy. The stakeholder input is what reveals the risk.
How do you validate the score against real renewals?
You can't trust a health score until you've compared it with outcomes. Do this before rollout, and then again on a regular schedule.
- Collect past renewal decisions. Use accounts that renewed, expanded, downgraded or churned.
- Rebuild the score as it would have looked beforehand. Use the data that was available before each renewal decision, not the data from afterwards. Scoring on information gathered after churn makes the model look far better than it really is.
- Compare bands with outcomes. Did churned and downgraded accounts mostly fall in the at-risk or watch bands? Did healthy accounts mostly renew?
- Read the misses one by one. Look at healthy accounts that churned and at-risk accounts that renewed. Each miss points to a missing input, a wrong weight or a threshold set in the wrong place.
- Change one thing at a time, and record why you made each change.
If you only have a small number of renewals, treat the model as a hypothesis and say so. Track revenue outcomes as well as logo outcomes. Logo Churn vs Revenue Churn explains why the two can tell different stories.
What action should each score band trigger?
Give each band a named owner, a defined action and a time frame. For example:
| Band | Trigger | Action | Owner |
|---|---|---|---|
| Healthy | Stays healthy | Look for expansion potential at the next account review | Account manager |
| Watch | Drops into watch | Contact the account to find the cause and agree a fix | Customer success |
| At risk | Drops into at risk, or renewal is close | Escalate and add the account to the renewal risk review | Customer success lead |
A change of band should matter more than the band itself. An account that slides from healthy to watch deserves a conversation, even when its renewal is a long way off.
What are the common mistakes?
Vanity inputs. Logins, page views, email opens and total events are easy to collect and easy to inflate. Measure the behaviour that reflects value, such as completed core workflows.
False precision. Decimal places and colour gradients suggest a level of accuracy the model doesn't have. Show bands and the reasons behind them, not a falsely exact number.
Too many inputs. Every input you add makes the score harder to explain and easier to game. If an input never changes the band, take it out.
Never validating. Weights chosen in a workshop are only guesses until they've been checked against renewals.
No action attached. A score that changes colour while nobody responds is not worth the effort of maintaining it.
Ignoring segments. A small team and a company-wide deployment may need different usage thresholds. Use segment-specific thresholds before you consider building separate models.
When does a health score not apply?
When you have very few customers, talk to each account directly instead of building a model. Where usage data is thin or unreliable, start with stakeholder engagement and contract context, and add usage once you can trust the data. And if renewals are mostly driven by procurement cycles you can't see, use the score to prompt conversations, not to make forecasts.
What else should you know about customer health scores?
Frequently asked questions
How many inputs should a B2B customer health score have?
Usually three to five. Each input should be measurable for most accounts and plausibly linked to renewal. Remove any input that never changes an account's band.
How often should you review the weights?
Review them whenever you have a meaningful new set of renewal outcomes to compare against, and after big changes to the product or pricing. Record every change and the reason for it.
Should the health score be shared with customers?
The score itself is usually internal. The underlying observations, such as low adoption of a core workflow, are often useful to discuss openly with the customer.
Is a health score the same as a renewal risk review?
No. The health score runs continuously across all accounts. A renewal risk review is a focused, periodic look at accounts approaching renewal, and the score helps decide which accounts go into it.
If you want help applying this to your own team, talk to us.
Related reading
- How to Run a SaaS Renewal Risk Review: take the accounts your score flags through a structured renewal review.
- Logo Churn vs Revenue Churn: choose which churn outcome your score should predict.
- Calculate SaaS Cohort Retention: check retention patterns behind the score.
- Net Revenue Retention Explained: connect account health to expansion and contraction.
- SaaS Customer Onboarding Checklist: set up healthy usage from the start.
Related reading
How to Identify SaaS Renewal Risk Before Renewal
Review customer ownership, use-case value and renewal steps with a practical template for sponsor changes, unresolved problems and procurement deadlines.
A B2B SaaS Onboarding Checklist: From Contract to First Value
A practical B2B SaaS onboarding checklist covering kickoff, success criteria, setup, training, first value and the handoff to ongoing support.
How to Recover Failed SaaS Subscription Payments
Build a failed-payment recovery flow with appropriate retries, clear notices, easy payment updates, and predictable rules for grace periods and access.
SaaS Cancellation Survey Questions That Guide Action
Use neutral SaaS cancellation survey questions to separate missing value, changed needs, budget limits and service problems, then turn answers into action.