---
title: "HubSpot Lead Scoring: Fix the Data Before the Model"
description: "HubSpot lead scoring reads your CRM properties, and an empty field scores like a bad fit. Audit fill rate, score what you trust, add the timing signal."
canonical: "https://derrick-app.com/crm-data-enrichment/hubspot-lead-scoring"
category: "CRM Data Enrichment"
updated: "2026-08-31"
---

# HubSpot Lead Scoring: Why Your Fit Scores Are Probably Wrong

> HubSpot lead scoring assigns scores to contacts, companies and deals from two kinds of input: engagement, which HubSpot records itself, and fit, which reads property values such as job title, company size and annual revenue. A combined model writes all three as separate properties. The engagement half works out of the box; the fit half is only as good as the completeness of the properties behind it, and the tool cannot distinguish a company that is too small to score from one whose size nobody ever recorded. Both produce a low fit score. Audit fill rate, distinct values, age and source per property before writing a single criterion, score the two or three you trust rather than the twelve you hope for, and add a timing signal that nothing in the CRM populates on its own.

*Canonical: https://derrick-app.com/crm-data-enrichment/hubspot-lead-scoring* · *CRM Data Enrichment*

---

A scoring model is a machine for reading properties. Point it at properties nobody filled in and it will still produce a number, confidently, every time. That is the failure mode this page is about.

**HubSpot lead scoring** is the built-in tool that assigns scores to contacts, companies and deals from two kinds of input: what a person did, and what a company is. HubSpot calls the first an engagement score, the second a fit score, and a model that uses both a combined score. The engagement half works out of the box because HubSpot records the behaviour itself. The fit half reads your CRM properties, and that is where most models quietly break.

**The short version:** setting up the tool takes an afternoon. Making the scores mean something takes a data audit first. A fit score built on job title, company size and annual revenue is worth exactly as much as the completeness of those three fields, and in most CRMs they are between a third and half empty.

## What HubSpot lead scoring is today

HubSpot's Lead Scoring Tool is available on Marketing Hub and Sales Hub, Professional and Enterprise. It scores contacts and companies, and it scores deals through combined models. You can create more than one score per object, which matters more than it sounds: a single number that mixes interest and fit is almost always less useful than two numbers you can read separately.

The older HubSpot Score property, the rules-based one many teams grew up with, was retired in August 2025. Scores that lived on it stopped updating, and any workflow that branched on it stopped branching. If you inherited a HubSpot instance that has not been touched since, the first thing to check is whether anything is still reading a frozen property, before you touch the model at all.

Beyond that migration, the tool itself is straightforward. The difficulty lies in deciding what deserves points, and in having the data to award them.

![HubSpot lead scoring engagement, fit and combined score types compared](/illustrations/articles/hubspot-lead-scoring/three-score-types.webp)Engagement is recorded by HubSpot itself. Fit is only as good as the properties behind it.

## Engagement, fit and combined: the three score types

The distinction is the most useful thing in the whole tool, and it is worth being precise about.

| Score type | Reads | Where the data comes from | Fails when |
| --- | --- | --- | --- |
| Engagement | Actions and interactions: page views, email opens, CTA clicks, form fills, subscriptions | HubSpot itself, automatically | Rarely. The tracking either works or it does not |
| Fit | Property values: job title, company size, annual revenue, industry | Whatever you or your forms put in the record | Constantly. The properties are empty, stale or free text |
| Combined | Both, and it writes three properties: total, engagement only, fit only | Both of the above | Silently. A good engagement score can mask a fit score built on nothing |

Note that last row carefully. A combined score exposes its two halves as separate properties, which is the single best diagnostic HubSpot gives you for free. If your total scores look reasonable while the fit-only property clusters near zero, your model is running on behaviour alone and the fit criteria are decorative.

## Why HubSpot lead scoring fails on the fit half

Fit scoring asks the CRM a question: how big is this company, what does this person do, what industry is this. It awards points on the answer. When the field is empty, no points are awarded, and here is the trap: the tool cannot distinguish "this company is too small to score" from "nobody ever recorded how big this company is".

Both produce the same output, which is a low fit score. So a well qualified enterprise account that came in through a short form ranks below a hobbyist who happened to fill in a long one. The model is not wrong; it answered the question it was asked, using the data it was given.

