Pillar guide
CRM Health Score: A HubSpot Model You Can Copy
A CRM health score should tell you exactly how much to trust what's in HubSpot before you build a forecast, a board deck, or a territory plan on top of it. Here's how to define one properly, using the properties HubSpot already gives you.
14 minute read · written by knovaly
What a CRM health score is — and isn't
A CRM health score is a single, trackable number — almost always expressed on a 0–100 scale — that answers one question: how much can we trust what's recorded in HubSpot right now? It is not a measure of pipeline value, deal quality, sales performance, or forecast confidence, although it directly influences all four. Conflating a health score with a performance score is the single most common design error we see, and it leads to the wrong people owning the wrong number.
Think of it as an audit opinion, not a sales report. An auditor doesn't tell you whether a company is a good business; they tell you whether you can rely on the numbers it's reporting about itself. A CRM health score does the same job for your revenue data: it doesn't say whether your pipeline is strong, it says whether the pipeline figure you're looking at is a real number or an artefact of stale dealstages, duplicate contacts, and fields nobody has updated since Q1.
The distinction matters because the two numbers move independently. A team can have a strong pipeline and a weak health score — plenty of revenue, but recorded so inconsistently that nobody can say with confidence which deals are real, who owns them, or when they'll close. Equally, a team can have immaculate data hygiene and a genuinely thin pipeline. Reporting only one number hides which problem you actually have.
Why bad data is a revenue problem, not an admin problem
CRM hygiene is usually filed under "admin" — something RevOps nags reps about during QBRs, low-stakes, deferrable. That framing survives right up until a board asks why Q3 forecast was 40% high, and the root cause turns out to be eleven open deals sitting in dealstage "Contract Sent" with a closedate from February, none of which anyone remembered to close-lost.
Here's a worked example. A 45-person SaaS sales org runs its pipeline through five HubSpot dealstages. A CRM health check finds 62 open deals with a closedate more than 30 days in the past — a classic staleness failure. Their average deal size is $18,400. Even if only a third of those are genuinely dead (the rest are simply undated), that's roughly $380,000 of phantom pipeline inflating the forecast that quarter. The CFO isn't being lied to by the sales team; the sales team is being lied to by the CRM, because nobody assigned ownership of keeping closedate honest.
The reverse failure is just as expensive. A dormant-relationship review across the same portal finds 214 customer contacts with no logged activity in nine months and a lifecyclestage still marked "customer" — not because the relationship is dead, but because activity capture is broken: reps are calling and emailing outside HubSpot's logged channels, so notes_last_contacted never updates. The revenue sitting in those accounts is real. The CRM just can't see it, which means neither can the renewal or expansion motion built on top of it.
The eight dimensions worth scoring
A defensible health score doesn't blend everything into one intuition-based number. It scores eight distinct dimensions, each measurable from native HubSpot properties, then combines them with explicit weights. Here's what each one covers and how to measure it.
1. Completeness
The proportion of required fields populated on deals, contacts and companies — amount, dealstage, close date, industry, deal source. Measure with a HubSpot custom report filtering for blank values on your chosen "must-have" property set, segmented by pipeline and by hubspot_owner_id so you can see which teams are driving the gap.
2. Accuracy
Whether populated fields are plausible, not just present. A deal amount of $0 on an open, active deal; a closedate set to a Saturday two years from now; a company industry field set to "Other" for 80% of records. Accuracy is harder to automate than completeness — it usually needs a sampled manual review of 30–50 records per quarter cross-referenced against what the account actually looks like.
3. Ownership
Every open deal and every active company should have a live, correctly-assigned hubspot_owner_id. Score the percentage of records with no owner, an owner who has left the company, or an owner mismatched to territory rules. This is a five-minute filtered view in HubSpot and one of the fastest wins available in a 30-day plan.
4. Duplication
The rate of duplicate contact and company records, measured via HubSpot's native duplicate management tooling or an email-domain-plus-name fuzzy match. Duplication doesn't just clutter reporting — it splits activity history across two records, which silently breaks the staleness and activity-capture dimensions too.
5. Staleness
How long since a record was meaningfully touched, measured with hs_lastmodifieddate for the record and hs_last_sales_activity_timestamp for genuine sales motion (property edits by workflows don't count as engagement and should be filtered out). An open deal untouched for 45+ days against your typical sales cycle length is a staleness failure worth flagging.
6. Stage integrity
Whether dealstage progression matches reality: deals skipping stages in a single update, deals sitting in a stage far longer than the historical median for that stage, or hs_is_closed set to false on deals with a closedate months in the past. This dimension is the strongest single predictor of forecast reliability.
7. Association integrity
Deals without an associated company or primary contact, contacts orphaned from any company record, or companies with open deals but no associated contact at all. Association gaps break attribution and make it impossible to run an accurate account-level revenue view, which is exactly the view most executives actually want.
8. Activity capture
Whether logged activity — calls, emails, meetings, notes — reflects what's actually happening on the account. Measure via notes_last_contacted against known renewal or expansion dates; a customer account with a renewal in six weeks and no logged activity in four months is either genuinely at risk or invisible to the CRM, and you need the score to tell you which.
A scoring model you can copy
Score each of the eight dimensions independently on a 0–100 scale, using the simplest defensible formula for each: usually a straight percentage of records passing a defined test (e.g., percentage of open deals with a closedate in the future). Resist the urge to build anything more elaborate for version one — a scoring model people can audit in five minutes will get adopted; one that requires a data scientist to explain will not.
Once each dimension has a 0–100 score, combine them using explicit weights that reflect revenue impact, not ease of measurement. A starting weight set that works for most B2B sales orgs:
- Stage integrity — 20%. The single biggest driver of forecast error; weight it accordingly.
- Staleness — 15%. Directly determines whether "open pipeline" and "active relationship" mean anything.
- Activity capture — 15%. Governs whether dormant-relationship and renewal risk findings can be trusted.
- Ownership — 12%. Cheap to fix, high impact on accountability and follow-up.
- Association integrity — 12%. Determines whether account-level rollups are even possible.
- Accuracy — 12%. Weighted below completeness deliberately, because it's the harder failure to detect and fix at scale.
- Duplication — 8%. Real cost, but usually the smallest share of total broken revenue value.
- Completeness — 6%. Necessary but not sufficient; weighted lowest because it's the dimension most easily gamed.
The composite score is simply the weighted sum: multiply each dimension score by its weight and add them together. A portfolio scoring 90 on completeness but 35 on stage integrity will land in the mid-50s overall — which is the point. A superficially tidy CRM with broken stage progression should not read as healthy.
Bands and what they imply
A raw number without an interpretation guide is just trivia. Set three operational bands and be explicit about what each one means for how the business should behave.
- Below 60 — do not forecast from this data as-is. Treat every pipeline, renewal or dormant-account figure pulled from the CRM as directional only. Prioritise a triage sprint before the next forecast cycle rather than reporting the raw numbers up.
- 60–79 — usable with caveats. The aggregate figures are broadly reliable, but flag findings tied to the weakest dimensions (usually stage integrity or activity capture) for manual verification before they go into a board deck.
- 80 and above — trust the data, verify the exceptions. Spend review time on named accounts and deals the score flags as outliers, not on re-litigating whether the underlying data is sound.
Most HubSpot portals we see on a first scan land in the 45–65 range — not because teams are careless, but because nobody assigned explicit ownership of the dimensions that decay fastest (staleness and activity capture) until a scan puts a number on them.
The eight dimensions, side by side
| Dimension | What to measure in HubSpot | Suggested weight | Typical first-scan result | Fix owner |
|---|---|---|---|---|
| Completeness | % required fields populated (amount, dealstage, closedate) | 6% | 70–85% | RevOps + reps |
| Accuracy | Sampled review vs. account reality; implausible values | 12% | 60–75% | Sales managers |
| Ownership | % open deals/companies with a valid, active hubspot_owner_id | 12% | 80–90% | Sales ops |
| Duplication | Duplicate contact/company rate via fuzzy match | 8% | 5–15% duplicate rate | RevOps |
| Staleness | hs_lastmodifieddate / hs_last_sales_activity_timestamp vs. cycle length | 15% | 20–35% stale | Sales managers |
| Stage integrity | Stage skips, backdated closedate, hs_is_closed mismatches | 20% | 50–65% | Sales leadership |
| Association integrity | % deals/contacts missing a linked company or contact | 12% | 70–85% | RevOps |
| Activity capture | notes_last_contacted vs. known account events | 15% | 55–70% | CS + AM teams |
Health as a confidence modifier, not a standalone score
The reason knovaly treats CRM health as one of five report categories, rather than a preamble, is that it directly changes how much weight every other finding deserves. An Opportunity Score of 82 on a deal is a strong signal — but only if the CRM health score for that portal is also high. If stage integrity across the portal sits at 40%, that same 82 needs a manual sanity check before anyone acts on it, because the underlying dealstage and closedate it was calculated from may simply be wrong.
Practically, this means health should function as a multiplier or confidence band applied to every other output — open pipeline at risk, renewals and rebookings, dormant relationships, win-back opportunities — not a separate report that sits in a folder nobody reopens after the initial audit. A finding backed by high-health data should be actioned directly by a rep or AM. A finding backed by low-health data should route through a manager for verification first. The score's real job is deciding which path a given piece of revenue intelligence takes before it reaches a human.
Improving the score in 30/60/90 days — without a data project
The instinct after a low first score is to commission a data cleanse project: months of deduplication, mandatory-field rollouts, and a steering committee. That's rarely the right first move, because it delays the fix and because a comprehensive cleanse spends equal effort on a $2,000 deal and a $200,000 deal. Triage by revenue impact instead.
Days 1–30: triage the highest-value breaks
Pull every open deal above your median deal size that fails a staleness or stage integrity test. This is usually a few dozen records, not a few thousand. Assign each to its owner with a specific, closed-ended ask: confirm real closedate, correct stage, or close as lost. Track completion weekly. This alone typically moves the weighted score five to ten points because stage integrity and staleness carry the heaviest weights.
Days 31–60: fix the root cause, not just the symptom
For each dimension that scored below 60, identify the workflow or habit creating the gap — reps logging calls in a personal notebook instead of HubSpot, a missing validation rule on dealstage transitions, an integration silently overwriting hubspot_owner_id on re-import. Fix the mechanism, not just the current batch of broken records, or the score will simply decay back to where it started within a quarter.
Days 61–90: re-baseline and set the cadence
Recalculate the full score, publish the delta by dimension, and set the recurring reporting rhythm (see below) so the improvement is visible and doesn't quietly reverse. This is also the point to retire any manual spreadsheet tracking in favour of a standing dashboard, since the whole exercise loses credibility if it depends on someone remembering to update a sheet each month.
Anti-patterns to avoid
- Required fields everywhere. Making every property mandatory doesn't raise real completeness — it raises the rate of junk defaults reps enter to get past a validation rule, which quietly wrecks the accuracy dimension while completeness looks perfect.
- Mass-closing stale deals. A bulk close-lost sweep improves the staleness number instantly and destroys the pipeline's credibility with the sales team, who now distrust the score because it just made real, live deals disappear. Verify before closing, individually or in small batches.
- Scoring only what's easy to measure. Completeness and duplication are trivial to pull from a HubSpot report; stage integrity and activity capture take more thought to define. Skipping the harder dimensions produces a score that looks rigorous and measures the wrong thing.
- Treating the score as an IT metric. If the only people who ever see the number work in RevOps, it will never change sales behaviour. The score needs to appear in the same forums as pipeline and forecast reviews, owned partly by the managers whose teams create the underlying data.
- One-off audits with no re-measurement. A single clean-up sprint with no recurring cadence decays back to baseline within two to three months, because the workflows that created the original mess haven't changed.
Reporting cadence and who owns the number
Set two cadences, not one. A monthly headline number — the composite 0–100 score with its trend line — goes into the same forum as revenue and forecast reviews, reported by RevOps leadership alongside pipeline coverage and win rate. A weekly operational view, broken out by dimension and by team, goes to sales and CS managers so fixes happen continuously rather than in a scramble the week before month-end.
Ownership splits cleanly along the same line. RevOps owns the calculation methodology, the reporting cadence, and the trend narrative — they are the auditors, not the enforcers. Front-line managers own the underlying behaviour for their team's records, particularly stage integrity and activity capture, because that's where the habits that create or destroy those scores actually live. Making a single team accountable for both the number and the behaviour behind it is how health scores quietly turn into a policing exercise that reps route around.
| Cadence | Audience | What's reported | Owner |
|---|---|---|---|
| Weekly | Sales & CS managers | Dimension-level breakdown, team-level breaks | RevOps, actioned by managers |
| Monthly | Sales & CS leadership | Composite score, trend, band movement | RevOps leadership |
| Quarterly | Executive team / board | Score alongside pipeline coverage and forecast accuracy | CRO / Head of RevOps |
Done this way, a CRM health score stops being a hygiene metric nobody outside operations reads and becomes what it should be: the number that tells the rest of the business how much weight to put behind everything else HubSpot is telling them.
Frequently asked questions
- What is a CRM health score, in plain terms?
- It's a single number, typically 0–100, that tells you how much you can trust what's inside HubSpot before you act on it. It doesn't measure revenue, pipeline value, or sales performance — it measures the reliability of the data those judgements depend on. A high score means dealstage, amount, closedate, ownership and activity history are consistent enough that a forecast or a revenue report built from them will hold up. A low score means the same report is guesswork wearing a spreadsheet.
- Is a CRM health score the same as data completeness?
- No, and treating it that way is the most common mistake. Completeness — how many required fields are filled in — is one of eight dimensions, not the whole score. A record can be 100% complete and still be wrong: a closedate six months in the past on an open deal is complete, populated, and misleading. A useful score also weighs accuracy, staleness, duplication, ownership, stage integrity, association integrity and activity capture, because each fails in a different, costly way.
- How often should we recalculate the score?
- Monthly for the headline number that goes to leadership, weekly for the operational view that RevOps and team leads use to prioritise fixes. HubSpot properties like hs_lastmodifieddate and hs_last_sales_activity_timestamp change continuously, so a quarterly score is already stale by the time anyone reads it. A monthly cadence also lines up naturally with commission and forecast cycles, which is when a health score actually gets used to make a decision.
- Who should own the CRM health number?
- Ownership of the number should sit with RevOps or Sales Operations, but accountability for the underlying data quality has to sit with front-line managers, because that's where the behaviour that creates or destroys the score actually happens. RevOps calculates, reports and trends the score; sales and CS managers own the dimensions that trace back to their teams — stage integrity, activity capture, ownership — as part of a regular one-to-one, not a separate compliance exercise.
- Can a CRM health score be gamed?
- Yes, easily, if it's built on completeness alone — reps will bulk-fill required fields with defaults to stop a validation rule firing, which raises the score while making the data less honest. The fix is to weight dimensions that are harder to fake, particularly stage integrity and activity capture, and to spot-check a sample of records each month rather than trusting the aggregate number in isolation. A score that only measures what's easy to measure will be gamed; that's the anti-pattern worth guarding against most.
- How does CRM health relate to forecast accuracy?
- Directly, but not in a straight line — a health score is a leading indicator, forecast accuracy is a lagging one. Deals with broken stage integrity (skipped stages, backdated closedates) or missing activity capture are the ones most likely to slip or get pulled forward inappropriately. Portfolios where the health score sits below 60 typically show forecast variance two to three times higher than portfolios above 80, because the underlying assumptions — whose deal it is, what stage it's really at, when it last moved — can't be trusted at face value.
- Do we need a data project to raise our score?
- No, and waiting for one is usually the reason scores stay low for years. A data project implies a big-bang cleanse, new validation rules across the portal, and a multi-month timeline; most of the gain is available in 30 to 90 days by triaging the highest-value broken records first — the open deals above a certain amount, the accounts renewing this quarter — rather than trying to fix everything HubSpot has ever stored. Prioritised, revenue-linked triage beats a comprehensive cleanse on both speed and adoption.
- How does knovaly use the CRM health score?
- knovaly calculates a CRM health score as one of its five report categories and also uses it as a confidence modifier on every other finding — an open-pipeline-at-risk deal or a win-back candidate surfaced from data with a low health score is flagged as needing verification before action, rather than reported at face value. Because the scan is read-only, you see the score and the specific records behind it within minutes, without changing anything in HubSpot first.
Related reading
The Opportunity Score explained
How the 0–100 revenue score is calculated and how it interacts with CRM health.
Read moreHubSpot data clean-up guide
A practical clean-up playbook for the dimensions that decay fastest.
Read morePipeline health guide
How stage integrity and staleness translate into forecast risk.
Read moreFixing duplicate contacts in HubSpot
A focused approach to the duplication dimension specifically.
Read moreSee a sample knovaly report
Review an example CRM health score and the findings it modifies.
Read more