Understanding health scores

Learn how FirstDistro calculates health scores, what each component means, and how to improve scores for your customer accounts.

The 30-second version

Your health score is a number from 0 to 100 that tells you how well a customer account is doing.

  • 70-100: Healthy (green) — the account is active, engaged, and adopting your product.
  • 40-69: At-risk (amber) — something needs attention. Usage may be declining or key milestones haven't been reached.
  • 0-39: Critical (red) — the account is in danger. Immediate outreach is recommended.

The score combines four signals: Activity, Engagement, Milestones, and Recency. If your CRM is connected, a fifth signal (CRM health) is added.

How the overall score is calculated

Each component has a weight that determines how much it contributes to the overall score.

Without crm

ComponentWeight
Activity35%
Engagement20%
Milestones15%
Recency30%

With crm connected

Product signals account for 85% of the score; CRM adds 15%.

ComponentWeight (of total)
Activity~30%
Engagement~17%
Milestones~13%
Recency~26%
CRM health15%

When no custom milestones are present

Many accounts — especially newly installed ones using automatic $pageview capture — haven't recorded any custom milestone events yet. Rather than penalize these accounts with a hard 0% on a fifth of the score (which used to cap them around 80), FirstDistro redistributes the milestone weight proportionally across Activity, Engagement, and Recency. There is no phantom 0-score Milestones row, and a page-view-only account can still reach a fair 100.

ComponentNormalPage-view-only (no milestones)
Activity35%~41%
Engagement20%~24%
Milestones15%
Recency30%~35%

When a CRM is connected, the product signals still account for 85% of the score before the CRM's 15% is layered on; the same redistribution applies within that product portion when milestones are absent.

Worked example

Let's say a customer has these component scores:

  • Activity: 80 x 35% = 28 points
  • Engagement: 50 x 20% = 10 points
  • Milestones: 75 x 15% = 11.25 points
  • Recency: 60 x 30% = 18 points

Overall score: 67 — This account is at-risk. Recency and engagement are the biggest levers.

Worked example: page-view-only account

Now consider an account that just installed the SDK and only has automatic $pageview data — no custom milestone events. The milestone weight is redistributed (~41% / ~24% / ~35%):

  • Activity: 60 x 41% = 24.6 points
  • Engagement: 40 x 24% = 9.6 points
  • Recency: 100 x 35% = 35 points

Overall score: 69 — A fair, uncapped score with zero custom events. As the account records milestones, the weights shift back to the default distribution.

Recency-weighted activity and engagement

Activity and engagement use exponential decay — recent usage counts more than older bursts. Events from ~7 days ago contribute about half as much as events from today; older activity fades further. This prevents a short burst two weeks ago from keeping an account looking healthy while it has gone quiet.

Recency (days since last meaningful action) is weighted heavily at 30% of the composite score, so silence surfaces faster than under older formulas.

Activity score

The activity score measures meaningful, recent usage. It counts your custom track() events in full, and collapses automatic $pageview events to the number of distinct pages visited — so repeatedly refreshing the same page does not inflate the score. (Internal system events are excluded.)

Each event is weighted by age using exponential decay (half-life ~7 days). The decayed signal volume maps to a 0–100 score (capped at 50 decayed signals for 100).

For a page-view-only account, signals come from distinct pages reached plus any custom events you track — but only recent signals move the score.

"Why is my activity score low with many old events?" — A burst from weeks ago decays away. The score reflects whether usage is recent, not just whether it happened sometime in the last 30 days.

How to improve activity scores

  • Page views are captured automatically — the score rewards users reaching more distinct pages, not refreshing the same one.
  • Track custom events for the key workflows that matter most to your product.
  • Look for accounts that were recently active but have gone quiet — they may need a check-in.

Engagement score

The engagement score measures how deeply users interact with your product. Session depth (length, actions per session, return frequency over 30 days) is computed first, then multiplied by a recency decay factor based on days since last seen — quiet accounts are discounted even if historical sessions were deep.

Sub-componentWeight (of depth score)What full marks mean
Session length40%Average session lasts 5+ minutes
Session depth40%Average of 10+ events per session
Consistency20%Active every day of the month

"What does engagement 100 mean?" — Deep, consistent sessions and a recent return visit. An account that went quiet last week will see engagement drop even if past sessions were strong.

How to improve engagement scores

  • Focus on onboarding: guide users to valuable features early.
  • Look at session depth — if users visit but don't do much, the UI or workflow may need attention.
  • Track consistency: accounts that log in regularly are healthier than those with sporadic bursts.

Milestone score

