Two problems wearing one word
“Attribution” covers two questions that are usually discussed together and are solved very differently:
- Classification. Which channel was this visit? Mechanical, decidable per visit, and where most real-world error lives.
- Credit assignment. Of the several touches before a conversion, which get the credit? A modelling choice, not a measurement, and no amount of data settles it.
Teams argue about the second and lose most of their accuracy to the first.
Classification: how a visit becomes a channel
Two inputs decide it. The referring domain, which the browser reports, and the
UTM parameters, which you put on your own links. A rule set maps them onto a
small comparable taxonomy — a referrer of google.com with no paid markers is Organic Search; the same
referrer with utm_medium=cpc is Paid Search; a referrer from a social domain is Organic Social unless
a paid medium says otherwise.
The taxonomy is small on purpose. Comparing five hundred referring domains tells you nothing; comparing a dozen channels tells you where to spend. The trade is that the rules are opinionated, and two tools with different rules will classify the same visit differently — which is a common and entirely mundane reason two dashboards disagree.
Direct is not a channel, it is a residual
Everything that could not be classified falls into Direct, and the list of ways that happens is long: untagged email, messaging apps, links opened from a PDF or a document, an HTTPS page linking to an HTTP one, privacy tools that strip the referrer, and any campaign nobody tagged. A big Direct bucket is rarely a story about brand strength. It is usually a story about missing UTM tags.
Credit assignment: the models
- Last touch. All credit to the final channel before conversion. Simple, auditable, and systematically flatters closing channels like branded search and email.
- First touch. All credit to the channel that first brought them in. Flatters discovery channels like content, social and word of mouth.
- Linear. Credit split evenly across every touch. Fair-looking, and treats an incidental visit as equal to the one that convinced them.
- Time decay. Later touches get more credit. Reasonable for short cycles, wrong for long considered purchases where the early research mattered most.
- Position based. Weighted to the first and last, the rest sharing the remainder. A compromise between the two single-touch models rather than a discovery about your customers.
Every model is an assumption chosen before the data is seen. Changing models changes which channel “wins” without a single customer behaving differently — which is worth remembering before a budget decision rests on one.
Why attribution is getting harder
- Cross-device journeys. Research on a phone, purchase on a laptop. Without a shared identity, that is two people who each did half a journey. Identity resolution is what stitches it back together.
- Referrer loss. Privacy features, apps and link wrappers strip or rewrite referrers, pushing real traffic into Direct.
- Platform walls. Ad platforms report their own conversions using their own windows and their own models, and will not agree with your analytics. They are not lying; they are answering a differently-worded question.
- Consent gaps. Where identity depends on consent, the population you can attribute is a subset of the population that converted. See what cookieless tracking does to people-level metrics.
What Pug does, and what it does not
Pug does the classification half. Every event is assigned a marketing channel on the server as it arrives, using the referring domain and the UTM values together, across a fixed thirteen-value taxonomy: Paid Search, Paid Social, Paid Video, Display, Paid Other, Organic Search, Organic Social, Organic Video, Email, Affiliate, Referral, Unassigned and Direct. Self-referrals and authentication redirects are blanked rather than counted as referrals, so a visitor returning from a login provider is not credited as traffic from that provider.
Both the channel and the referring domain are worked out on the server rather than sent by the page, so the values mean the same thing in every project instead of depending on what each site’s snippet reported. What Pug does not ship is a credit-assignment model: there is no first-touch or multi-touch attribution report. Channels are a dimension you filter and break down by — including inside a funnel, which answers the practical version of the question — but the modelled split of credit across touches is not something the product claims to do.