How to Build a Lead Scoring Model (Without Overcomplicating It)
A simple, explainable fit-plus-engagement lead scoring model your sales team will actually trust, with a copy-paste rubric you can ship this week.

A RevOps lead I talked to inherited a scoring model with 47 rules. Page visits added points. Email opens added points. A webinar registration was worth more than a demo request, because nobody had updated the weights in two years. Sales had quietly stopped looking at the score entirely. When a 92-point lead turned out to be a student writing a term paper, the AEs made it a running joke.
That is the real failure mode of lead scoring. Not that the math is wrong. The math is almost never the problem. The problem is that the score stops meaning anything, so sales stops trusting it, so the whole system becomes decorative.
If you search r/hubspot you will find the same question over and over: "how are you actually building lead scoring?" People want the recipe, not the theory. So here is a model you can build in an afternoon, explain in one sentence, and defend in a pipeline review.
Start With One Question
Lead scoring exists to answer exactly one question: which leads should a human contact first?
That is it. It is a prioritization tool for a finite amount of sales attention. It is not a forecasting model, not a revenue attribution engine, not a way to grade your marketing team's homework. The moment you ask it to do more than rank order, you start adding rules, and rules are where trust goes to die.
A score nobody can explain is a score nobody will use. If your top AE cannot tell you in plain English why a lead is hot, your model is already broken.
Keep that bar in mind for everything below.
Two Inputs, Not Forty
Every durable scoring model splits into two dimensions, and you should keep them visibly separate.
Fit is who they are. Company size, industry, role, geography. Fit answers "are they the kind of account we win?" Fit barely changes over time.
Engagement is what they did. Demo requests, pricing page visits, replies to a rep, repeated logins to a trial. Engagement answers "are they showing buying intent right now?" Engagement decays fast.
When you collapse these into a single number, you lose the story. A 90 could mean a perfect-fit account that browsed once, or a terrible-fit account that downloaded everything. Those leads need opposite treatment. Keep the two axes separate and route off the combination, which is the grid approach Gartner has long recommended for demand qualification.
The Fit / Engagement Grid
| Low Engagement | High Engagement | |
|---|---|---|
| High Fit | Nurture, light sales touch | Hot, route to AE immediately |
| Low Fit | Disqualify or recycle | Investigate, often a low-value user |
Most teams over-invest in the bottom-right and ignore the top-left. The top-left is your nurture goldmine: right company, not ready yet. The bottom-right is the trap that produces "92-point student" leads.
Score Fit First, and Be Honest
Fit scoring is where you encode your actual ideal customer profile. Pull your last 50 closed-won deals and your last 50 closed-lost. Look at what the winners had in common. That is your fit rubric. Do not guess.
Be ruthless about negatives. A wrong industry or a free-email domain should subtract points, not just fail to add them. Most weak models only ever add, which is how unqualified leads float to the top. If you want a deeper walkthrough of turning closed-won patterns into criteria, our MQL and SQL definitions guide covers the qualification side in detail.
Score Engagement With Decay
The single biggest upgrade you can make over a default HubSpot or Salesforce setup is time decay. A demo request from this morning is worth far more than one from six weeks ago. If your model does not decay engagement, every lead trends upward forever and your "hot" list fills with stale records.
Simple rule: engagement points expire after 30 days unless refreshed by a new action. You do not need a data scientist for this. You need a workflow that resets scores monthly.
Weight high-intent actions heavily and passive actions barely at all. A pricing page visit and a "talk to sales" click should dwarf an email open. Email opens, frankly, are noise in 2026 and you can drop them entirely.
The Copy-Paste Rubric
Here is a starting rubric. Steal it, then tune the numbers against your own won and lost data. The point thresholds are illustrative, not gospel.
LEAD SCORING RUBRIC (Fit + Engagement)
=== FIT (max 50) ===
Company size in ICP range +15
Target industry +10
Decision-maker title +12
Senior/influencer title +6
Target geography +5
Uses a known competitor +8
NEGATIVE SIGNALS
Out-of-ICP company size -10
Excluded industry -15
Free email domain (gmail, etc.) -10
Student / job seeker title -20
Outside served geography -10
=== ENGAGEMENT (max 50, decays after 30 days) ===
Requested a demo / "talk to sales" +25
Visited pricing page (last 7 days) +15
Replied to a rep +20
Started a free trial +18
Active trial usage (3+ logins) +15
Attended a live event/webinar +8
Downloaded a bottom-funnel asset +6
Multiple site visits (last 14 days) +5
Email open / passive click +0
=== ROUTING ===
Fit >= 30 AND Engagement >= 25 -> MQL, route to AE (SLA applies)
Fit >= 30 AND Engagement < 25 -> Nurture track
Fit < 30 AND Engagement >= 25 -> Manual review (likely low-value)
Fit < 30 AND Engagement < 25 -> Hold / recycle
Hard disqualifiers (auto-suppress): student title,
excluded industry, competitor doing research.
Notice the routing rules at the bottom. The score is not the deliverable. The action the score triggers is the deliverable. A threshold that fires a handoff is the whole point, and that handoff needs an SLA, which we cover in the sales and marketing SLA playbook.
Make It Explainable
Whatever tool you use, expose the reasons alongside the number. "Score 78: pricing visit, demo request, VP title, target industry" is something an AE will act on. A bare "78" is something they will ignore. HubSpot's own guidance on scoring and most modern setups in Salesforce let you surface the contributing factors. Turn that on. The transparency is what buys you trust, and trust is the entire game, as more than a few threads on r/revops will confirm.
Tune It With Sales in the Room
Build the v1 alone. Tune it with sales watching.
Run the model retroactively against last quarter's closed deals. Did the winners score high? Did the losers score low? If your best closed-won deal would have scored a 40, your model is wrong, and you fix it in front of the AEs so they own the result with you. This kind of joint calibration is exactly the muscle that the broader GTM alignment playbook is built around.
Then set a standing review. Once a quarter, pull the leads sales marked "garbage" and the deals they wish they had seen sooner. Adjust weights. A scoring model is a living thing, and a 20-minute quarterly tune-up keeps it honest far better than a perfect launch ever will. Operational rhythms like this belong in your GTM operating cadence.
What to Skip
A few things you can safely ignore, at least at first:
- Predictive / AI scoring. Fine eventually, but you need clean fit and engagement data first, and you need sales to trust a simple model before you hand them a black box. First Round Review has good material on not over-engineering early GTM systems.
- Dozens of micro-behaviors. Each tiny rule adds noise and maintenance burden for almost no signal.
- Scoring on email opens. Apple Mail privacy and prefetching make opens close to meaningless.
Ship the Simple Version
The 47-rule model that nobody trusts is worth less than the 10-rule model that an AE checks every morning. Start with fit, add decaying engagement, expose the reasons, route off the grid, and calibrate against real deals with sales in the room.
You can have a working v1 by end of day. The afternoon you spend building it will pay back the first week sales stops chasing students.
Want the spreadsheet version with the weights pre-wired? Grab it in our templates library, and pull the full qualification stack from the RevOps toolkit. Then come tell us in the All Work All Play community what you cut to get sales to finally trust the score. The deletions are usually the best part.
Put this to work
Build a custom version in the toolkit, or grab a ready-made template.