Customer Health Score Template
Every signal measured against the accounts that actually left, on lift, lead time and coverage, so the weights come from data rather than a workshop.
Free download · No account needed
Six signals, two numbers each. Lift says the signal knows something. Lead time says whether knowing is any use.
The two best discriminators fire inside the notice period. This renewal motion needs 60 days, so both became an alert list and 40 points of weight moved onto signals that fire in time.
Every health score template hands you six signals, a weight column that adds to 100, and a red-amber-green formula. The weights came from a workshop. Nobody checked whether the score separates the accounts that left from the accounts that stayed, because that check needs churn data the template author never had. Halfmoon Software ran one for a year. Of 47 churn events across 412 accounts, its Red band caught 8. Nearly half of the 47 sat in Green.
So every signal here earns its weight. Take the accounts where it fired, measure what share churned, divide by the base rate of 11.4%. That ratio is the first bar. Then measure the median days between the first firing and the date the customer decided, which a subscription record keeps in a different field from the date service ended. That is the second bar, and it is the one that reorders everything.
Support volume above baseline lifts churn probability 4.18 times, the best number on the sheet, and it arrives 11 days before the decision. Payment lateness arrives 6 days before. Both are consequences of a decision already taken, so both became alerts rather than weights. Coverage is the third bar, and it cut satisfaction scores outright. Forty points of weight moved, recall went from 17% to 62%, and the renewal brief finally has a list worth reading. Every account in the new Red band was flagged before it decided.
What the pack does that a weight column does not
Earns every weight against your own churn
Take the accounts where a signal fired, measure what share churned, divide by the base rate across the book. That ratio sits next to the weight the signal currently carries, and seeing the two numbers adjacent is what settles the argument in a room.
Measures how early each signal fires
Median days between a signal's first firing and the date the customer decided. Compared against the renewal motion's own requirement, which is the notice period plus the time a save play needs. Signals below that floor are cut whatever their lift.
Moves the late signals to an alert list
Support volume and payment lateness are the two best predictors on most books and the two least usable. They become a same-day alert to the CSM and the renewal owner, with the reasoning written down so nobody puts them back next quarter.
Refuses a weight to a signal that cannot see your base
A satisfaction score needs a ticket that was filed, resolved and then rated. On the worked example that is 61 of 412 accounts, so the other 351 were carrying a defaulted tenth of their score. Coverage below 60% is a cut.
Catches the signals whose meaning quietly changed
A login prompt disappearing behind single sign-on, two features merging in a release, a help centre cutting ticket volume. The test is the base churn rate: if a population median moved sharply and churn did not, measurement changed and the accounts did not.
Reports whether the rebuild was actually an improvement
Both versions scored over the same window and the same churn events, with recall, precision, lift and lead time per band. That comparison is the only thing separating a real improvement from a rearrangement of the same numbers, and it is the same test stage definitions get against stage history.
How the pack runs
- 1
Send the churn list
Accounts that ended in the last twelve months, with the date each customer decided rather than the date service stopped, plus whatever usage, ticket and billing history exports.
- 2
Measure three bars
Every candidate signal gets a lift against the base churn rate, a median lead time against the decision date, and a coverage figure against the whole book.
- 3
Weight what survived
Survivors are weighted in proportion to the lift they earned. Cuts get a documented reason, and the ones that discriminate but fire late become alerts instead.
- 4
Score and set the scoreboard
The book is scored with components visible per account, bands drawn from the accuracy sheet, and the new version reported against the old one on the same window.
Frequently asked questions
Why cut the two signals that predict churn best?
Because they are measuring the aftermath of a decision, not the run-up to one. Support volume spikes once a team has started extracting its data. Payment goes late once nobody is defending the line item. Both arrive inside the notice period, which is a report rather than a warning.
What is the difference between the decision date and the end date?
Whatever was left on the paid term. A subscription set to cancel at the end of its period keeps a live status throughout, and the schedule can be reversed at any point before the term ends. Measure lead time against the end date and every signal looks months earlier than it is.
We have no clean churn data. Is this pointless?
No, but it is a different product and worth saying so plainly. Without churn history the weights cannot be earned, so the space defines every signal precisely, sets up the measurement, and starts the clock. The first real recalibration is then possible a quarter out instead of never.
Why does coverage disqualify an accurate signal?
Because a signal only scores the accounts it can see, and the rest get a default. A satisfaction rating can only be created for a resolved ticket, and only by the person who filed it, so it is structurally blind to every account that never contacted support.
Our scores drift down across the whole book. What causes that?
Usually a definition change nobody logged. Analytics platforms apply group and property changes to new data and leave history alone, so a window spanning the change averages two different signals. The test is the base churn rate: if that held flat, measurement moved and your customers did not.
How is this different from the score in our CS platform?
The platform computes and displays a score. It does not tell you whether the weights it is computing are worth anything, because it has no view of your churn outcomes joined back to the signal history. This pack is the calibration layer, and its output can drive whichever tool renders the number. Same relationship a metric definition has to the dashboard plotting it.
Does this depend on our fields being clean first?
Coverage does, and the sponsor signal is the clear case: it needed 39 blank fields backfilled before it cleared the bar. A field dictionary and account-level survivorship rules are what stop a duplicate account splitting one customer's usage across two rows.
Find out what your health score is actually predicting
Send twelve months of churn with the decision dates, plus your usage, ticket and billing exports, and get the measured weights back.
Get the template