Campaign URL Tracking: What Happens After the Click
Campaign URL tracking explained layer by layer: what UTMs capture, what click logs see, where sessions come from, and where each one quietly breaks.
One click, three witnesses
Campaign URL tracking sounds like one thing. Tag a link, see the results. Most guides explain the UTM parameters and stop there, as if the tag were the whole system.
It isn't. Between the moment someone clicks your campaign URL and the moment a number shows up in a report, the click passes through up to three separate recording layers. Each one sees something the others can't. Each one fails in a different way. And when your numbers look wrong (they'll eventually), knowing which layer dropped the ball is the entire diagnostic.
Here's the full path, using a newsletter link as the example.
Layer 1: the UTM parameters
The visible part. You append tags to the destination URL:
https://yoursite.com/launch?utm_source=newsletter&utm_medium=email&utm_campaign=july-launch
When the page loads, your analytics tool (GA4 for most teams) reads those parameters and credits the session to newsletter/email. That's the core of campaign URL tracking. It hasn't changed much since Urchin invented it two decades ago. Our UTM guide covers the five parameters in depth, so I'll skip the field-by-field tour.
What matters here is the failure mode. UTMs only get recorded if the page loads, the analytics tag fires, and the visitor lets it fire. A consent banner declined, an ad blocker, an in-app browser that chokes on the script, a page that got closed in the first second. In each case the click happened and the UTMs evaporated. In Europe, consent decline rates alone commonly eat 20 to 40% of sessions. The tag is a witness that only testifies when conditions are perfect.
Also, people delete UTMs. They copy your tagged URL, notice the clutter, and trim everything after the question mark before sharing it. Attribution gone.
Layer 2: the click log
Now put a short link in front of that same URL. The newsletter carries yourbrand.link/launch, which redirects to the full tagged destination.
The redirect is a server you (or your link tool) control, which changes the game: the click is recorded at the redirect itself, before any destination page, any JavaScript, any consent banner gets a vote. Timestamp, referrer, country, device. Every click, including the ones layer 1 will never see.
This is why click counts and session counts never match, and shouldn't. When we ran our own Reddit ad experiments earlier this month, the click logs consistently showed more clicks than GA4 showed sessions. The gap was the in-app browser tax, and being able to measure it is the point. "Clicks minus sessions" tells you how much of your traffic your analytics is blind to. Most teams have no idea this number exists.
The click log's own failure mode: it can't see anything after the redirect. It knows the click happened. It doesn't know whether the visitor bounced, browsed or bought. Prefetchers and link-scanning bots can also inflate raw click counts (decent tools filter those out).
Layer 3: the session join
The third layer connects the first two. Did the person who clicked the newsletter link sign up? Buy? That requires tying the click to what happened on-site afterward, which is where click identifiers come in. A click ID stamped on the redirect rides along to the destination and gets picked up by on-site tracking, joining the click to the session and the session to the conversion. Ad platforms do the same thing with gclid and fbclid, and the mechanics have some sharp edges we covered in click IDs vs UTM parameters.
This layer is the most fragile of the three. Safari caps its cookie lifetimes, redirect chains drop query strings, and single-page apps lose parameters on route changes. When someone says "attribution is broken," nine times out of ten they mean layer 3.
Reading the layers together
The practical payoff of understanding this as three layers instead of one:
- Clicks but no sessions? Layer 1 problem. Consent, blockers, in-app browsers, or a redirect stripping your parameters. Test by clicking your own link and watching the address bar.
- Sessions but no clicks? Someone's sharing the destination URL directly, bypassing your short link. Common when a tagged URL leaks into organic sharing.
- Sessions but no conversions from a campaign you know converted? Layer 3. Check the join, not the tag.
One warning from experience: none of this works if the tags themselves are improvised. Newsletter in one send and newsletter in the next forks your data into two rows forever. Fix the naming conventions before adding layers, and build the URLs with a UTM builder rather than by hand. Boring, yes. It's also the highest-ROI 15 minutes in this whole system.
If you're setting up campaign measurement from zero and want the process view (goals, channels, review cadence) rather than the plumbing view, start with how to track a marketing campaign. This post is the plumbing. That one's the operating manual.
But whichever end you start from, remember the click has three witnesses. Any single one of them will lie to you eventually. Together they're honest.