Lead scoring is the practice of assigning each lead a number that predicts how likely it is to become a paying customer, built from fit (does the company match the profile), intent (what the person has done) and, in SaaS, product usage (what they did inside the free tier or trial). A score is only as good as its inputs, and the input most models skip is whether the lead's email address works: in the BounceZero corpus, April to October 2026, 14.5% of non-freemail (business and ISP) addresses on lead lists were invalid and a further 27% could not be confirmed. This guide builds a 100-point model, sets thresholds, calibrates it against closed deals, and shows where reachability gates the score.
Every SaaS scoring model is some weighting of the same three families. The weights differ by motion: product-led companies lean on usage, sales-led companies on fit and intent. The failure mode is the same in both: a lead that scores well on paper and cannot be reached.
Firmographic and technographic match to the ideal customer profile: industry, headcount, revenue band, geography, stack, funding stage. Comes from enrichment, not from the lead. Stable for months. Over-weighted by teams with a narrow ICP, under-weighted by teams selling horizontally.
What the person did: visited pricing, opened the docs, replied to a sequence, registered for a webinar, searched a category on an intent-data network. Decays within days. The noisiest family, because curiosity and need look alike until a call.
What the account did inside the product: invited a teammate, connected an integration, hit a usage limit, ran a second job. The strongest predictor in product-led motions and the only family that cannot be faked by a browser. Requires a free tier or trial to exist at all.
The table below is a starting model for a mid-market SaaS with a free tier. The numbers are a template to calibrate, not a benchmark. Each row names the signal, the points, and where the data comes from, because a signal nobody can collect is a line in a spreadsheet, not a score.
| Signal | Points | Family | Source |
|---|---|---|---|
| Company size 50 to 1,000 employees | +10 | Fit | Enrichment |
| Industry in top three verticals by close rate | +7 | Fit | Enrichment |
| Uses a tool we integrate with | +5 | Fit | Technographics |
| Country in served regions | +3 | Fit | Enrichment or IP |
| Viewed pricing page twice in 7 days | +8 | Intent | Web analytics |
| Requested a demo or replied to outreach | +12 | Intent | CRM |
| Opened API documentation | +5 | Intent | Web analytics |
| Invited a second user | +20 | Usage | Product events |
| Connected an integration or API key | +16 | Usage | Product events |
| Hit a plan limit in the first 14 days | +14 | Usage | Product events |
| Email address verified valid | Gate | Reachability | Verifier at signup |
| Email catch-all or unknown | Cap at 59 | Reachability | Verifier at signup |
| Email invalid, disposable or role-based | Score 0 | Reachability | Verifier at signup |
Points sum to 100 before the reachability rows (fit 25, intent 25, usage 50, the product-led split recommended below). A catch-all or unknown address caps the score at 59, the top of the Warm band, so an unconfirmed contact never triggers a 24-hour call. The reachability rows are not additive: they gate or cap the total. A lead with a dead address has a pipeline value of zero whatever the other signals say.
Most models treat the email address as an identifier and never test it. The lead fills a form, the CRM creates a record, the score accumulates, and three weeks later a rep discovers the mailbox bounces. The time spent scoring and routing that lead was wasted, and if the address went into a sequence it also cost sender reputation.
The corpus data explains how often this happens. Across 6.5 million non-freemail (business and ISP) addresses on lead lists verified between April and October 2026, 14.5% were invalid at the time of the check, 2.3% sat on catch-all domains that accept any address, and 27% returned unknown because the receiving server would not confirm or deny. Only 32.6% could be positively confirmed. Freemail addresses on the same lists were worse on invalid (17.6%) but far better on confirmation (74% valid), because consumer providers answer probes.
A scoring model that ignores this is assigning fit and intent points to a population where roughly one lead in seven has no working address. Putting the verifier result in as a gate costs one API call at form submission and removes that population before it consumes a rep's time. The full breakdown by provider and country is in the lead list quality benchmarks.
Thresholds decide hand-offs. Set them from your own conversion data, then revisit quarterly. The table gives typical starting cut-offs for a 100-point model and the action each one triggers.
| Band | Score | Label | Action | Typical share of leads |
|---|---|---|---|---|
| Cold | 0 to 29 | Unqualified | Nurture only; no rep time | 55 to 70% |
| Warm | 30 to 59 | MQL | Automated sequence; SDR review weekly | 20 to 30% |
| Hot | 60 to 79 | PQL or SQL candidate | SDR call within 24 hours | 8 to 12% |
| Sales-ready | 80 to 100 | SQL | AE assigned; opportunity created | 2 to 5% |
Shares are typical ranges for B2B SaaS funnels with a free tier; your distribution will differ. If more than 10% of leads land in the top band, the model is too generous.
A model built from opinion stays an opinion until it is checked against outcomes. The loop below takes two quarters of data and turns it into weights.
Export every lead created in the window with its signals at creation time and its outcome: closed-won, closed-lost, no opportunity. Freeze the signals as they were, not as they are now.
For each signal, the closed-won rate among leads that had it versus leads that did not. A signal with no lift is worth zero points whatever the sales team believes about it.
Verify every address in the export. Compare the closed-won rate for valid, catch-all, unknown and invalid. Expect invalid to be near zero and unknown to sit between valid and invalid, which is why unknown caps rather than gates.
Scale points to the lift. A signal that doubles the base rate gets roughly twice the points of one that lifts it by half. Keep the total at 100 so thresholds stay readable.
Apply the new weights to the historical leads and check that the top band captures most of the closed-won deals without swallowing the pipeline. Adjust the cut-offs, not the weights, if the bands are off.
Put the model in the CRM, log the version, and book the next calibration for ninety days out. Product changes, pricing changes and a new vertical all shift the weights.
The same signals, different weights. The two columns below are starting points for the two motions.
Usage 50%, intent 25%, fit 25%. The second-user invite and the integration connect are the strongest single signals. Fit matters for expansion sizing, not for whether the account activates. Reachability gate at signup, because a trial account with a dead address cannot receive the onboarding sequence that drives activation.
Fit 45%, intent 40%, usage 15% or absent. The demo request and the reply are the strongest signals; company size and vertical decide whether a rep is assigned. Reachability gate at form submission and again before a lead enters an outbound sequence, because here the address is the channel.
A working model needs five to eight signals, not thirty. Form fields give company and role. A free enrichment call gives headcount and industry. Web analytics gives pricing-page views. Product events give the usage signals, and these are usually already in the database. The email verifier gives reachability through a single real-time call at signup, documented on the validation API page.
Stop collecting a signal when its lift is below 1.2 times the base rate across two calibrations. Add a signal only when a rep can name a deal it would have changed. The model that ships beats the model that is still being designed.
Rule of thumb: a lead's score is the probability it converts multiplied by the probability you can reach it. Most models compute the first and assume the second is one. On lead lists it is closer to 0.6.
Types, sources and qualification with reachability in the score
BANT, MEDDIC and CHAMP compared
The inbound stack and the form validation step
The corpus numbers behind the reachability gate
Where the verifier result lands in the CRM
Sources ranked by data quality
There is no universal number. Set the MQL threshold so that the band captures roughly a quarter of leads and at least two thirds of eventual closed-won deals when backtested. On a 100-point model that usually lands between 30 and 40. If the top two bands together hold more than 20% of leads, the weights are too generous and reps will stop trusting the score.
Traditional scoring weights fit and intent, because the lead has not used the product. Product-led scoring adds usage events, such as inviting a teammate or connecting an integration, and usually gives them half the weight. Usage is harder to fake than a page view and predicts activation far better, so product-led models tend to be more accurate once the trial funnel has volume.
Yes, but as a gate or cap rather than points. A lead with an invalid address has no pipeline value, so the score should be zero regardless of fit. A catch-all or unknown address cannot be confirmed, so cap the score below the sales-ready band until a reply or another channel confirms the contact. In corpus data, 14.5% of business lead addresses were invalid and 27% unknown.
Quarterly, and after any change to pricing, packaging or target vertical. The calibration takes the last two quarters of leads with outcomes, recomputes the lift of every signal, and re-weights. A model that has not been checked against closed deals for a year is a guess with decimal places.
Yes. Five to eight signals from form fields, one enrichment call, web analytics, product events and a verifier call at signup are enough. Most CRMs score natively from those fields. The work is in the calibration loop, which is a spreadsheet exercise, not an engineering project.
One API call at signup returns valid, invalid, catch-all or unknown before the lead enters the model. 100 free checks a month, unknowns refunded.
Ayoub built BounceZero's 5-stage validation pipeline, its dedicated BGP-announced IP infrastructure, and the Patroni HA PostgreSQL cluster behind every verification. Previously built high-volume email delivery infrastructure. Trained at 1337 Benguerir (École 42 network, 2019). Open-source: bgp_analyzer.
Scoring, qualification, list building and the outbound and inbound stacks
Eight methods ranked by return
Six steps and the tools for each
Twelve sales prospecting techniques compared on reply rate, effort and data quality
How to generate a sales leads list in 2026 without buying one
Lead qualification frameworks compared for 2026
The operating playbook for an outbound lead generation agency in 2026
Continue through related topics