Account health and retention scoring

A 0-100 health score and risk level per account, built from real usage, setup milestones and evidence the product is delivering value — with the reason for every alert spelled out.

What it is

The retention engine. For every account it derives the milestones that make the product stick (logo, business info, lead source connected, texting registered, email sending set up, first estimate, customers opening estimates, real conversations flowing), pulls usage from the product pulse, counts 30-day activity, and rolls all three into a score, a risk band and a ranked list of alerts. A daily job snapshots it so changes — not states — trigger notification.

Also called: client success · health score · churn risk · is this account sticking · customer retention scoring

See it
Account health and retention scoring
Won
46%
Avg cycle
9d
Pipeline
$456k
JanSep
The Success panel header: a big '72 Healthy' score block with Usage/Setup/Value sub-bars and a score-history sparkline, beside the ranked Alerts card. SuccessPanel.tsx. Sample data — no customer information appears here.
How it works
  1. 1Score = usage out of 50 (recency 15, cadence 20, breadth 15) + setup milestones out of 30, weighted by importance + value evidence out of 20.
  2. 2Risk bands: 70+ healthy, 45+ watch, 25+ at risk, below that churning.
  3. 3Hard floors override the score: 14 days live and 30 days silent is churning regardless of what was once set up; 14 days silent caps the score at 44.
  4. 4Milestones that do not apply to an account — SmartBuild for a builder who does not use it — are marked not applicable and excluded from the denominator.
  5. 5A daily sweep writes a snapshot per account per day and compares it to the previous one.
Why we built it

. The module opens with the thesis: 'an account that signs up and doesn't wire the product into its business leaves.' Hence milestones 'each derived from the tables where the fact lives, never hand-ticked', usage, and 30-day activity, 'roll them into a health score, a risk level, and a list of ALERTS with the reason spelled out.' The score also has a bootstrapping note — until the usage pulse has 30 days of history, days-active also counts days with tenant-side writes in the audit log 'so existing accounts aren't scored as idle for something we only just started measuring.'

The problem
  • Churn signals were noticed only after cancellation.
  • Manually ticked onboarding checklists went stale immediately.
  • Health was a feeling with no shared definition.
Sound familiar?
What you get
Every account carries a score, a risk band and a specific reason.
Nothing is hand-maintained — the facts come from the tables where they live.
Long-silent accounts are floored to at-risk regardless of past setup.
What's inside
Onboarding milestone ledger
Twenty-three weighted milestones across setup, integrations and getting value — every one derived from the table where the fact actually lives, never ticked by hand.
Churn alerts with reasons
A ranked list of specific, named risks per account — each with a severity and a sentence saying exactly what has or has not happened.
Daily health sweep and change alerts
A daily job that snapshots every account's health and notifies only on what changed — a risk level slipping or a new high-severity alert — plus one digest of everything at risk.
Score history
A sparkline of the last 45 daily snapshots, each bar coloured by that day's risk band.
Accounts overview
One row per account with score, risk badge, sessions, milestones and alerts, plus a summary count of healthy, watch, at-risk and churning.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →