Skip to main content

What a health score is

A health score is a 0–100 number Halo computes for each company (or user) based on a weighted blend of four signals:
  • Activity — how recently and how often users are active in your product (from SDK identify calls)
  • Support — open and priority ticket load relative to team size
  • Sentiment — conversation sentiment and feedback ratings from recent transcripts
  • Payment — Stripe subscription status and delinquency (when connected)
Scores appear on company profiles and the Companies list. When entity mode is set to users or both, scores also appear on the Contacts list. Configure scoring at Settings > Health Scores. New workspaces can use the guided setup wizard at Settings > Health Scores > Set up.

Tiers

Default tier boundaries:
  • Healthy — 80–100 (green)
  • Neutral — 60–79 (blue)
  • At Risk — 40–59 (yellow)
  • Critical — below 40 (red)
  • Not scored — no score calculated yet (shown when a company is unscored or ineligible)
You can customize tier thresholds on the Tiers tab in Health Score settings.

Setup wizard

The setup wizard walks through four steps:
  1. Who gets scored — companies, users, or both
  2. Who qualifies — Stripe statuses (with live company counts) or ignore payment data. Only Active is selected by default. Trialing, past due, and other statuses are opt-in.
  3. Signal presets — Balanced, Usage-first, Support-heavy, Revenue-first, or No billing data
  4. Review and activate — plain-English summary before turning scores on
After activation, Halo backfills scores for eligible companies automatically.

Stripe eligibility

When Stripe gating is enabled, only companies (or users) whose subscription status is in your selected list receive a health score. Everyone else shows as Not scored. The default eligible status is Active only (paying subscriptions). If you also want to score trials or past-due accounts, enable those statuses on the Eligibility tab. Changing eligibility triggers a full org recalculate so ineligible accounts are cleared.

Default weights

Out of the box, weights are:
  • Activity 40%
  • Support 25%
  • Sentiment 20%
  • Payment 15%
If a customer is missing data for a signal, that signal is skipped and its weight is redistributed across the signals that do have data.

Signal details

  • Activity — 60% active-user ratio in the activity window, 40% recency of last activity
  • Support — fewer open and priority tickets is healthier; each priority ticket costs 15 points (capped at 50)
  • Sentiment — average transcript sentiment blended 50/50 with positive feedback ratings when both exist
  • Payment — Active = 100, Trialing = 80, Past Due = 30, and so on; delinquent subtracts 20

Configuration tabs

The Health Scores settings page has four tabs:
  • Overview — summary, eligible company count, last recalc time, Recalculate all
  • Signals — weight sliders, activity window, sentiment lookback, formula details
  • Eligibility — entity mode, Stripe gating, recalc mode
  • Tiers — customize Healthy / Neutral / At Risk thresholds

Recalculation

Two modes:
  • Realtime — recalculates after important changes (activity, tickets, payments, feedback) plus a nightly refresh
  • Daily — only the nightly job runs
Saving settings triggers a backfill for the whole org. Admins can also click Recalculate all scores (rate limited to once per hour).

Company profile breakdown

On each company profile, expand Score breakdown to see how each signal contributed to the composite score and when the score was last calculated.

Where scores show up

  • Companies list — health bar, tier sidebar filters, avatar dot
  • Company profile — score ring, tier badge, breakdown panel
  • Contacts list — health column when entity mode is users or both
  • Segment filtershealth_score and health tier filters
  • Renewals settings — auto-status rules using health score
  • Slack — optional health_score_drop alerts

Where to go next

Renewals

Health scores power the auto-status rules for renewals.

Slack Integration

Get notified in Slack when health scores drop.