Score website visitors by intent and build a sales list
Knowing which companies visit your website is only half the job. A raw list of company names mixes serious buyers with students, job seekers, competitors and your own customers logging in for support. To score website visitors by intent, you turn page views into a number that reflects how close a company is to a buying decision, then filter out the noise and hand sales a short list they can act on today. This guide explains the parts of a practical intent score, how to set thresholds, what to exclude, and walks through a worked example with clearly hypothetical numbers you can redo with your own pages.
What intent looks like on a B2B website
Intent is a behavior pattern, not a single click. A company that reads one blog post from a search result is curious. A company whose people look at pricing, then a comparison page, then come back two days later and read a case study in their industry is evaluating. The score should separate those two cases clearly.
Four signals carry most of the weight in a useful model:
- Which pages were viewed, because a pricing page and a careers page say very different things.
- How recently the visits happened, because interest fades fast in B2B buying.
- Whether the company came back, because return visits are rare without a real reason.
- How many sessions and how much time, because depth separates a skim from a study.
Firmographic fit (industry, employee range, country) is usually better handled as a filter than as part of the score. A perfect behavioral score from a company you cannot sell to is still not a lead. Keep fit and intent separate and combine them at the list stage. For background on how companies are recognized at all, see identify anonymous website visitors.
Assign weights to page types, not to individual URLs
The fastest way to build a score that survives site changes is to group pages into intent tiers and weight the tiers. Individual URL weights break every time marketing renames a page. A tier like "pricing" or "comparison" keeps working.
A sensible starting set of tiers for most B2B sites looks like this:
| Page tier | Typical pages | Why it signals intent |
|---|---|---|
| Pricing | /pricing, plan detail pages | Budget questions come late in evaluation |
| Demo or trial | signup, trial, product tour pages | A direct step toward using the product |
| Comparison | alternatives, vs pages | Active shortlist building |
| Case studies | customer stories by industry | Proof seeking before a decision |
| Product | feature and integration pages | Fit checking |
| Docs | help center, API reference | Technical validation, often by an evaluator |
| Blog | articles and guides | Early research, weak alone |
| Careers | jobs, culture | Job seekers, almost never buyers |
| Legal | privacy, terms | Mostly noise, sometimes procurement |
Give the top tiers the most points per view and give careers and legal zero. Docs deserve care: on a developer product they can be a strong signal, on other products they mostly reflect existing customers. VisitorDetector sorts your real pages into these tiers automatically when you try the demo, and you can edit the weights on Growth and higher plans.
Recency, return visits and session depth
Page weights tell you what a company looked at. Recency tells you whether it still matters. A simple and robust method is decay: points from a visit lose value as days pass. You do not need exotic math. Halving the value of a visit every seven to fourteen days works well for most sales cycles, and you can shorten it for transactional products or lengthen it for enterprise deals.
Return visits deserve a bonus of their own. A company that visits on three different days is far more interesting than one that views the same number of pages in a single burst, because coming back requires a reason. Count distinct days or distinct sessions, not raw page views, so one person refreshing a page does not inflate the score.
Session depth is the tiebreaker. Time on page and pages per session help separate a real read from an accidental landing, but cap their contribution, otherwise a single long session with a tab left open can outrank a genuine multi-day evaluation.
- Decay older visits so last week counts more than last quarter.
- Add a bonus per additional day with a visit, with a sensible cap.
- Use time on page as a filter for accidental views rather than a big score driver.
- Normalize the total to a 0 to 100 scale so everyone reads it the same way.
Exclude customers, competitors, your own office and job seekers
Exclusions make or break a sales list. Without them, your top accounts are often your own customers checking documentation, a competitor's product team studying your pricing, and your own employees.
- Existing customers: sync or upload your customer list and exclude those companies from the prospect list. Route their activity to account management instead, where it can signal expansion or churn risk.
- Competitors: keep a short, maintained list of competitor companies and exclude them.
- Your own office: exclude your office IP ranges so internal traffic never appears.
- Careers traffic: if a company only viewed careers pages, drop it. If it viewed careers plus pricing, keep it but ignore the careers points.
- Partners and agencies: decide whether they belong on a sales list or in a separate segment.
VisitorDetector supports an ICP filter, exclusion of existing customers and competitors, exclusion of your own office IPs, and saved segments, so these rules run on every report rather than living in a spreadsheet someone forgets to update. Learn more on the lead scoring page.
A worked example with hypothetical numbers
The numbers below are invented for illustration. They are not benchmarks and not data from any customer. Use them to understand the mechanics, then redo the calculation with your own tiers.
Assume these per-view weights: pricing 20, comparison 15, demo or trial 20, case study 10, product 5, blog 2, careers 0. Assume a visit loses half its value after 7 days. Assume a return bonus of 8 points for each extra day with a visit, capped at 3 extra days. Cap the final score at 100.
Company A, a logistics firm, visited today and viewed pricing once and a comparison page once. It also visited 3 days ago and read 2 blog posts. Today's points: 20 plus 15, which is 35. The visit 3 days ago counts at a little less than full value; to keep the arithmetic simple, count it at 0.75, so 4 times 0.75 is 3. Return bonus for one extra day: 8. Total: 35 plus 3 plus 8, which is 46.
Company B, a software firm, viewed 6 blog posts and 1 product page in a single session today. Points: 12 plus 5, which is 17. No return bonus. Total: 17.
Company C, a manufacturing firm, visited on four different days over the last 10 days: pricing twice, a case study twice and the trial page once, spread across those days. Suppose after decay those views add up to 58 points. Return bonus for three extra days: 24. Total: 82.
Company D viewed only careers pages on two days. Points: 0. Return bonus does not apply because the careers-only rule drops it before scoring.
Ranked list: C at 82, A at 46, B at 17, D excluded. Company C is a call today. Company A is worth a tailored email referencing the comparison it read. Company B belongs in a nurture segment. That is the whole point of a score: it turns a long list into three different actions.
Setting thresholds and turning the score into a list
A threshold is a promise to sales: above this line, we believe the account is worth your time. Set it too low and reps stop trusting the list. Set it too high and good accounts sit unnoticed.
A practical way to set the first threshold is to look back at recent wins. Check what those companies viewed in the weeks before they signed up or entered your pipeline, score them with your model and note where they landed. Put the threshold slightly below the typical score of those wins. Then review it after a month of real use.
- Hot: above your threshold and inside your ICP filter. Goes to sales the same day.
- Warm: within some distance below the threshold. Goes to marketing for targeted follow-up.
- Cold: everything else. Stays in reports for trend analysis.
Write the rules down in one place so sales and marketing agree on what each band means. If you use alerts, connect them to the hot band only; our guide on website visitor alerts in Slack covers how to do that without flooding a channel.
Keep the model honest over time
A scoring model drifts as your site and market change. New pages appear without tiers, a campaign floods the blog with irrelevant traffic, or a pricing page redesign changes how people browse.
- Review unassigned pages monthly and put them in the right tier.
- Compare the hot list with what sales actually closed every quarter and adjust weights.
- Watch for single sources that dominate, such as one paid campaign, and check whether they convert.
- Keep separate models when you sell very different products. VisitorDetector Scale supports multiple scoring models for that reason.
- Remember the honest limit: only visits from business networks that can be matched become companies. Home, mobile and VPN traffic stays anonymous, so treat the score as a strong signal, not a complete picture.