LeadHaste

B2B Website Visitor Tracking: Build a Signal-to-Owner Plan

Christian Sørensen
Christian Sørensen·Sep 15, 2026·10 min read

Summarize with AI

Website visitor tracking produces value at exactly one point: when a specific page view reaches a specific person who does something about it. Everything upstream is plumbing, and most implementations fail in the plumbing rather than in the tooling choice. The decision that shapes the whole build is which pages you treat as commercially meaningful, because tracking everything produces a feed nobody reads and tracking only the pricing page misses the research that precedes it.

Choose the Pages That Carry Meaning

Not all traffic is signal, and an implementation that treats a blog visit and a pricing visit as equivalent will bury the second in the first.

Sort your pages into tiers before writing any tracking code. High-intent pages are the ones a person visits when evaluating a purchase: pricing, demo request, product detail, comparison pages, and case studies in the visitor's own industry. Research pages sit below that, including blog posts, guides, and glossary entries. Then there are pages that generate volume and almost no commercial signal, such as careers, support documentation, and login.

The careers page deserves a specific rule. It draws job seekers and competitors, it resolves to real companies, and those companies are almost never buying. Exclude it from routing entirely, or route it somewhere that is not a sales queue.

Define the tiers as a written list with page paths, and treat that list as configuration everyone can see. An undocumented page tier becomes an argument three months later about why a rep received a particular alert.

Instrument Events, Not Just Pageviews

A pageview tells you someone arrived. The events that indicate evaluation are more specific: time on a pricing page past a threshold, scroll depth on a comparison page, a pricing calculator interaction, a document download, or a video watched to a meaningful point.

Capture those as named events with consistent parameters so they can be queried later. Consistency matters more than completeness. An event set with predictable naming and a stable schema will still be usable in a year, while an ad hoc set accumulated by different people will not.

Record the session context alongside the event: entry page, referrer, campaign parameters where present, and whether the visitor was known or anonymous at the time. That last field is the one most implementations omit and later need, because it is what lets you distinguish a customer logging in from a prospect researching.

Consent is not a banner, it is a field. Whatever your jurisdiction and policy, the tracking record needs to carry what the visitor consented to at the moment the event fired, not what they consented to later.

Store the consent state on the event. That single design choice is what makes a data subject request answerable and what lets you separate populations cleanly when policies change. It also prevents the common retrospective problem where nobody can establish whether a given historical record was collected under consent.

Decide the behavior for non-consented traffic explicitly, and make it a documented rule rather than a default someone inherited from a tag manager template. Whatever the rule is, the important property is that it is the same on every page and that you can prove it.

Our view: treat consent state as a required field on every tracked event, the same way you would treat a timestamp. Systems that bolt it on later discover their historical data cannot be segmented by it at all.

Remove the Traffic That Corrupts Every Number

Exclusions come before counting, before routing, and before any measurement. Applied afterwards, they produce metrics that were already used to make decisions.

Google Analytics handles bots for you. Google documents that traffic from known bots and spiders is automatically excluded using a combination of Google research and the International Spiders and Bots List maintained by the Interactive Advertising Bureau, and states plainly that you cannot disable known bot traffic exclusion or see how much was excluded. Your identification vendor is a separate pipeline with separate behavior, so ask what it filters and whether filtered traffic is still billed.

Internal traffic is your responsibility. Google's data filters documentation describes internal traffic filters that match on IP address, supporting equals, begins with, ends with, contains, CIDR notation such as 192.168.0.0/16, and regular expressions, with up to 10 filters per property. Analytics adds a traffic_type parameter with a default value of internal, and you can set a different value such as emea_headquarters to distinguish locations.

The filter states matter operationally. Filters run as Testing, where matching data is identified through a test dimension, Active, where the filter is applied to incoming data, or Inactive. Google warns that once a data filter is applied the effect on the data is permanent and excluded data becomes permanently unavailable in Analytics and BigQuery, which is why the Testing state exists.

Beyond bots and staff, exclude existing customers, open opportunities, your partners and vendors, and competitors. Each belongs to a different workflow, and routing any of them to prospecting wastes attention and occasionally causes an awkward conversation.

Match to Accounts and Assign a Real Owner

A signal with no owner is a notification. Ownership is what converts it into work.

Match on domain as the primary key, with company name as a reviewed fallback. Then resolve each match into one of five states, because they route differently: an owned prospect account, an unowned prospect account, an open opportunity, a customer, or unmatched.

