SaaS · Saas

Customer Health Scores — A Field Guide

Customer Health Scores — A Field Guide is the work that turns a product into a business. The code is one thing; the business is the company that ships the code, sells it, supports.

John Kihiu12 min read

A customer health score is only useful if it predicts something. Too many teams build a score that feels rigorous — a weighted formula, a dashboard with a red/yellow/green badge — and then discover it doesn't correlate with who actually renews or churns. This is a practical guide to picking the right inputs, combining them without fooling yourself, and wiring the score into what your CS team actually does each week.

What signals actually belong in the score

A health score is a composite, and the composite is only as good as its inputs. Five categories of signal consistently carry real predictive weight:

Usage frequency — logins or active sessions per week, trending up or down over the last 30/60/90 days. A raw login count is weak on its own; the trend matters more than the absolute number. Feature adoption depth — not just "did they log in" but how much of the product's core value they've actually activated. A customer using one shallow feature is a different risk profile than one using five interconnected ones, even at identical login frequency. Support signal — both volume and sentiment. A spike in tickets isn't automatically bad (it can mean expansion or genuine engagement); a string of frustrated, escalating tickets is a much stronger churn signal than volume alone. Relationship signal — NPS/CSAT responses, and whether an executive sponsor or champion is still engaged, still opening your emails, still showing up to QBRs. Champion turnover is one of the highest-leverage churn predictors and is routinely left out of health scores that focus only on product telemetry. Commercial health — invoice status, payment delays, contract renewal proximity. A customer who is quietly renegotiating scope or slow-paying is telling you something a usage graph won't.

Weighting and combining signals into one number

The instinct is to average everything into a single 0–100 score. That's a reasonable starting shape, but the weighting has to be earned, not assumed. The honest way to set weights is retrospective: pull your last 12–24 months of churned and renewed accounts, and check which signals actually differed between the two groups before the outcome happened. Signals that don't separate churners from renewers shouldn't carry much weight no matter how intuitive they feel.

Start with fewer inputs, not more

A score built from 15 blended signals is hard to debug when it's wrong. Most teams get better predictive power from 4-6 well-chosen signals with validated weights than from a kitchen-sink formula nobody can explain when a CSM asks "why is this account red?"

Keep the components visible alongside the composite. A CSM looking at "Health: 62" learns nothing actionable. A CSM looking at "Health: 62 — usage flat, support sentiment declining, champion hasn't logged in 21 days" knows exactly what to do next.

Common pitfalls that quietly break the score

The single most common failure is a binary usage signal — "logged in this week: yes/no" — standing in for the whole score. It's cheap to compute and almost meaningless; an account can log in daily while using none of the features tied to renewal. The second failure is a stale score: calculated weekly or monthly via batch job, so by the time a CSM sees the drop, the moment to intervene has passed. The third, and most damaging long-term, is a score that simply doesn't predict churn — nobody ever validates it against actual outcomes, so it becomes theater that leadership trusts and the data doesn't support.

Watch for gamed scores

If CSMs are compensated or evaluated on the health scores of their book of business, expect the score to get gamed — inflated manually, or the underlying weights quietly adjusted to make accounts look greener. Keep score calculation and score review separated from the incentive structure that depends on it, or audit for drift regularly.

Turning scores into action, not just visibility

A health score that sits on a dashboard and doesn't trigger anything is overhead. The score earns its keep when specific thresholds and score deltas trigger specific playbooks: a 15-point drop in 30 days triggers an automatic CSM outreach task; a champion going dark for three weeks triggers a re-engagement sequence; three consecutive red-flag tickets trigger an escalation to the account's CSM and their manager. The playbook, not the number, is the actual product of the health score system.

JSON · TRIGGER RULES
{
  "trigger": "health_score_drop",
  "condition": { "delta_30d": -15, "min_score": 40 },
  "action": "create_task",
  "assignee": "account_csm",
  "task": "Health drop review — check usage trend, last support ticket, last champion login",
  "sla_hours": 48
}

Segment the thresholds by account tier. A 10-point dip on a $200k enterprise account deserves an immediate CSM call; the same dip on a small self-serve account might just trigger an automated check-in email. Applying one threshold uniformly across every tier either buries your CS team in noise on the low end or misses the accounts that actually matter on the high end.

Validating and maintaining the score over time

Treat the score like a model, because it is one. Revisit the weights quarterly against actual renewal and churn outcomes. Track false positives (accounts flagged red that renewed fine) and false negatives (accounts that churned while showing green) separately — false negatives are the more dangerous failure because they erode the team's trust in the score entirely. If a product change alters what "healthy usage" looks like, the score's usage-adoption weighting needs to move with it.

SignalWhat it catchesCommon mistake
Usage frequency (trend)Disengagement before cancellationUsing raw login count instead of trend
Feature adoption depthShallow, replaceable usageTreating any login as "active"
Support sentimentFrustration building toward churnCounting volume without sentiment
Champion engagementRelationship risk, not just product riskOmitting it entirely — pure telemetry score
Payment/invoice healthCommercial disengagementIgnoring finance data outside the CS tool

A health score is a decision-support tool, not a report card. Build it from signals you've actually validated against churned accounts, keep the component breakdown visible so it's actionable, and wire real thresholds to real playbooks — otherwise it's a number CSMs learn to ignore.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.