---
title: "Lead scoring model: how to build one for B2B"
description: "Build a B2B lead scoring model: fit and intent criteria, point values with a worked example, thresholds, decay and HubSpot or Salesforce setup."
canonical: https://www.leadsets.ai/blog/lead-scoring-model
published: 2026-11-09
updated: 2026-11-09
---

# Lead scoring model: how to build one for B2B

Build a B2B lead scoring model: fit and intent criteria, point values with a worked example, thresholds, decay and HubSpot or Salesforce setup.

By Arslan Nasir · Published 2026-11-09 · Guides · 11 min read

A lead scoring model is a set of rules that gives every lead a number, so sales works the best ones first. In B2B, that number has two halves: **fit** (how closely the person and company match the customers you win) and **intent** (what they are doing right now that suggests they might buy). A lead with high fit and high intent goes to a rep today. A lead with high fit and no intent goes into nurture or outbound. A lead with low fit rarely deserves a rep's time, however active they are.

To build one, you pick fit criteria from deals you have already won, pick intent signals you can actually observe, assign points to each, set thresholds that trigger a handoff, add decay so old activity fades, and put the rules into your CRM. Then you keep the underlying data fresh, because a score built on a stale job title is a confident wrong answer. The rest of this guide walks through each step with a worked example.

## Fit and intent: the two halves of a score

Keep fit and intent as separate numbers, then combine them. If you add everything into one pile, a student who downloads five ebooks can outscore a VP at your perfect account who visited the pricing page once.

| | Fit | Intent |
| --- | --- | --- |
| Answers | Should we sell to them at all? | Should we talk to them this week? |
| Examples | Industry, headcount, role, seniority, region, tech stack | Pricing page visits, demo requests, replies, hiring for related roles |
| Changes | Slowly (job changes, company growth) | Fast (days or weeks) |
| Needs decay | Rarely | Always |
| Source | Firmographic and contact data | Your website, email, product and public signals |

