Fundamentals

Customer health score formula (with a worked example)

Turn login counts and feature usage into one 0-100 health score. Walk through Acme Corp step by step, then see the weighted formula, CRM extension, and normalization methods.

Jide··5 min read

TL;DR

Normalize four signals to 0-100, then combine: Activity (40%) + Engagement (30%) + Milestones (20%) + Recency (10%). Example: Acme Corp scores 72.6 (monitor band). Add CRM data when available. Recalculate daily or in real time.

A health score formula turns raw usage data into one number from 0 to 100. You pick signals, normalize them, weight them, and sum.

For what a health score is and when to use one, see customer health score. This page is the math.

Worked example: Acme Corp scores 72.6

Start with a real account. Same steps you would use in a spreadsheet.

Raw data for Acme Corp:

  • Logged in 16 times in the last 30 days (benchmark: 20 = perfect)
  • Used 6 of 10 key features, 4 return visits, medium session depth
  • Completed onboarding, activated 3 of 5 core features
  • Last meaningful action: 3 days ago

Step 1: Normalize each signal (0-100)

  • Activity: 16/20 × 100 = 80
  • Engagement: feature breadth 60% + return frequency 70% + session depth 55% ≈ 62
  • Milestones: 3 of 5 core features activated, onboarding complete = 65
  • Recency: 3 days ago, within the 7-day window = 90

Step 2: Apply weights

  • Activity: 80 × 0.40 = 32.0
  • Engagement: 62 × 0.30 = 18.6
  • Milestones: 65 × 0.20 = 13.0
  • Recency: 90 × 0.10 = 9.0

Step 3: Sum

  • Health score = 32.0 + 18.6 + 13.0 + 9.0 = 72.6

Read the result: 72.6 sits in the monitor band (60-79). Activity (80) and recency (90) look fine. Engagement (62) and milestones (65) lag. Next step: educational outreach to drive feature adoption. For what to do at each band, see how to reduce SaaS churn.

The weighted formula

Each signal scores 0-100 on its own, then combines with fixed weights:

The Signal Stack

Health Score = (Activity × 0.40) + (Engagement × 0.30) + (Milestones × 0.20) + (Recency × 0.10)

Activity
Login frequency, session count, and daily active usage patterns (0-100)
Engagement
Feature adoption depth, interaction quality, and usage breadth (0-100)
Milestones
Onboarding completion, feature activation, and expansion behaviors (0-100)
Recency
Time since last meaningful interaction — decays rapidly after 7 days (0-100)

Activity (40%) measures event frequency over 30 days: logins, actions, features used. Declining usage is the strongest churn predictor.

Engagement (30%) measures depth: session length, return visits, feature breadth. Catches customers who log in but do not get value.

Milestones (20%) tracks cumulative wins: onboarding done, core features activated, teammates invited.

Recency (10%) measures days since last meaningful action. Scores decay fast after 7 days of silence.

Unweighted vs weighted

Unweighted average works for a first pass: add normalized metrics and divide by count.

Weighted is better once you have churn data. Not every signal predicts equally. Activity usually beats milestones for early warning.

CRM extension

When CRM data exists alongside product usage, blend behavioral and relationship signals.

Composite score with CRM data

Composite Score = (Behavioral Score × 0.85) + (CRM Health × 0.15)

CRM Health Composite Score

CRM Health = (Support Health × 0.40) + (Relationship Health × 0.40) + (Commercial Health × 0.20)

Support Health
Open ticket count, average resolution time, recent escalations (0-100)
Relationship Health
Contact count, days since last meeting, champion status (0-100)
Commercial Health
Deal stage, days until renewal, active expansion opportunities (0-100)

Support health covers open tickets, resolution time, and escalations. Trend matters more than count alone.

Relationship health covers contact count, days since last meeting, and champion status. Single-threaded accounts with no recent meeting carry risk even when usage looks fine.

Commercial health covers renewal timing, deal stage, and expansion pipeline. Renewal soon plus declining usage is a bad combo.

Data source modes

Not every company has SDK events and CRM data at once.

When to Use Which Data Source
Data AvailableModeCalculationUse Case
SDK events onlysdk_only100% Signal StackProduct-led companies, no CRM integration
CRM data onlycrm_only100% CRM HealthSales-led companies, no SDK installed
SDK + CRMsdk_and_crm85% Signal Stack + 15% CRM HealthHybrid companies with both data sources

Product-led teams without CRM use behavioral signals only. Sales-led teams without SDK use CRM health only. Teams with both get the composite score above.

Normalization methods

Different metric types need different scaling before you weight them.