The second failure is subtler. Free text properties do not score reliably. "VP of Revenue Operations", "VP RevOps" and "vp, revenue ops" are three different strings, and a criterion matching one of them misses the others. Scoring rewards normalised values, and most CRM fields are not normalised because they were typed by humans and by forms.

The third is decay. Company size and job title were true when the record was created. Neither stays true, and a fit score recomputed today on a value captured eighteen months ago is a confident statement about a company that no longer exists in that shape. Our [report on CRM data quality](https://derrick-app.com/crm-data-enrichment/crm-data-quality-report-2026) puts numbers on how fast that happens.

![HubSpot lead scoring property audit: fill rate, distinct values, age and source](/illustrations/articles/hubspot-lead-scoring/property-audit.webp)Four questions to answer on every property before you score it.

## The audit to run before you build a single criterion

Fifteen minutes, four questions, and it will change what you build.

1. **Fill rate per property.** For every property you intend to score, what percentage of your contacts actually have a value? Anything under about 70% cannot carry meaningful weight, because the score will be dominated by absence rather than by fit.
2. **Distinct values per property.** If job title has four thousand distinct values across ten thousand contacts, it is free text and it needs normalising before it can be scored.
3. **Age of the value.** When was the property last set? A field populated at record creation three years ago is not a current fact.
4. **Source of the value.** Self-reported form input, imported list, or enrichment? Self-reported company size is the least reliable of the three and it is usually the most heavily weighted.

Run this and the shape of your model changes. Most teams discover they have two or three properties worth scoring, not the twelve they were about to configure, and that the missing ones are not missing because the data does not exist but because nobody ever fetched it.

## Which properties actually predict a deal

Score what changes the answer, not what is easy to collect. Four families do most of the work, and their order matters.

**Company fit** carries the most weight, because a company that cannot buy will not buy regardless of how interested one employee is. Headcount, industry and revenue band are the workhorses here, and all three are external facts rather than things a form should be asking for.

**Persona fit** comes next: does this person's function and seniority match who signs or who uses. This is the one that needs normalisation most urgently, and the one most often left as free text.

**Timing** is the underused family. A company hiring for the function you serve, or one that just changed leadership, is materially more likely to buy this quarter than an identical company where nothing is moving. Very few HubSpot models include a timing property at all, mostly because nothing in the CRM populates one.

**Reachability** is the one nobody scores and everybody should. A perfect-fit contact with no verified email is not a lead you can work. Our companion page on [the 100 point lead scoring model built on enrichment](https://derrick-app.com/data-points/lead-scoring-model) breaks the weights down family by family.

![Example HubSpot lead scoring fit model with points and deductions](/illustrations/articles/hubspot-lead-scoring/fit-model-points.webp)Six criteria totalling 100, plus the deductions that do most of the queue cleaning.

## An example HubSpot lead scoring model, with the points

Here is a fit model that fits on one screen and that you can defend in a meeting. It totals 100 and it deliberately uses six criteria rather than thirty, because a model nobody can question is a model nobody will fix.

| Criterion | Property it reads | Points | Why it earns them |
| --- | --- | --- | --- |
| Headcount in target band | Number of employees | 25 | The strongest single predictor of whether a budget exists at all |
| Industry in target set | Industry | 20 | Stable, rarely changes, and cheap to enrich reliably |
| Revenue band | Annual revenue | 15 | Confirms the headcount signal, and catches the dense small company |
| Function matches buyer or user | Job function, normalised | 20 | Separates the person who signs from the person who is curious |
| Seniority at decision level | Seniority, normalised | 10 | Worth less alone than function, worth a lot combined with it |
| Hiring for the function you serve | Custom timing property | 10 | The only criterion here with a clock in it |

Then the deductions, which almost no model includes and which do more to clean a queue than any positive criterion. Negative points are what stop a well-behaved but irrelevant contact from climbing on engagement alone.

| Deduction | Points | What it catches |
| --- | --- | --- |
| Free email domain | -15 | Personal signups and casual research rather than a company evaluating you |
| Student, intern or job seeker in the title | -20 | High engagement, zero buying authority, and usually your best performing content |
| Headcount below the floor you can serve | -20 | Companies that would churn even if they signed |
| Unsubscribed or marked as spam | -25 | An explicit no that engagement scoring will otherwise ignore |
| Property last updated over 18 months ago | -10 | A score computed on a company that has since changed shape |

Thresholds matter as much as the points. Three bands are usually enough: above 70, route to a rep the same day; 40 to 70, keep in nurture and re-score monthly; below 40, do not route at all. Set those numbers by looking at the distribution preview rather than by choosing round figures, because the only correct threshold is the one that produces a queue your team can actually work.

One caution on copying any model, including this one. The weights above are a starting point calibrated on a typical B2B SaaS shape, not a finding. Recalibrate them against your own closed won deals as soon as you have thirty of them, and our companion page on [the 100 point model built on enrichment](https://derrick-app.com/data-points/lead-scoring-model) covers how to do that calibration properly.

## Setting up HubSpot lead scoring without overfitting

Build two scores. An engagement score and a fit score, kept separate, and let the combined model expose all three properties. You will use the two halves independently far more often than you use the total.

Keep the criteria count low. A model with six criteria that everyone understands beats a model with thirty that nobody can question, and the thirty-criterion version is almost always overfitted to the last four deals someone remembers.

Use the distribution preview before you activate anything. The question is whether it separates your contacts into groups of usable size, and elegance has nothing to do with it. A threshold that qualifies four contacts a month has stopped being a threshold, and one that qualifies four hundred has stopped being a filter.

Then set the handover rule explicitly. A score with no agreed action attached is a number in a column. Decide what happens at the threshold, who acts, and how fast, before you turn it on.

![HubSpot AI lead scoring training set requirements](/illustrations/articles/hubspot-lead-scoring/ai-scoring-requirements.webp)Fifty labelled contacts is the visible requirement. Property completeness is the real one.

## AI scoring: what it needs before it can help

HubSpot offers AI-driven scoring for contact engagement and fit, on Marketing Hub Enterprise. It needs a training set: at least 50 contacts, of which 25 converted and 25 did not, before it can produce recommendations.

Two things follow from that requirement, and both are easy to miss. First, if you cannot supply 25 clean converted examples, the constraint sits in how consistently your conversion gets recorded, well upstream of the model. Fixing that is worth more than any scoring feature.

Second, an AI model trained on properties that are half empty learns the emptiness. It will find that contacts with a filled revenue field convert more often, which is true and useless: they convert more often because someone bothered to research them, not because of the revenue figure. Garbage in produces a confident model, not an obviously broken one, which is precisely what makes it dangerous.

The order that works is unglamorous. Fill the properties, normalise them, then let a model look for patterns in data that actually describes the world.

## What HubSpot lead scoring costs you when the data is thin

The cost lands on the misrouting rather than on the subscription. The calculator below turns your database size and property fill rate into the number of records your score will misjudge, which is the number worth arguing about in a planning meeting.

  Free calculator

### Scoring blind spot: how many records your fit score cannot judge

Enter how many contacts you score and how complete the properties behind the fit criteria are. The output is how much of your database the model is guessing on.

    Contacts you score
    <input class="dpm__num" id="scoreCalcN" type="number" min="1" max="1000000" step="1" placeholder="10000" aria-label="Number of contacts scored" />

    Fill rate of the scored properties (%)
    <button type="button" class="dpm__opt" data-v="30">30 %</button><button type="button" class="dpm__opt" data-v="50">50 %</button><button type="button" class="dpm__opt" data-v="70">70 %</button><button type="button" class="dpm__opt" data-v="90">90 %</button>

Enter a contact count and a fill rate to see the blind spot.

An empty property scores zero, exactly like a poor fit. The records below are not scored low, they are unscorable, and the model cannot tell you which is which.

![Enriching CRM properties before HubSpot lead scoring reads them](/illustrations/articles/hubspot-lead-scoring/derrick-sidebar-enrich.webp)Fill headcount, industry and a hiring signal in the sheet, then send them to the record.

## Filling the properties before they reach the score

The fix is upstream of HubSpot. Enrich the record so the score has something to read, and do it at a point where you can inspect the result before it becomes a property value.

For company fit, [Enrich Companies](https://derrick-app.com/features/enrich-companies) returns the full company detail at 1 credit per company, on the free plan, billed per row whether or not the row returns anything. For persona fit, [Enrich Leads](https://derrick-app.com/features/enrich-leads) does the same for a profile at 1 credit per profile. In France specifically, [SIRET and SIREN enrichment](https://derrick-app.com/features/siret-siren-enrichment) returns identity, activity, directors and legal data at 1 credit per company, which is the cleanest source of a normalised industry code you will find.

For the timing family that most models lack entirely, [Company Hiring Signal](https://derrick-app.com/features/company-hiring-signal) tells you which companies are hiring and for which roles at 1 credit per company. That is a property no CRM populates on its own, and it is the one that turns a static fit score into something with a clock in it.

Two boundaries worth stating. Reachability, meaning a verified email or a mobile number, comes from Email Finder and Phone Finder, which are paid features rather than part of the free allowance. And normalisation is a separate job from enrichment: getting a job title back is not the same as mapping it onto the six personas your score understands.

## Keeping it fresh, and where the work should live

A scoring model is a standing claim about your database, so it needs a refresh cadence rather than a launch date. Company size and job title move constantly; industry and legal identity barely move at all. Refreshing everything monthly wastes credits, refreshing nothing lets the model rot, and the sensible middle is to set a cadence per property family that matches how fast each one decays, which is layer four of [the five layer CRM data strategy](https://derrick-app.com/crm-data-enrichment/crm-data-strategy).

Where the enrichment runs is a workflow question rather than a religious one. Inside HubSpot, workflows can enrich on record creation, on form submission and on a schedule, which our guide to [automating HubSpot enrichment with workflows](https://derrick-app.com/crm-data-enrichment/hubspot-enrichment-workflows) covers pattern by pattern. Outside it, a spreadsheet pass gives you something a workflow cannot: you see the result before it lands on the record, which matters when a bad value silently changes a score.

If the job belongs in a pipeline, the same lookups run through the REST API and the [Derrick MCP](https://derrick-app.com/mcp) from any compatible assistant, both on a paid plan. And if you are still choosing between the two, our comparison of [enriching HubSpot versus Pipedrive](https://derrick-app.com/crm-data-enrichment/hubspot-vs-pipedrive) covers what changes from one to the other. The rest of the cocon sits on the [CRM data enrichment hub](https://derrick-app.com/crm-data-enrichment), and for the vocabulary itself see our definitions of [lead scoring](https://derrick-app.com/glossary/lead-scoring) and [predictive lead scoring](https://derrick-app.com/glossary/predictive-lead-scoring).

![Common HubSpot lead scoring mistakes and their fixes](/illustrations/articles/hubspot-lead-scoring/scoring-mistakes.webp)Each mistake produces a confident score rather than an obviously broken one.

## Common HubSpot lead scoring mistakes

- **Scoring a property before checking its fill rate.** The single most common one. An empty field and a bad fit produce the same score, and the model cannot tell you which it just saw.
- **One combined number.** Merging interest and fit into a single score hides the half that is broken. Read the two properties separately; HubSpot writes them for you.
- **Scoring free text.** Job title with thousands of distinct values will match a handful of your criteria and miss the rest. Normalise first, then score.
- **No decay.** A visit from March counting as much as a visit from yesterday turns the score into a lifetime activity total rather than a statement about now.
- **Building the model before agreeing the action.** If nobody has decided what happens at the threshold, you have added a column to a database and called it a process.
- **Leaving a legacy score wired in.** The old HubSpot Score stopped updating in August 2025. Anything still branching on it is branching on a frozen value.

## Where this leaves you

The tool is the easy half. HubSpot gives you engagement scores, fit scores and a combined model that exposes both halves, which is more diagnostic power than most teams use.

The hard part is that a fit score is a reading of your properties, and properties are only as good as what was fetched and how recently. Audit fill rate before you write a criterion, score two or three properties you trust rather than twelve you hope for, add a timing signal that nothing in the CRM will give you, and set a refresh cadence per family.

Start with the audit, then fill the largest gap. The free plan includes 100 credits per month, and company enrichment alone costs 1 credit per row, so a first pass covers 100 accounts. Add the hiring signal and you are at 2 credits per account, so the same allowance covers fifty: enough either way to measure how much your fit score changes once the fields behind it are actually populated.

## Use Derrick in Claude (MCP) or via API

Derrick isn't only a Google Sheets add-on. The same B2B data enrichment runs as an MCP server (use it directly inside Claude and other AI agents) and as a REST API:

- **Claude / AI agents (MCP)**: connect the Derrick MCP server, then enrich from chat. Setup: /mcp
- **REST API**: call the same enrichment endpoints from your own stack (PLUS plan and up). Docs: https://app1.derrick-app.com/api/v1/docs/

## FAQ

### What is HubSpot lead scoring?
It is HubSpot's built-in tool for assigning scores, available on Marketing Hub and Sales Hub in Professional and Enterprise. It supports three kinds of score: engagement, based on actions such as page views, email opens, CTA clicks and form fills; fit, based on property values such as job title, company size, industry and annual revenue; and combined, which merges both and writes three separate properties, a total, an engagement-only value and a fit-only value. Engagement and fit scores apply to contacts and companies; deals are scored through combined models only.

### Why are my HubSpot fit scores wrong?
Because a fit score is a reading of your CRM properties, and an empty property scores zero exactly like a poor fit. The tool cannot tell you which of the two it just saw, so a well qualified enterprise account that arrived through a short form ranks below a hobbyist who filled in a long one. Two other causes compound it: free text properties do not match criteria reliably, and values captured at record creation decay, so a score computed today may be reading a company that no longer exists in that shape.

### What should you check before building a scoring model?
Four things, and it takes about fifteen minutes. Fill rate per property, since anything under roughly 70% will be dominated by absence rather than fit. Distinct values, because a job title field with thousands of variants is free text and needs normalising first. Age of the value, since a field set three years ago is not a current fact. And source, because self-reported form input is the least reliable of the three common sources and usually the most heavily weighted.

### What point values should a HubSpot fit score use?
Keep the model to about six criteria totalling 100. A workable starting split is 25 points for headcount in the target band, 20 for industry, 15 for revenue band, 20 for a job function that matches your buyer or user, 10 for seniority at decision level, and 10 for a timing property such as hiring for the function you serve. Then add deductions, which most models skip: minus 15 for a free email domain, minus 20 for a student or job seeker title, minus 20 for headcount below the floor you can serve, minus 25 for an unsubscribe. Three threshold bands are usually enough, and you set them from the distribution preview rather than by picking round numbers.

### What does HubSpot's AI lead scoring need to work?
A training set. HubSpot's AI scoring, available for contact engagement and fit on Marketing Hub Enterprise, needs at least 50 contacts of which 25 converted and 25 did not before it can produce recommendations. If you cannot supply 25 clean converted examples, the constraint is not the model but the consistency of your conversion tracking. And a model trained on half empty properties learns the emptiness: it will find that contacts with a filled revenue field convert more, which is true because someone researched them, not because of the figure.

### What happened to the old HubSpot Score property?
The legacy rules-based HubSpot Score property was retired in August 2025. Scores that lived on it stopped updating, which means any workflow, list or report still branching on it is branching on a frozen value. If you have inherited an instance that has not been reviewed since, auditing what still reads that property is a better first move than building a new model on top of it.

### Which properties actually predict a deal?
Four families, in this order of weight. Company fit, meaning headcount, industry and revenue band, because a company that cannot buy will not buy however interested one employee is. Persona fit, meaning function and seniority, which is the family most urgently in need of normalisation. Timing, such as whether the company is hiring for the function you serve, which almost no HubSpot model includes because nothing in the CRM populates it. And reachability, since a perfect-fit contact with no verified email is not a lead you can work.

### Should you deduct points as well as award them?
Yes, and it is the single most neglected half of a scoring model. Positive criteria alone let a highly engaged but irrelevant contact climb the queue, which is exactly what happens with students, job seekers and personal signups on free email domains, since those groups engage with content more than buyers do. Deductions for a free email domain, a student or job seeker title, headcount below your serviceable floor, an unsubscribe, and a property that has not been updated in eighteen months will clean a routing queue faster than any positive criterion you can add.

## Related

- [CRM Enrichment: How to Enrich Your HubSpot or Salesforce Data (Complete Guide)](https://derrick-app.com/crm-data-enrichment/hubspot-vs-pipedrive)
- [HubSpot Data Enrichment: How to Automate It With Workflows](https://derrick-app.com/crm-data-enrichment/hubspot-enrichment-workflows)
- [The State of CRM Data Quality 2026: Decay, Cost and the Enrichment Gap](https://derrick-app.com/crm-data-enrichment/crm-data-quality-report-2026)
- [CRM Data Strategy](https://derrick-app.com/crm-data-enrichment/crm-data-strategy)
