Customer Health Score Says Green but They're Leaving? (2026)

Why customer health scores show green on accounts that churn, plus a 6-step spreadsheet method with a worked example to catch renewal risk early in 2026.

Your dashboard shows 38 of 40 weekly active users, 95% of seats in use, and a tidy label: Healthy 92. A month later, the champion emails to ask what a wind-down would look like. This guide explains why that happens and how to fix it with a spreadsheet you can build this week. It also covers when a dedicated tool such as Product Success or BuildBetter's conversation-aware health scoring becomes worth adopting. The method comes first, and none of it requires buying anything.

The Account That Scored 'Healthy 92' and Asked for a Wind-Down

A customer health score is a single number, usually 0-100, that estimates how likely an account is to renew or expand. It is a weighted combination of signals: product usage, support activity, what the customer says on calls and in email, billing status, and relationship coverage (how many people at the account you actually know).

The account above is a green-but-leaving account. In churn-prediction terms, that is a false negative on churn risk. The model says the customer is healthy while they have already decided, or are deciding, to leave. Every one of these accounts lowers your model's recall, meaning the share of real churners it catches.

The cause is almost always the same. The score's inputs measure activity, and the decision to leave happens in conversations the score never reads.

Logins measure habit, not intent. People keep using a tool every day right up until the contract ends, because their work still depends on it while they evaluate a replacement.

In this guide you will get:

  • Seven reasons usage-only health scores miss churn
  • A six-step method you can run in a spreadsheet today
  • A worked example with real arithmetic, from Healthy 92 to Critical 31
  • The mistakes that keep scores green and wrong
  • A rule-of-thumb threshold for when manual tracking stops working

The stakes are real. Bain's Frederick Reichheld found that a 5% increase in retention raised profits by 25% to 95%. That research came from financial services, so treat it as directional for SaaS. Private B2B SaaS companies commonly report median gross dollar retention in the high 80s to low 90s, which means losing roughly 8-15% of ARR each year. Check your own GRR. At $10M ARR, each point you recover is $100K.

Why Usage-Only Health Scores Miss Churn

Usage-only health scores miss churn because they read what customers do, while churn starts with what customers say. Seven failure modes account for nearly every green-but-leaving account.

1. Usage is a lagging indicator

In contracted B2B SaaS, activity usually drops after the cancel decision, often only once the replacement is in production. By the time logins fall, the renewal conversation is already lost.

2. Contractual stickiness looks like adoption

Teams keep working in a tool they have already decided to replace. Seat utilization measures prepaid capacity being consumed. It does not measure satisfaction. High utilization on an annual contract is fully compatible with an active replacement project.

3. Intent lives in words

Phrases like “we're evaluating alternatives,” “our new VP wants to consolidate tools,” “send over the contract terms,” and “what would a wind-down look like” show up on calls, in email, in Slack Connect threads, and in tickets. None of them shows up in product analytics. For a longer list of verbal warning signs, see how to spot churn signals in customer conversations.

4. Missed commitments are invisible

A customer says on a call, “we'll publish the first campaigns by end of next week.” Nothing happens. Usage tools see no change, because nothing happened. Call notes record the promise but never check the product. The signal is the gap between the two, and it only appears when someone cross-checks them.

5. One model for every customer

A three-seat self-serve account and an enterprise account with an executive sponsor churn for different reasons. A single weighting scheme is wrong for both.

6. Unexplained scores do not get acted on

When a CSM sees “64” with no reason attached, they cannot tell noise from an emergency, so they deprioritize it.

7. The score is never tested

Most teams set weights once, at launch, and never check them against the accounts that actually churned.

The Method: Rebuild Your Health Score in 6 Steps (No Tool Required)

You can rebuild a health score that catches green-but-leaving accounts using a spreadsheet, a support desk export, your call notes, and a product analytics export. You don't need a budget or a vendor. Plan on one afternoon to set it up and about an hour a week to keep it current. For score-design fundamentals, see how to build a customer health score.

