Here is a customer health score most teams would sign off on: 20 points for weekly logins, 15 for seats in use, minus 5 for every open ticket, minus 25 for a failed payment. It looks rigorous. It also flags your most engaged customer as a risk, because they file a detailed bug report every week, while the account whose champion quietly left in June sits at a comfortable 70.
The arithmetic is fine. The inputs are the problem. Most scores count what is easy to count, and the evidence that predicts a renewal is written down in your support desk, your billing system and your product data, nowhere near the CRM record the account owner opens. Getting it there is the same job as CRM enrichment from your own billing, support and product data, pointed at customers instead of prospects.
What a customer health score is
A customer health score is an estimate of whether an existing account will renew, shrink or grow. It usually comes as a number from 0 to 100, or as a band of green, yellow and red. Customer success teams tend to own it, and account managers read it before a renewal call.
It is not lead scoring. Lead scoring rates strangers on fit and interest. A health score rates people who already pay you, and that changes every input, because none of the useful ones can be bought from a data provider.
The case for bothering is old and well documented. Keeping a customer is somewhere between five and 25 times cheaper than winning a new one, depending on which study you trust, a range Harvard Business Review's refresher on customer churn cites with the right amount of hedging.
Honestly, "health" is the wrong word. What you are building is a forecast of a renewal. Calling it health invites people to treat it like a vital sign, something to nudge back into the green before the quarterly review.
A forecast is something you check. Did the accounts you scored 30 actually leave? Most teams never look, which is how a score survives three years without predicting anything.
Traffic-light bands make this worse. Yellow becomes a holding pen. An account can sit there for two quarters because nobody is required to act on yellow, and the cancellation email is the first time anyone treats it as red.
Customer health score inputs: product usage, support tickets, billing
Three classes of data carry almost all of the signal, and you already collect each of them. The catch is that they live in three different tools, tied to the account by little more than an email domain.
Input | Where it lives | What it tells you |
|---|---|---|
Active users against seats bought | Product analytics or your app database | Whether the team still relies on you |
Breadth of features used | Product analytics | How hard you would be to replace |
Ticket tone over the last 90 days | Support desk | How much patience is left |
Requests for features you lack | Support desk | What they might be shopping for |
Plan, MRR and renewal date | Billing | What is at stake, and when |
Failed payments, downgrades, seat cuts | Billing | Budget pressure, or an exit already underway |
The champion's last login | Product data and the CRM | Whether anyone still owns the relationship |
Firmographics are missing on purpose. You already know the account's industry and headcount, and neither moves much between one renewal and the next.
Survey scores are missing too. NPS is reasonable to collect, but it arrives from whoever chose to answer, on a schedule you picked. It belongs in the score as a minor input, never as the thing that moves it by 30 points.
Product usage needs one caution. Logins are the easiest metric to pull and the weakest on their own, since a team can log in every day to export its data before leaving. Seats in use against seats bought says more, and so does how many distinct features people touch.
Choosing a customer health scoring model: rules or reasons
Once the inputs sit next to each account, something has to turn them into a number. There are four common ways to do it, and each fails in a different place.
Customer health scoring model | How it works | Where it breaks |
|---|---|---|
Points-based rules | Fixed points added or subtracted per signal | Penalizes engaged accounts that file tickets |
Weighted bands | Thresholds turn each metric green, yellow or red | Yellow fills up and nobody acts on it |
Predictive model | Trained on your past churn and renewals | Needs more churned accounts than most companies have |
AI reading each account | A written brief applied to every account's tickets, usage and billing | Only as good as the brief, so check it against outcomes |
Points-based rules are where nearly everyone starts, and the opening example shows how they fail. A rule cannot tell a frustrated ticket from an engaged one. It sees a count.
Predictive models are the textbook answer. They probably make sense once you have several hundred churned accounts and a data team to maintain them. We have never run one at that scale, and below it a model mostly learns noise from a few dozen cancellations.
The fourth approach is the one we would pick, because it can read. Write a brief telling an AI model to weigh ticket tone over time rather than ticket count, and to treat a quiet champion as serious. The model applies that judgment the same way to the first account and the four-hundredth.
It also writes down why. A score of 38 with "three reopened export bugs since July, seats down from 18 to 11" gets a call this week. A bare 38 gets a shrug.
Getting there today usually means one of two routes. A data team lands tickets and events in a warehouse, models them in dbt, and runs an LLM pipeline over the result. Otherwise the company buys a customer-success platform priced for a CS department, which is a lot of software for a founder watching forty renewals.
Reading support-ticket sentiment for churn signals
Anyway, back to the customer from the opening who files a bug report every week.
Per-ticket sentiment is close to useless for churn. Almost every ticket is a little negative, because somebody wrote in when something broke. Off-the-shelf sentiment analysis will tag most of your queue as mildly unhappy and be technically correct.
The churn signals worth scoring come from the pattern across one account's tickets:
Tone that sours over weeks. Long, specific reports give way to one-line follow-ups asking for an update.
Exit questions. A request for a full data export, or a question about the notice period, is filed as support and means something else entirely.
Silence after noise. An account that wrote in every week and then stopped, while its logins also fell, has usually stopped caring whether you fix things.
Read that way, the weekly bug reporter looks different. Their tickets are long, polite and specific, and their seat count went up last quarter. A rules-based score flags them. Reading the tickets clears them, and a customer health score that reads should rate them green.
The full build, with the prompt and the CRM properties, is in our guide to building a churn risk score from support tickets.
Expansion revenue signals in a customer health score
Most health scores only look down. Part of that is the org chart. Customer success is measured on retention and expansion belongs to the account executive, so the score gets built to answer the CS team's question. Nobody decided upside doesn't matter; it just isn't anyone's metric.
The expansion revenue signals sit in the same three systems as the churn ones:
Seats near the cap. 14 of 15 seats active is a conversation, and the customer may be waiting for you to start it.
Usage pressing on a plan limit. Whatever your pricing meters, whether API calls, projects or records, trending toward the ceiling.
New teams appearing. Sign-ups from a department you never sold to, or a second email domain from a subsidiary.
Tickets that ask for more. "Can we add a London workspace?" arrives as a support question and is really a sales one.
Billing moving upward. A switch from monthly to annual, or a question about invoicing for a larger plan.
Score expansion separately from churn. One number cannot hold both, and the accounts where they collide are the interesting ones.
Picture an account at 60 on churn risk and 75 on expansion. The marketing team that bought you first has gone quiet, with two seats idle since August. Engineering, meanwhile, added eleven people last month and asked twice about SSO.
A single blended score would call that account a 55 and hide both stories. Split, the same list sorts two ways: by expansion it is the account executive's upsell list, and by churn risk it is the CS team's week.
Writing customer health scores back to your CRM
A score in a dashboard nobody opens before a call protects nothing. It has to land on the CRM company record, because that is the screen the account owner reads before every renewal conversation.
Write back at least four things: the churn risk score, the expansion score, a one-sentence reason for each, and the date it was last scored. The reason does more work than the number. Reps ignore a score they cannot explain to the customer, and act on one they can.
This is the part we built Oneprofile around, so here it is plainly. Connect your support desk, whether Zendesk, Intercom, Freshdesk or Help Scout. Connect your product data from PostHog, Mixpanel, Amplitude or a read-only Postgres connection, and Stripe for billing. Each one matches to your CRM accounts by domain or email.
AI then reads every account's tickets, usage and billing against the brief you write. It tracks ticket sentiment over time, pulls out the features each account keeps asking for, and writes a churn score, an expansion score and the reason for each. Those land on properties you create once on the CRM company, a schedule keeps them current, and you see what a run costs in credits before it starts.
Every integration works on every paid plan from $20 a month, and the free plan includes 200 credits a month with no card. Start with the accounts renewing next quarter. Once they renew or leave, compare the outcome against the customer health score each one held 60 days earlier, and rewrite the brief where it was wrong. Get started free.
What is a good customer health score?
What metrics go into a customer health score?
What is the difference between a customer health score and NPS?
Can a customer health score track expansion as well as churn?
Do I need a customer success platform to build a customer health score?
