Build the customer health score template in a spreadsheet with five signals: product usage (35%), relationship (25%), support (15%), commercial (15%) and sentiment (10%). Score each signal 0, 50 or 100 with a written rule, take the weighted sum, and band it: 75 and above healthy, 60 to 74 watch, 40 to 59 at risk, under 40 critical. Refresh monthly. Exempt accounts under 90 days old from the usage rule.
Leadership asked for one customer health score template by the end of the quarter. You have a CRM, a helpdesk, some product analytics, a billing system, and a customer success team of two to seven people, none of whom is a data scientist. Every CSM carries their own definition of "healthy" in their head, and the accounts that churned last quarter were green in somebody's head right up to the cancellation email.
This page is the customer health score template we would build in that situation: a spreadsheet, five signals, fixed weights, and rules simple enough that two people scoring the same account get the same number. It takes an afternoon. It will not predict churn perfectly. It will stop the team arguing about what healthy means, and it gives you a baseline to judge any platform against later.
- Use five signals and three-value rules (0, 50, 100). Two CSMs scoring the same account must get the same number, or the score is opinion with decimals.
- Weight the signals that move before the customer decides: product usage 35, relationship 25, support 15, commercial 15, sentiment 10.
- Band the result at 75, 60 and 40, and write the action next to each band before you score a single account.
- Keep last month's score in its own column. The delta predicts more than the level does.
- Score customers younger than 90 days on onboarding milestones, never on usage. New accounts scoring red is one of the recurring complaints about health scores across 3,628 public reviews.
Questions this page answers
- how do I build a health score without a data scientist or a CS platform
- could anyone share some customer health score examples that work
- customer health score template for google sheets
- how do you predict churn without a data scientist
- how do I build a customer health score in HubSpot
- what weights should I use in a customer health score
- What goes in a customer health score template?
- How do I build a health score in a spreadsheet this afternoon?
- What does the template look like with five accounts scored?
- Which rules stop people gaming the score?
- What will the spreadsheet never tell you?
- When should we move off the spreadsheet?
- How does GainTrace score the same signals automatically?
What goes in a customer health score template?
A customer health score is a weighted sum of a few signals, each scored on the same scale. The template question is which signals, what weights, and what rule turns raw data into a score. Our answer, after reading 3,628 public reviews and the r/CustomerSuccess threads on the subject, is five categories, weighted toward the signals that move before the customer has decided anything.
The reviews are blunt about what happens without a written template. Of the 2,094 sentences where reviewers describe the problem they bought a platform to solve, 37 mention a spreadsheet or Excel, and the story is the same each time: the sheet was the health score until nobody maintained it. Another 731 reviews describe the job as "one place" or "getting out of spreadsheet hell". The sheet did not fail because it was a sheet. It failed because the rules lived in people's heads.
“We had no way of giving our customers a health score (outside of 'gut feeling') or a scalable way of knowing their usage data and using that data to make decisions.”
| Signal | Weight | Score 100 when | Score 50 when | Score 0 when | Where it lives |
|---|---|---|---|---|---|
| Product usage | 35 | 60%+ of paid seats active in the last 30 days and flat or up on the prior 30 | 30% to 59% active, or down 20% to 40% | Under 30% active, or down more than 40% | Product analytics or an admin export |
| Relationship | 25 | Two-way contact in the last 30 days and the sponsor who signed is still in role | Contact 31 to 60 days ago, or sponsor status unknown | No reply in 60+ days, or the sponsor has left | CRM activity, LinkedIn, your inbox |
| Support | 15 | No ticket open more than 7 days and no escalation in 90 days | One ticket open more than 7 days, or one escalation | Two or more stale tickets, or an escalation that reached your exec | Helpdesk |
| Commercial | 15 | Last three invoices paid on time and 70%+ of licensed seats assigned | One late invoice, or 40% to 69% of seats assigned | Invoice overdue 30+ days, or under 40% of seats assigned | Billing system |
| Sentiment | 10 | NPS 9 or 10, or a positive CSAT, in the last six months | NPS 7 or 8, or no response | NPS 0 to 6, or a written complaint | Survey tool or your inbox |
The weights are a starting split, not a law. Product usage gets the most because it is the only category that changes before a renewal conversation exists. Sentiment gets the least because surveys are answered by a small, unrepresentative slice of the base. If you want to test other splits before committing, the customer success scorecard builder runs the same five-category model and shows how many points each category contributes.
Health score = (Usage score × Usage weight) + (Support score × Support weight) + (Engagement score × Engagement weight) + (Commercial score × Commercial weight)
- Each input score
- 0 to 100, so the total lands on the same scale whatever the weights
- Weights
- must sum to 1. Start at 0.4 usage, 0.2 support, 0.2 engagement, 0.2 commercial and change them only after a backtest
- Watch for
- any input a CSM types by hand. It will drift upward, which is why the change column matters more than the level
How do I build a health score in a spreadsheet this afternoon?
Budget three hours for the first version, most of it spent pulling exports. Do it in one sitting so the rules are written while the data is in front of you.
Export the account list from billing
One row per paying account: name, ARR, renewal date, start date, plan, licensed seats. Billing is the source of truth because it cannot contain a customer who is not paying. Add a column for the named CSM.
Add five signal columns and write the rule above each
Paste the rule from the table into the header cell as a note. The rule is the product; the number is a by-product. If a rule needs judgement to apply, tighten it until it does not.
Fill each column from its export
Product usage from your analytics tool or a monthly active-users export. Last contact from CRM activity. Open tickets and escalations from the helpdesk. Invoice status from billing. Last survey response from the survey tool. Use VLOOKUP or XLOOKUP on the account name or ID. Do not type numbers by hand; a typed number is an opinion.
Compute the score with one formula
In the score column:
=SUMPRODUCT(weights, signals)/100, where weights is a fixed row holding 35, 25, 15, 15, 10 and signals are the five cells for that account. The result is 0 to 100.Band it with conditional formatting
Four rules on the score column: 75 and above green, 60 to 74 amber, 40 to 59 orange, under 40 red. Write the action for each band in a legend at the top of the sheet: healthy means run the expansion conversation, watch means fix the weakest signal before renewal season, at risk means open a rescue play this week, critical means escalate today.
Add a previous-score column and a delta
Before each refresh, copy the current score into a last-month column. Delta is current minus previous. Sort by delta ascending. A healthy account that dropped 20 points is a better use of Tuesday than a critical account that has been critical for a year.
Add the new-customer exception
For any account under 90 days old, replace the usage rule with three onboarding milestones (admin configured, first integration live, first weekly active user outside the champion). Score 100 if on plan, 50 if one milestone is late, 0 if two are. Without this, every new account scores red and your CSMs stop trusting the sheet in month one.
Put the refresh in the calendar
First working Monday of the month, 90 minutes, one owner. Score refreshes that depend on "when someone has time" stop within a quarter, and a health score nobody refreshes is worse than none, because people keep reading it.
What does the template look like with five accounts scored?
Here is the template applied to five accounts from a fictional 120-account book, using the rules above. The names are invented; the patterns are the ones we see most often.
| Account | ARR | Usage (35) | Relationship (25) | Support (15) | Commercial (15) | Sentiment (10) | Score | Band |
|---|---|---|---|---|---|---|---|---|
| Northwind Logistics | $48,000 | 100 | 100 | 50 | 100 | 50 | 87.5 | Healthy |
| Meridian Analytics | $95,000 | 0 | 100 | 100 | 100 | 100 | 65 | Watch |
| Bluefin Retail | $30,000 | 100 | 50 | 0 | 50 | 0 | 55 | At risk |
| Harbor Dental Group | $12,000 | 50 | 0 | 100 | 100 | 50 | 52.5 | At risk |
| Cobalt Staffing (week 6) | $8,000 | 50* | 100 | 100 | 100 | 50 | 77.5 | Healthy |
Reading the five rows
Northwind is the account you expect: active, responsive, one ticket dragging. Run the expansion conversation. Meridian is the one that fools everyone: the calls are warm, the invoices are paid, the NPS is a 9, and 12% of seats logged in last month. It reads as green in every meeting and scores 65 because the weights refuse to let charm outvote usage. Bluefin is the opposite: heavy users who are angry, with an escalation open and a detractor score. Usage alone would call it healthy. Harbor Dental has adequate usage and a sponsor who left in July; nobody on their side has replied since. That is the relationship column doing its job. Cobalt is six weeks in, so the asterisk marks the onboarding rule: one milestone late, everything else on track. Without the exception its usage would score 0 and it would sit at 60, in the watch band, for the crime of being new.
A login-only score would have called Bluefin healthy and made Meridian the only red. Both calls are wrong, and that is the whole argument for five signals instead of one.
Which rules stop people gaming the score?
The change column scores the direction of each input over 30 days, next to the column that scores its level. An account at 60% usage that was at 85% last month is a different account from one that has sat at 60% all year, and only the change column can tell them apart.
The most common failure of a spreadsheet score is not the maths. It is a CSM nudging a cell to make a review go faster. The r/CustomerSuccess thread that asked for health score examples describes it exactly.
“We can not go on this way, because many tasks are marked as completed just by adjust the customer health scores based on personal judgment.”
Four rules keep the sheet honest, and each is cheap:
- Three values only. A signal is 0, 50 or 100. "Feels like a 70" is not available, so there is nothing to nudge.
- No override column. If a CSM believes the score is wrong, they change the input data or propose a rule change at the monthly refresh, with an example account. The rule improves for everyone or it does not change.
- Every input is a lookup. The moment a column is typed by hand, it becomes the column people argue about.
- Log rule changes in a tab with the date. A score whose rules moved twice this quarter cannot be trended, and the trend is the part that predicts.
The one score that does need a human is sentiment, and only because survey coverage is thin. Allow the CSM to score sentiment 0 from a written complaint, but require the complaint to be linked in the cell note.
Input change = (This month's value − Last month's value) ÷ Last month's value × 100
- This month's value
- the raw input, not its score: logins, active seats, tickets, days since contact
- Why it beats the level
- an account at 60% usage that was at 85% last month is falling. One at 60% all year is stable. The level column cannot tell them apart
What will the spreadsheet never tell you?
The person who wrote the most-read thread on this subject had already built the sheet. He was asking why it was not helping.
“Right now our "risk detection" is a health score I built in a spreadsheet. Red when logins drop. Problem is, by the time logins drop, the decision to leave already happened weeks earlier. I'm flagging accounts I should have called a month ago.”
Most health scores we have seen are a weighted average of whatever data was easy to export, refreshed when someone remembered. The template above is better than that because the rules are written down, but it has four limits you should know before you present it to leadership.
- It is monthly. A usage drop in week one shows up at the next refresh, up to five weeks later. The account in the quote above churned in that gap.
- It sees seats, not depth. "Active" in most exports means logged in. A customer who logs in to export their data before leaving looks active.
- It has no history until you give it some. The delta column is the most predictive thing in the sheet and it is empty for the first month and thin for three.
- It is one score for one product. If you sell two products or bill by parent and child accounts, the sheet needs a row per relationship, and most teams give up here.
None of these are reasons not to build it. They are the reasons the sheet is a 90-day tool, and the list of things to check when it says green and the customer churns anyway. That failure has nine known causes, and we walk through each in why your health score is wrong.
When should we move off the spreadsheet?
The sheet stops working at a predictable point, and it is a capacity point rather than a data point. Here is the check we would run each quarter.
The spreadsheet has stopped working when two or more of these are true
- More than 150 accounts are scored, or more than three people score them.
- Three or more of the five signals need a manual export each month.
- The monthly refresh has been skipped or run late twice in the last two quarters.
- Someone outside customer success (finance, the CEO, a board deck) now reads the score.
- You have caught a churn after the fact that the sheet had flagged, and nobody acted because nobody looked.
- A CSM has asked which of their 40 amber accounts to call first, and the sheet cannot say.
Zero or one of these true: keep the sheet, tighten the rules, and spend the money elsewhere. Two or more: the score is no longer the bottleneck, the refresh is, and the honest comparison is the cost of a platform against the hours the refresh consumes plus the churn that slipped through the gap. We set that comparison out, with the admin-time figures from the review corpus, in spreadsheet to customer success platform.
“Visibility on customer health was a best guess and monitoring product usage was extremely time consuming and manual.”
How does GainTrace score the same signals automatically?
GainTrace runs the same five-signal model across every account and re-scores as the data changes, with the inputs pulled from billing, CRM, product usage and support rather than exported by hand. Product signals replaces the usage column with depth and trend rather than logins, and churn prediction ranks the amber accounts so a CSM knows which of the 40 to call first. The rules stay visible: every score breaks down signal by signal, the way the sheet does.
Frequently asked questions
Can I build a customer health score in HubSpot instead of a spreadsheet?
How many signals should a customer health score have?
What weights should I use for a customer health score?
How often should I update a spreadsheet health score?
How do I score a customer who signed up last month?
Do I need product usage data to build a health score at all?
How this was researched
We read 3,628 public G2 reviews of the three most-reviewed customer success platforms, extracted the 2,094 sentences that describe the problem the reviewer bought the tool to solve and the 1,269 that describe a pain, and counted the ones about spreadsheets, gut-feel scoring and new accounts scoring red. We read the r/CustomerSuccess threads on building a health score without a data scientist and quote them here. The template weights and bands are the same ones our scorecard tool uses; they are a defensible starting split, not a published benchmark.
- r/CustomerSuccess: How do you predict churn without a data scientist?
- r/CustomerSuccess: Could anyone share some customer health score examples that work?
- r/CustomerSuccess: My manager requires perfect customer health metrics
- r/CustomerSuccess: Why isn't our health score actually predicting churn?
- Google Sheets Help: Use conditional formatting rules
Build the sheet this afternoon, then see the same five signals scored for every account without the exports. Start free or book a demo.
See GainTrace first in your Google results
Add as a preferredsource on Google