Step 1: List your signals in four families

  • Usage: active users vs. seats, core-feature adoption, 30/60/90-day trend.
  • Conversation: explicit risk language on calls, email and Slack; champion departure; a new decision-maker; competitor mentions; missed commitments.
  • Support: ticket volume trend, severity, repeat issues, time-to-resolution, tone of the last three tickets.
  • Commercial: payment failures, downgrade requests, contract and notice-period dates.

Keep Commercial separate on purpose. Billing vendors commonly attribute a large share of subscription churn to involuntary causes such as expired cards (figures around 20-40% are often cited; check the latest published edition). A failed payment on a green account may be recoverable friction, not intent.

Step 2: Assign weights and hard overrides

Start from a usage baseline and use additive deductions, so every lost point maps to a named factor. Then set hard overrides. Any written or spoken request about cancellation terms, wind-down, or data export caps the score at Critical (below 35), regardless of usage. Suggested tiers: Healthy 70-100, At-risk 35-69, Critical below 35.

Signal familyWhat it actually measuresWhere to find itExample signalSuggested deduction (starting point)
UsageHabit and capacityProduct analytics30-day active users down 25%-5 to -15
ConversationIntentCall notes, email, Slack“Evaluating alternatives”-15 to -30, or hard override
SupportFrictionHelp desk3 P1 tickets in 30 days-3 to -10
CommercialAbility and willingness to payBilling, CRMPayment failed-5 to -10

These ranges are starting points for calibration in Step 5. They are not industry benchmarks.

Weight explicit intent statements, and ignore the overall mood of the call. A furious bug complaint from a power user often means they care about the product. A calm “can you send the contract terms” from the economic buyer is a churn signal. Tag the speaker's role (end user, champion, economic buyer), because the same phrase deserves a different deduction depending on who said it.

Step 3: Cite the source behind every factor

Every deduction row gets a source column: “Call 2026-01-14, 12:40,” “Ticket #4471,” or “Stripe invoice failed 2026-01-09.” The rule is simple. If you cannot point to the evidence, the deduction does not count. This one rule raises CSM trust more than any weighting change.

Step 4: Build separate models per segment

At minimum, split your book into self-serve/low-touch, mid-market, and enterprise. Self-serve weights usage and billing heavily. Enterprise weights conversation and relationship signals heavily: champion change, a new CFO or procurement contact, and executive sponsor silence. In high-touch segments, silence is a signal in its own right. Declined QBRs and unanswered sponsor emails should cost points even when usage is flat. Roll each segment model up to the same 0-100 scale so the whole book stays comparable.

Step 5: Back-test on last year's churned accounts

Pull every account that churned or downgraded in the past 12 months, plus an equal number that renewed. Score each one using only the data available 90 days before renewal. Count how many churned accounts your model flagged as At-risk or Critical (recall), and how many renewed accounts it flagged wrongly (false positives). Adjust weights until most churners are flagged and most renewals are not. Write the hit rate down so your next re-test has a baseline.

Step 6: Route every flag to an owner with the reason

Each flag goes to a named person with the top one to three factors, their sources, and one concrete next step, such as “exec call within 5 business days” or “send migration-help offer.” Accounts with no CSM go to a shared queue reviewed weekly. A flag with no owner is a report. It only becomes an intervention once someone owns it.

Weekly cadence checklist

  • Update the usage export
  • Scan the week's calls and tickets for risk language
  • Log missed commitments (stated date vs. actual product activity)
  • Recompute scores
  • Review new Criticals in a 15-minute standup

Worked Example: Healthy 92 on Usage, Critical 31 With Tickets and Calls

The same account can score Healthy 92 on usage alone and Critical 31 once calls and tickets are counted. Here is the arithmetic.

The account has 40 seats and 38 weekly active users (95% utilization). Core features are adopted and there are no failed payments. The usage-only model scores it Healthy 92, and no one is assigned to look at it.

The conversation and support data tell a different story:

  • On a recent call, the champion says, “We're evaluating alternatives.”
  • A ticket thread asks the team to “send over what a wind-down would look like.”
  • Ticket volume has risen over the past 30 days.