Match stateRoute to
Owned prospect accountThe account owner, with a response window
Unowned prospect accountAssignment rule, then owner
Open opportunityThe deal owner, as deal context
CustomerAccount management, or suppress
Unmatched, in ICPReview queue for qualification
Unmatched, out of ICPDiscard, with a count retained

Set a response window per tier and measure adherence. A pricing page visit routed with a four-hour window and actioned three days later has become a log entry. If your team cannot meet the window you set, lower the volume by tightening the page tiers instead of pretending the window exists.

Decide the CRM write behavior before launch. Confirm whether repeat visits append to one record or create new ones, what happens when the account already exists, and which fields the tool may touch. Duplicate creation is far easier to prevent at configuration time than to clean up afterwards.

Measure Against a Holdout, Not Against Itself

Accounts that visit your pricing page were already more likely to buy. Any measurement that compares visitors to non-visitors will show a large effect that has nothing to do with your tracking program.

The only honest measurement is a holdout. Define the eligible population as matched, in-ICP, not a customer, no open opportunity. Randomly withhold a portion from signal-triggered treatment, work the rest on the intended timing, and compare meetings held and opportunities created over a fixed window.

Keep a small holdout running permanently. It is the only way to know whether the program still earns its cost a year later, once the novelty has worn off and the response windows have quietly slipped.

Track the operational metrics alongside the outcome: signals routed per week, share actioned within the window, false matches found in sampling, and duplicates created. Those four numbers move immediately, while pipeline figures lag by a full sales cycle.

LeadHaste practice: we keep the raw signal feed in a store we control, separate from both the vendor and the CRM, with the routing decision and its timestamp recorded. That is our operating rule, and it is what makes a program review possible after a vendor change. Without it, switching tools erases the evidence that justified the spend.

Build It in This Order

  1. Write the page tier list with explicit paths
  2. Instrument named events with a stable schema and consent state
  3. Configure exclusions, running GA4 filters in Testing first
  4. Build account matching and the five routing states
  5. Set response windows per tier and measure adherence
  6. Launch the holdout on day one, not after the pilot
  7. Review operational metrics weekly and outcomes quarterly

Launching the holdout first is the step teams skip and regret, because a holdout cannot be created retroactively. If you are still choosing a vendor rather than implementing one, our website visitor identification software buyer's test covers that decision.

We can define the page tiers, design the routing states, and set up the holdout with your team during a free ICP and campaign-fit discovery call. Book your free ICP and campaign-fit discovery call →

Frequently Asked Questions

Hiring an in-house SDR costs $5,500+/month in salary alone, before tools ($3K–5K/month), training, and management. Agencies typically charge $3,000–8,000/month. A managed outbound system like LeadHaste starts at $2,500/month, with infrastructure the client owns and month-to-month engagement after the first three months.

With a properly built system, most clients see their first qualified replies within 2–3 days of campaign launch (after the 2–3 week warm-up period). The real power shows in month 2–3 as domain reputation strengthens, sequences optimize from real data, and targeting sharpens.

In-house works if you have a dedicated ops person, 6+ months of runway for ramping, and budget for 20+ tool subscriptions. Outsourcing makes sense when you want speed-to-pipeline, can't justify a full-time hire, or need multi-channel orchestration (email + LinkedIn + intent data) that requires specialized tooling.

Inbound attracts leads through content, SEO, and ads. Prospects come to you. Outbound proactively reaches prospects through targeted email, LinkedIn, and calls. Inbound scales slowly but compounds over time. Outbound delivers faster results but requires ongoing execution. The best B2B companies run both.

A compound outbound system is an orchestrated set of 20–30 tools (enrichment, sending, warm-up, analytics) that improves automatically over time. Month 2 outperforms month 1 because domain reputation strengthens, AI sequences learn from engagement data, and targeting tightens from real conversion patterns. It's the opposite of starting fresh every month.

website visitor trackingsignal-based outboundanalyticsattribution
Christian Sørensen

Christian Sørensen

Co-Founder & CEO, LeadHaste

Co-founded LeadHaste and runs the multichannel side of the system, from LinkedIn outreach to the agents that qualify replies before a human ever sees them.

Newsletter

Get outbound strategies that work, delivered weekly.

Join 500+ B2B leaders getting one actionable outbound insight every week.

No spam. Unsubscribe anytime.

Ready to build outbound that compounds?

We'll build the entire system for your business, and the infrastructure it runs on stays yours.

Book my free review →