Marketing inference

How a visit gets an acquisition channel, a set of interests and an intent score — and, just as importantly, how to check any of them when the answer looks wrong.

Note:Everything on this page is derived, not measured. Each session records not only what was decided but why, so an attribution you disagree with can be argued with rather than merely believed. That field is channel_reason.

Channel attribution

Decided once, at the start of a visit, from the landing URL and the referrer. Not from the current page — by the time a beacon fires the visitor may be three pages in and the campaign parameters that brought them are long gone from the address bar.

Precedence

The order is the whole design. A paid click carries both an ad-platform click id and a referrer from the platform's own domain, so a referrer-first rule would file every Google Ads click as organic search and quietly understate ad spend against results.

NameTypeRequiredDescription
1. Click identifierstrongestNogclid, gbraid, wbraid, msclkid → paid_search. fbclid, ttclid, li_fat_id, twclid → paid_social. Minted by the platform at click time; it cannot be there by accident.
2. utm_mediumexplicitNocpc/ppc/paid/cpm/cpa/retargeting/sem → paid (social if the source is a social platform, otherwise search). display/banner/programmatic → display. social → organic_social. email/newsletter/edm → email. affiliate/partner → affiliate.
3. Referrer hostobservedNoMatched as a substring, because search and social hosts are heavily regionalised and an exact-match table is out of date the day it is written.
4. NothingfallbackNoNo referrer and no campaign is direct. A referrer that resolved to the site’s own host is internal.

Channels

NameTypeRequiredDescription
directchannelNoNo referrer, no campaign. Also where a stripped referrer lands, which is more traffic than most people expect.
organic_searchchannelNoGoogle, Bing, DuckDuckGo, Yahoo, Yandex, Baidu, Ecosia, Brave, Startpage, Qwant.
paid_searchchannelNoA search-platform click id, or a paid utm_medium without a social source.
organic_socialchannelNoFacebook, Instagram, LinkedIn, X, Reddit, YouTube, TikTok, Pinterest, Threads, Bluesky, Mastodon, and messaging apps.
paid_socialchannelNoA social-platform click id, or a paid utm_medium with a social source.
emailchannelNoWebmail referrers and email utm_mediums.
referralchannelNoAny other site.
affiliatechannelNoutm_medium of affiliate, partner or referral-program.
displaychannelNoBanner and programmatic placements.
ai_assistantchannelNoChatGPT, Claude, Perplexity, Copilot, Gemini and similar. Separated from search deliberately: these visitors arrive with an answer already formed and behave nothing like a search click.
internalchannelNoA referrer from the site itself. Filtered out of acquisition reporting.

Interest inference

Read off the site's own URL structure: the first path segment of every page visited, ranked by how many of them there were, capped at eight. A visit to /pricing/business and /security/compliance produces ["pricing", "security"].

Deliberately shallow. This is not content classification — it is "they were in pricing and security", which is the part a salesperson can act on. Anything cleverer would need the text of the page, which this system does not collect.

Intent scoring

A 0–100 heuristic for how close a visit is to an enquiry, recomputed on every batch so a session still open is still scored. It is weighted towards actions that cost the visitor something, and away from raw volume — a long session with no direction is a lost visitor, not a warm one.

NameTypeRequiredDescription
Depth+ up to 38NoPageviews (capped early — the tenth page is not worth what the second was), engaged time, scroll reach.
Deliberate actions+ up to 59NoStarting a form (+12), submitting one (+22), a conversion (+25), downloads, on-site searches.
Commercial pages+ up to 24NoReaching a path the site owner marked as high intent (+14), or any of pricing, contact, demo, quote, book, signup, trial, buy, checkout (+10).
Return visits+ up to 14NoA second visit (+8), a fourth (+6). The single most under-weighted signal in most analytics tools.
Known identity+ 15NoThe visitor told the site who they are.
Frustration− up to 12NoRage clicks subtract. A score that rose with frustration would send salespeople after the wrong people.
Leaving− 4NoMore than three outbound clicks.

Bands: cold below 35, warm 35–64, hot 65 and above.

Warning:This is a ranking, not a prediction. It is useful for deciding which twenty visits out of four thousand a person should look at. It is not a probability, it has no calibration behind it, and it should not be fed into anything that makes a decision without a human.

Configuring high-intent paths

Each site carries a list of paths that count as a conversion and feed the intent score. Set them in the Website Analytics surface, or ask HLD. Reaching one raises the score and marks the session converted without any code on your side.

Identifying organisations

Every session records the network behind the address — ASN, network operator, and a reverse DNS lookup done once per session. For B2B sites this is how an anonymous visit becomes an account name. Group by company in a breakdown to see it.

Note:It identifies an organisation, never a person. Residential and mobile networks resolve to the carrier, which tells you nothing — most consumer traffic will have no useful company at all, and that is the expected result rather than a gap.