Metric typeNormalizationExample
Higher = bettervalue / max_value × 10016 logins / 20 benchmark = 80
Lower = better(1 - value / max_value) × 1002 tickets / 10 max = 80 (inverted)
BooleanYes = 100, No = 0Onboarding complete = 100
PercentageAlready 0-10060% feature adoption = 60
Time-based (recency)Exponential decay from last action3 days = 90, 14 days = 40, 30 days = 10

Recency uses exponential decay, not linear. Silence after 7 days drops the score quickly. By 30 days without action, recency is near zero.

Common formula mistakes

  • Too many metrics. Fifteen inputs create noise. Stick to 4-7 that you can measure and act on.
  • Never recalibrating. Review quarterly against actual churn. Last year's weights may be wrong today.
  • One size fits all. Segment enterprise vs SMB, or adjust thresholds per motion.
  • No validation. If high-score accounts still churn, your weights or signals are off.
  • Manual spreadsheets only. Stale scores miss the two-week quiet period before cancel.
  • Ignoring CRM. Great usage with a departing champion is still risk. Blend sources when you can.

Scores are inputs, not outcomes

A formula tells you who needs attention. It does not tell you dollars saved. Pair scores with early warning signs and save playbooks. For the business case beyond dashboards, see customer health score.

Software comparison

Customer Health Score Software Comparison
PlatformScoring ApproachSetup TimeBest For
FirstDistroAI-powered Signal Stack — auto-learns weights from behavioral dataUnder 30 minutesSMB SaaS teams who want automated health scoring + AI recommendations
GainsightRule-based — manual threshold configurationWeeks to monthsEnterprise teams with dedicated CS ops staff
ChurnZeroRule-based with templatesDays to weeksMid-market teams wanting template-driven setup
VitallyRule-based + some ML optionsDaysB2B SaaS teams wanting a balance of automation and control
TotangoRule-based journey trackingWeeksTeams focused on journey-based customer success

Rule-based tools need manual thresholds. Automated platforms calculate continuously from live events. See how FirstDistro compares to Gainsight for platform differences.

FirstDistro calls this weighted four-signal approach the Signal Stack. Same math as the Acme example above: normalize, weight, sum, act on the band.

Frequently asked questions

What is the basic customer health score formula?

Unweighted: Health Score = (sum of normalized metric scores) / (number of metrics). Weighted (recommended): Health Score = (Activity × 0.40) + (Engagement × 0.30) + (Milestones × 0.20) + (Recency × 0.10). Each input is normalized to 0-100 first.

Should I use weighted or unweighted health scores?

Start unweighted for simplicity. Move to weighted once you know which metrics predict churn in your product. Activity usually matters more than milestones, so equal weights often mis-rank accounts.

How many metrics should I include in my health score formula?

Aim for 4-7. Fewer than 4 misses risk. More than 7 adds noise. The worked example uses four behavioral signals: activity, engagement, milestones, and recency.

How do I weight metrics in my health score formula?

Weight by correlation with churn. A common starting point: Activity 40%, Engagement 30%, Milestones 20%, Recency 10%. Activity gets the highest weight because declining usage is the strongest churn predictor.

How often should I recalculate health scores?

Daily or real time. Weekly or monthly spreadsheets miss accounts that go quiet for two weeks and never come back. Automated scoring updates as events arrive.

Can I include CRM data in my health score formula?

Yes. Composite Score = (behavioral score × 0.85) + (CRM health × 0.15). CRM health blends support (40%), relationship (40%), and commercial (20%) signals when tickets, meetings, and renewal data exist.

Can I have different formulas for different customer segments?

Yes. Enterprise and SMB healthy usage patterns differ. A startup may log in daily; an enterprise team may log in weekly. Use segment-specific thresholds or weights to avoid false alarms.


Stop churn before it starts

FirstDistro monitors customer health in real-time using the Signal Stack formula and alerts you when accounts are at risk.

Guided onboarding · See the right rollout path

Summary

Definition

A customer health score formula is the calculation that transforms raw customer behavioral data into a single health score (0-100). It defines which metrics you track, how you normalize them, how you weight them, and how they combine into the final score.

Formula

Health Score = (Activity × 0.40) + (Engagement × 0.30) + (Milestones × 0.20) + (Recency × 0.10)

Key Signals

  • Activity (40%): Event frequency over the last 30 days
  • Engagement (30%): Session depth, return frequency, feature breadth
  • Milestones (20%): Feature adoption checkpoints (cumulative)
  • Recency (10%): Days since last meaningful action

Thresholds

80-100HealthyAll signals stable or improving
60-79MonitorOne signal declining
40-59At-RiskTwo or more signals declining
20-39CriticalActivity and engagement in decay
0-19ChurningAll signals near zero

Framework

Weighted four-signal formula (activity, engagement, milestones, recency) with optional CRM extension. FirstDistro calls this approach the Signal Stack.