Fit comes from your [ideal customer profile](https://www.leadsets.ai/answers/how-to-create-an-ideal-customer-profile). If you do not have one written down, write it first. A scoring model is just an ICP turned into arithmetic.

## Step 1: pick fit criteria from deals you won

Do not guess fit criteria from a whiteboard. Pull your closed-won deals from the last year or two, plus a sample of closed-lost and churned accounts, and look for the attributes that separate them.

1. Export won and lost deals with company domain, industry, headcount, region and the main contact's title.
2. Fill the gaps. Most CRMs have empty industry and size fields on a large share of records, so enrich them before you draw conclusions.
3. Group by each attribute and compare win rates and deal sizes. You are looking for big differences, not small ones.
4. Keep four to six fit criteria. More than that and nobody can explain why a lead scored what it did.

Common lead scoring criteria for fit:

- **Industry or vertical**, matched against the ones where you win.
- **Company size**, usually a headcount band.
- **Region or country**, if you can only sell or support in certain places.
- **Function** of the person (revenue, marketing, engineering and so on).
- **Seniority**, because a VP and an intern at the same company are different leads.
- **Technology used**, if your product depends on or replaces a specific tool.

Also decide how to treat missing data. If headcount is unknown, scoring it as zero quietly punishes leads you simply have not researched. Many teams score unknowns at half value and flag them for enrichment.

## Step 2: pick intent signals you can actually see

Intent splits into first-party signals (things that happen on your own site, emails and product) and third-party or public signals. The background on both is in this explainer on [B2B intent data](https://www.leadsets.ai/answers/what-is-b2b-intent-data). For scoring, only use signals you can capture reliably and attach to a lead or account.

Useful intent signals, roughly from strongest to weakest:

- **Demo or contact request.** Usually an override: route straight to sales regardless of score.
- **Reply to a sales email**, positive or curious.
- **Pricing page or comparison page visits**, ideally repeated.
- **Hiring for roles that predict need.** A company posting SDR roles probably needs prospect data and sequencing; one posting RevOps roles may be rebuilding its stack.
- **New leader in a relevant seat**, since new VPs often review tools in their first months.
- **Webinar attendance or content downloads.** Real, but weak on their own.
- **Email clicks.** Treat opens as noise; mail privacy features load images automatically, which inflates open counts.

Add negative signals too: competitor domains, personal or student emails on a B2B form, job seekers visiting your careers page, and unsubscribes.

## A worked example with point values

Here is a starting model for a fictional company that sells to US B2B SaaS revenue teams. Fit is out of 50, intent is out of 50. The numbers are a starting point to calibrate, not a benchmark.

| Criterion | Value | Points |
| --- | --- | --- |
| **Fit** | | |
| Industry | B2B SaaS / adjacent software / other | 15 / 8 / 0 |
| Headcount | 50 to 200 / 20 to 49 or 201 to 500 / other | 15 / 8 / 0 |
| Function | Revenue or RevOps / other | 10 / 0 |
| Seniority | VP or head / director or manager / IC | 10 / 6 / 2 |
| **Intent** (last 30 days) | | |
| Pricing page visit | per visit, max 2 | 10 each |
| Replied to an email | once | 15 |
| Company hiring SDR or RevOps roles | yes | 10 |
| Webinar attended | once | 5 |
| Email link clicked | max 2 | 2 each |
| **Negative** | | |
| Competitor domain | | exclude |
| Personal email on demo form | | -10 fit |
| Unsubscribed | | exclude from outbound |

Written as a config you could keep in a repo or a sheet:

```json
{
  "fit": {
    "industry": { "b2b_saas": 15, "adjacent_software": 8, "other": 0, "unknown": 7 },
    "employees": { "50-200": 15, "20-49": 8, "201-500": 8, "other": 0, "unknown": 7 },
    "function": { "revenue": 10, "other": 0 },
    "seniority": { "vp": 10, "head": 10, "director": 6, "manager": 6, "ic": 2 }
  },
  "intent_30d": {
    "pricing_visit": { "points": 10, "max": 2 },
    "email_reply": 15,
    "hiring_sdr_or_revops": 10,
    "webinar": 5,
    "email_click": { "points": 2, "max": 2 }
  },
  "overrides": { "demo_request": "route_to_sales", "competitor_domain": "exclude" }
}
```

Now score three example leads (all fictional):

| Lead | Fit | Intent | Result |
| --- | --- | --- | --- |
| Maya Chen, VP Revenue Operations, Northwind Analytics (northwind.co), B2B SaaS, 50 to 200 people. Visited pricing once; company posted an SDR role last week. | 15 + 15 + 10 + 10 = **50** | 10 + 10 = **20** | High fit, warm intent |
| Ops manager at Parcelry, logistics, about 600 people. Attended a webinar, clicked two emails. | 0 + 0 + 0 + 6 = **6** | 5 + 4 = **9** | Low fit, low intent |
| Growth lead at Stackfold, adjacent software, size unknown. Visited pricing twice, replied to an email. | 8 + 7 + 0 + 10 = **25** | 20 + 15 = **35** | Medium fit, hot intent |

The Stackfold lead is the interesting one. Intent is high but fit is unclear because headcount is missing. Before a rep calls, enrich the company so the fit score is real.

## Thresholds, routing and decay

A score only matters when it triggers something. Turn the two numbers into a small matrix instead of a single cutoff:

| | Intent 25+ (hot) | Intent 10 to 24 (warm) | Intent under 10 (cold) |
| --- | --- | --- | --- |
| **Fit 35+ (A)** | Sales today | Sales this week | Outbound sequence |
| **Fit 20 to 34 (B)** | Sales, after enrichment check | Nurture | Nurture |
| **Fit under 20 (C)** | Self-serve or nurture | Nurture | No action |

In the example, Maya Chen lands in A / warm, so a rep reaches out this week. Stackfold lands in B / hot, so it gets an enrichment check first. The A / hot box is what most teams call a marketing qualified lead; the next step, confirming budget, need and timing, is covered in [how to qualify B2B leads](https://www.leadsets.ai/answers/how-to-qualify-b2b-leads).

Set the first thresholds by back-testing: score last quarter's leads with the new rules and check where the ones that became opportunities would have landed. If most of your won deals fall below the sales line, the line is too high.

**Decay** keeps intent honest. Someone who visited your pricing page four months ago is not hot today. Two common approaches:

- **Windowed intent:** only count events from the last 30 days, recalculated daily. Simple and easy to explain.
- **Stepped decay:** full points for 30 days, half points from 31 to 90 days, zero after that.

Fit decays differently. It does not fade on a timer; it breaks when the person changes jobs or the company changes size. That is a data freshness problem, covered below.

## Setting it up in HubSpot or Salesforce

You do not need special lead scoring software to start. Both major CRMs can run a rules-based model with standard building blocks.

**In HubSpot:**

1. Create custom number properties on contacts: `fit_score` and `intent_score`. If your plan includes HubSpot's built-in scoring tool, you can use that instead, but keep fit and intent as separate scores.
2. Build workflows that set fit points from properties such as industry, number of employees, job function and seniority.
3. Build workflows that add intent points on events (page views, form fills, email replies) and a scheduled workflow that removes expired points.
4. Add a workflow that sets lifecycle stage and assigns an owner when a lead enters the A / hot box.

**In Salesforce:**

1. Add custom number fields on Lead and Contact for fit and intent, plus a formula field that returns the matrix box (for example "A-hot").
2. Use Flow to recalculate fit when key fields change and to add intent points when activities are logged.
3. Use a scheduled Flow for decay.
4. Route with lead assignment rules or queues based on the matrix field. For account-based motions, roll the best contact score up to the Account.

If you outgrow this, the main categories of lead scoring software are scoring features built into marketing automation platforms, predictive tools that train a model on your historical conversions, and custom scoring in your own code or a data warehouse. Predictive scoring needs enough closed deals to learn from; a rules-based model is easier to explain and is the usual place to start.

## Keep the data clean, or the score lies

Every fit point depends on a field being filled and current. Titles go stale when people change roles, headcount bands drift as companies grow, and imported lists arrive with half the columns empty. A model that scores missing industry as zero will bury good leads, and one that trusts a two-year-old title will route leads to people who left.

A practical routine:

- **Enrich on entry.** Fill company and contact fields when a lead is created, not when a rep opens it. This is what [lead enrichment](https://www.leadsets.ai/answers/what-is-lead-enrichment) is for.
- **Re-check on a schedule.** Refresh titles and company fields at least monthly for active leads, and flag job changes.
- **Verify emails before scoring outbound leads.** An invalid address can still carry a high fit score and waste a sequence.
- **Store the date each field was checked**, so you can see when a score rests on old data.
- **Dedupe** contacts and companies so activity is not split across duplicates.

This is where Leadsets can help. Leadsets is a B2B data API and remote MCP server that an AI agent (Claude, ChatGPT, Cursor or your own code) can call to fill fit fields: `enrich_company` returns firmographics such as industry, headcount band, location and stack for a domain, and `enrich_person` returns current role, company and a verified work email when one exists. Every field carries its source and last-checked date. `scrape_jobs` reads careers pages for open roles, which covers the hiring signal in the example. It does not see your website visits or email replies; those stay in your CRM. The tools are listed on the [Leadsets page for AI agents](https://www.leadsets.ai/agents).

A prompt you might give an agent connected to Leadsets and your CRM:

```
Score these 200 HubSpot companies against our ICP: US B2B SaaS, 50 to 200 employees.
Check my Leadsets usage first. Enrich each domain, check careers pages for open
SDR or RevOps roles posted in the last 30 days, and write industry, headcount band
and a hiring flag back. Leave fields blank where nothing comes back.
```

The agent would call `get_usage` (free), `enrich_company` (one enrichment record per company returned; domains with no data use none) and `scrape_jobs` (one scrape unit per page read). Scraping is a paid add-on from $9 for 1,000 units and is not on the free plan. Paid plans are flat monthly prices from $29, and the free plan gives 1,000 records once with no card. Ready-made playbooks for this, including ICP fit scoring, account tiering and HubSpot company enrichment, are in the [list of free GTM skills](https://www.leadsets.ai/skills/all), and the [HubSpot enrichment integration](https://www.leadsets.ai/integrations/hubspot) and [Salesforce enrichment integration](https://www.leadsets.ai/integrations/salesforce) pages show how records get written back.

## Lead scoring best practices

- **Agree on it with sales.** If reps do not trust the score, they will ignore it. Review the criteria together.
- **Keep it explainable.** A rep should be able to see why a lead scored 70 in one glance.
- **Separate fit from intent.** One combined number hides the most useful information.
- **Use overrides sparingly.** Demo requests and existing-customer expansion often skip the queue; most other things should not.
- **Review quarterly.** Compare scores against opportunities created and deals won, then adjust points. Expect the first version to be wrong in places.
- **Fix data before tuning points.** If a criterion looks useless, check whether the field is mostly empty before you drop it.

Start small: four fit criteria, four intent signals, one matrix and a 30-day window. A simple model that the team uses beats a detailed one nobody reads.

## Questions and answers

### What is a lead scoring model?

A lead scoring model is a set of rules that assigns each lead a number based on how well they fit your ideal customer and how much buying interest they show. Sales uses the score to decide who to contact first. Most B2B models keep a separate fit score and intent score, then combine them.

### What are the most common lead scoring criteria?

Fit criteria usually include industry, company size, region, job function and seniority. Intent criteria include demo requests, pricing page visits, email replies, webinar attendance and public signals such as a company hiring for related roles. Negative criteria, such as competitor domains or unsubscribes, lower or exclude a lead.

### What is a good lead score threshold for sales handoff?

There is no universal number, because it depends on your point scale. Set the first threshold by scoring last quarter's leads with your new rules and checking where the ones that became opportunities would have landed. Then adjust it after a quarter of real results.

### How does lead score decay work?

Decay reduces or removes intent points as activity gets older, so a pricing visit from months ago no longer makes a lead look hot. A common approach is to count only the last 30 days, or give full points for 30 days and half points up to 90. Fit scores usually do not decay on a timer but change when job or company data changes.

### What is the difference between rule-based and predictive lead scoring?

Rule-based scoring uses points you assign by hand, so it is easy to explain and change. Predictive scoring trains a model on your past conversions to weight criteria automatically, which needs enough closed deals to learn from. Most teams start rule-based and consider predictive later.

### Do I need lead scoring software?

Not to start. HubSpot and Salesforce can both run a rules-based model with custom number fields, workflows or Flow, and assignment rules. Dedicated scoring tools become more useful when you have many data sources or want predictive scoring.

---

Leadsets blog · https://www.leadsets.ai/blog · Site index: https://www.leadsets.ai/llms.txt