Using the illustrative weights from Step 2:

  • Baseline (usage): 92
  • -25 “Evaluating alternatives” (Call 2026-01-14, 12:40, champion)
  • -30 “Wind-down request” (Ticket #4471)
  • -6 “Ticket volume rising” (help desk, 30-day trend)

92 - 25 - 30 - 6 = 31. The hard override in Step 2 independently forces Critical as well, so the result holds even if you dispute a weight.

Usage-only modelBlended model
Score9231
TierHealthyCritical
OwnerNoneSenior CSM, assigned today
Next actionNoneExec call within 48-72 hours
Evidence shown to CSM“95% seat utilization”Call timestamp, ticket #4471, ticket trend

The decision

  1. Move the account to Critical and assign it to the senior CSM today.
  2. The CSM's manager requests an executive call within 48-72 hours.
  3. Prepare the renewal conversation around the specific gaps named in the tickets. See how to prepare for a renewal call.
  4. Check the notice period and renewal date so the team knows how much runway exists.
  5. Decide explicitly between offering migration help and a scoped re-commitment plan. Don't discount by reflex.

What the model learns

Add “competitor evaluation language” as a hard-override trigger in the mid-market segment, and add this account to next quarter's back-test set.

The account may still churn. The score exists to give the team a month of runway instead of none. HBR has reported that acquiring a new customer costs 5 to 25 times more than keeping one, which makes a month of runway on a large renewal worth far more than an afternoon of spreadsheet work.

Common Mistakes That Keep Health Scores Green and Wrong

Most broken health scores fail for organizational reasons, not mathematical ones. Watch for these.

  • Treating NPS or CSAT as the health score. Survey responses are sparse, skew toward engaged users, and often come from an end user instead of the economic buyer. A 2007 Journal of Marketing study by Keiningham and colleagues found NPS was no better at predicting growth than other satisfaction measures.
  • Sentiment-scoring every sentence. Generic negative tone, like a complaint about a bug, is not churn intent. Score explicit intent statements and ignore overall mood.
  • Optimizing the metric instead of the outcome. Once CSMs are judged on green scores, they run login campaigns that raise usage without changing renewal odds. That is Goodhart's law: a measure that becomes a target stops measuring anything.
  • Never re-testing. Weights drift as the product, pricing, and customer base change. Re-run the Step 5 back-test at least twice a year.
  • One model for the whole book. Enterprise risk signals get lost among self-serve noise, and the reverse happens too.
  • Flags without owners or reasons. These alerts end up on a dashboard nobody opens.

Failure modes no tool solves, including ours

Some churn never surfaces in any channel. Examples include board-mandated cost cuts, acquisitions, and a new CFO consolidating vendors in a room you're not in. Single-threaded relationships fail silently when the only contact leaves. Some accounts never talk to you at all. The fixes are human:

  • Multi-thread every account above a set ARR threshold.
  • Schedule executive check-ins before the notice window opens.
  • Ask directly about budget and priorities at every QBR.

When the Spreadsheet Stops Working (and What to Use Instead)

Usage-only scoring is enough for low-touch, self-serve products where customers rarely call or file tickets. In that case, run Steps 4 and 5 with usage plus billing signals and skip the conversation family.

Usage alone is not enough for any product where customers have calls, email threads, or tickets with your team. That is where intent shows up, so you need both.

Rule of thumb (not a benchmark): manual scanning breaks down once your team handles more conversations and tickets each month than CSMs can actually read, roughly a few hundred. It also breaks down when many accounts have no assigned owner, or when tracking missed commitments means cross-checking call notes against product data by hand every week.

If you outgrow the spreadsheet

OptionBest forReads conversations?Explainable, cited factors
1. BuildBetter (Product Success + BuildBetter Health)B2B teams with calls, email, Slack and ticketsYes, recorded first-handYes, every factor links to its source
2. CustifySaaS teams wanting usage-driven scoring and playbooksVerify with vendorVerify with vendor
3. ClientSuccessSmaller CS teams wanting a lightweight platformVerify with vendorVerify with vendor
4. The spreadsheetLow-touch books; calibration baselineManualYes, via source column

1. BuildBetter: best for conversation-aware health scoring

Product Success is the fastest place to start. It provides AI-generated product success metrics and insights for B2B teams, with no procurement cycle. If you need the full health model, BuildBetter Health (part of BuildBetter Success) automates the method in this guide:

  • Records calls, Gmail and Outlook, Slack threads, and tickets first-hand, then combines them with product analytics, billing, and CRM data.
  • Breaks every 0-100 score into cited factors such as “-8 Low product adoption (PostHog)” and “-5 Payment failed (Stripe).” Every risk flag links to the calls, tickets, and messages behind it.
  • Supports custom models per segment, ICP, or account. CS ops can configure them in the UI in an afternoon without writing SQL.
  • Runs on every account, owned or not. It routes flags to an owner with the reason and a drafted next step, and sends unowned accounts to a queue.
  • Tracks commitments, alerting when a promise made on a call has no matching product activity (for example, “Commitment missed, 21 days since the stated date”).

The Healthy 92 vs. Critical 31 account in this article mirrors the example on BuildBetter's site. Adjacent modules cover Lifecycle (stage gates that check real product state, plus renewal schedules with 90/60/30/15-day notice periods), Contracts (subscriptions across Salesbricks and Stripe), Re-engage (winback scoring on closed-lost deals), and Releases (“you asked, we shipped” emails). BuildBetter does not run in-app messaging campaigns or product tours. Pricing is published, with unlimited seats and usage-based credits. The platform is SOC 2 Type II, HIPAA, and GDPR compliant.

2. Custify

Custify is a smaller customer success platform focused on usage-driven health scoring and playbooks for SaaS teams. Ask how it ingests call, email, and ticket content before you rely on it for intent signals.

3. ClientSuccess

ClientSuccess is a lightweight CS platform suited to smaller teams. Run your Step 5 back-test against it during evaluation.

4. The spreadsheet itself

The spreadsheet remains a valid choice for low-touch books. It is also the calibration baseline for any tool you adopt, so keep your back-test results.

FAQ: Customer Health Scores That Miss Churn

Why does my customer health score say healthy when the customer is churning?

Most health scores are built mainly from product usage, and usage measures habit, not intent. Customers keep using a tool while they evaluate and migrate to a replacement because their work still depends on it. The decision to leave shows up first in calls, emails, Slack, and tickets, which usage-only scores never read.

What signals should a customer health score include?

Use four families. Usage covers active users vs. seats, core-feature adoption, and 30/60/90-day trend. Conversation covers explicit risk language, champion departures, new decision-makers, competitor mentions, and missed commitments. Support covers ticket volume trend, severity, repeat issues, time-to-resolution, and the tone of recent tickets. Commercial covers payment failures, downgrade requests, and renewal and notice-period dates. Weight each family differently by segment.

Is usage-only health scoring ever enough?

Yes, for low-touch, self-serve products where customers rarely talk to your team. Usage plus billing signals are adequate there. If your customers have calls with you, email your team, or file tickets, you need conversation and support signals as well.

How do I know if my health score is accurate?

Back-test it. Take every account that churned or downgraded in the last 12 months, plus an equal number that renewed. Score each using only data available 90 days before renewal. Then count how many churned accounts were flagged At-risk or Critical (recall) and how many renewed accounts were wrongly flagged (false positives). Record the hit rate and re-run the test at least twice a year.

Should explicit churn language override a high usage score?

Yes. Any written or spoken request about cancellation terms, wind-down, data export, or contract exit should cap the account at Critical regardless of usage. Route it to a named owner the same day with the evidence attached.

Can I build a better health score without buying software?

Yes. A spreadsheet with weighted deductions, a source column for every factor, separate tabs per segment, and a weekly review of calls and tickets will catch most green-but-leaving accounts. Tooling such as Product Success becomes necessary when conversation volume exceeds what your team can read.

Sources and Further Reading

Start With the Score You Already Have

Open last year's churn list this afternoon and score those accounts as they looked 90 days out. If most of them were green, your score is measuring habit, and the fix starts with reading what customers said. Use the spreadsheet method while it holds up. When your volume outgrows it, Product Success and BuildBetter Health run the same method on every account, with every point cited.

Pick the right BuildBetter tool for the job. See all tools