The milestone score tracks key product adoption moments. It's based on how many distinct milestones the account has reached.

Milestones reachedScore
00
150
275
3+100

Default milestones include events like account_created, first_feature_used, and integration_connected. You can configure custom milestones in your event settings.

How to improve milestone scores

  • Define milestones that map to your product's "aha moments".
  • Use milestone data to identify accounts stuck in onboarding.
  • If an account has 0 milestones, they likely need hands-on help getting started.

Recency score

The recency score measures when the account was last active. More recent activity scores higher.

Last seenScore
Less than 1 day ago100
1-3 days ago80
4-7 days ago60
8-14 days ago40
15-30 days ago20
More than 30 days ago0

How to improve recency scores

  • Set up alerts for accounts that haven't been seen in 7+ days.
  • Use autopilot emails to re-engage accounts showing inactivity.
  • Investigate sudden drops — they may indicate a product issue or personnel change.

Crm score (when connected)

When your CRM (HubSpot or Attio) is connected, FirstDistro adds a fifth scoring component that incorporates relationship and support data.

The CRM score has three sub-components:

Support health (40%)

SignalScoring
No open tickets100
1-2 open tickets60
3+ open tickets20
High-priority ticket open0

Relationship health (40%)

SignalScoring
Recent meeting (last 14 days)100
Recent email (last 7 days)80
Some contact (last 30 days)50
No recent contact0

Commercial health (20%)

SignalScoring
Active deal, recently updated100
Active deal, stale50
No active deal / churned0

How to improve crm scores

  • Resolve support tickets promptly — open tickets drag down the score.
  • Maintain regular contact with accounts, especially at-risk ones.
  • Keep deal stages up to date in your CRM.

Risk levels and what to do

Risk levelScore rangeWhat it meansRecommended action
Healthy70-100Account is thrivingMonitor and nurture. Look for expansion opportunities.
At-risk40-69Warning signs presentInvestigate the lowest-scoring component. Reach out proactively.
Critical0-39Immediate attention neededPrioritize this account. Schedule a call. Check for product issues.

Trends indicate whether a score is getting better or worse compared to recent history.

  • Improving: Current score is 10+ points above the 7-day average.
  • Declining: Current score is 10+ points below the 7-day average.
  • Steady: Score is within 10 points of the 7-day average.

Trends are calculated for both the overall health score and each individual component.

Frequently asked questions

What does 68 mean?

A score of 68 means the account is in the at-risk range (40-69). The score is calculated from the weighted average of Activity, Engagement, Milestones, and Recency. To understand why it's 68, look at the component breakdown — the lowest-scoring component is your biggest opportunity.

Why is my activity score 80?

An activity score of 80 means recent meaningful usage is strong — not merely that old events exist in the trailing window. The number is a 0–100 score, not an event count.

What does engagement 100 mean?

An engagement score of 100 means users are deeply and consistently using the product: 5+ minute sessions, 10+ actions per session, and logging in daily. This is the best possible engagement level.

Is it 80 activities or activity score of 80?

It's an activity score of 80, not 80 activities. The score reflects decay-weighted recent usage, not a raw event count.

How do i get it up?

Look at the component breakdown to find the lowest scorer — that's your biggest lever. Each component section above includes specific improvement tips. Generally: increase product usage (Activity), deepen engagement (Engagement), ensure key features are adopted (Milestones), and maintain regular activity (Recency).

How often do scores update?

Health scores recalculate in real-time when you view a customer detail page. The nightly batch job updates all scores for trend tracking and alerts.

Why did a score change suddenly?

Common causes:

  • A user stopped logging in (Recency and engagement decay drop quickly)
  • Older burst activity decayed out of the activity score (smooth decline, not a calendar cliff)
  • A milestone was reached for the first time (Milestone jumps from 0 to 50)
  • CRM data changed (support ticket opened/closed)

Can i customize the scoring?

You can customize which events count as milestones in your event settings. The scoring weights and buckets are standardized across all accounts to ensure consistent benchmarking.

Why don't i see milestones in the breakdown?

The account hasn't recorded any custom milestone events yet. Instead of showing a 0-score Milestones row, FirstDistro redistributes the milestone weight across Activity, Engagement, and Recency (see When no custom milestones are present). Once you track milestone events, the Milestones row appears automatically.

Is my score capped at 80% without custom events?

No. Earlier versions effectively capped page-view-only accounts near 80 because milestones were a fixed 20% that an uninstrumented account could never earn. Milestone weight is now redistributed when no custom milestones exist, so an account can reach a fair 100 on automatic page views alone.