UTM Campaign Tracking Lab

Marketing Attribution

Every attribution model you will ever build sits on top of one boring question: did the click arrive with a label on it? Tag a real campaign, run it for 30 days, then find out how much of your dashboard was telling you the truth.

πŸ‘¨β€πŸ« Professor Mode: Guided Learning Experience

New to campaign tracking? Enable Professor Mode to be walked through tagging, deploying and debriefing a live campaign.

STAGE 1 β€” ANATOMY OF A TAGGED LINK

The brief

GlowRoute is a direct-to-consumer skincare brand in Los Angeles: serums, moisturizers and SPF bundles, sold through its own site and nowhere else. About $120,000 a month runs through five paid channels. Gross margin is 55%, so Ruben Ferraro, the CFO, holds every channel to a 1.82x return on ad spend just to break even.

You joined three weeks ago. On Monday the brand launches Summer Glow, a 30-day push on top of the always-on account: paid search, Instagram ads, three email sends, two creators and retargeting display. Launch media: $61,500. Jess Tanaka, the Growth Lead, has handed you the draft tagging sheet from Ravelston Digital, the agency that set up the tracking two years ago. Nobody has audited it since. The tags are yours now.

Nobody will ask you about tracking for the next 30 days. Then Delphine Arceneaux, the CMO, will ask about it all at once. She decides from dashboards, she is impatient with caveats, and she wants to cut a channel next quarter.

Where this sits at GlowRoute

This lab stands on its own. It is also one of three MktPraxis tools built on the same company. The Web Analytics Sandbox holds the account's two years of history before this launch, faults included. The Shapley and Markov attribution labs show what last-click reports like the ones here cannot: credit across every touch on the way to a sale. Both open on this launch's journeys (Case F: GlowRoute Summer Glow). Do them in either order, before or after this one. Nothing here depends on them.

How this lab works, in four stages
  1. Anatomy. Learn to read a link the way an analytics platform reads it, so you can predict where a visit will be filed before you ship anything.
  2. Tagging Plan. Decide how to label all five of GlowRoute's launch sources. The agency's draft is loaded; every row is yours to keep or fix, and you will live with every one of them.
  3. Deploy. The campaign runs for 30 days. You cannot change your tags now, which is exactly how it works in practice.
  4. Debrief. Answer the questions your CMO actually asks, using only the dashboard your own tagging produced. Then find out what was really happening.

One thing to hold onto: the 30 days never change. The same customers buy the same things for the same reasons no matter how you tag. All your tagging decides is how much of that you are able to see. That is why you can come back at the end, revise your plan, and re-measure the identical month.

Start with the problem

Below is an ordinary campaign link, exactly as most people would paste it into an ad. Watch what the analytics platform is able to record about anyone who clicks it.

You can edit this URL directly, or load one of the examples below.

Five versions of the same link, colour-coded so you know what you are looking at: one has no tags three are common mistakes one is correct

What the analytics platform records

The five fields, explained with one real click

The five field names sound alike until you watch them describe the same event. So follow one single click all the way through. Someone is scrolling Instagram. They see Video A, the founder-story ad. They tap it. GlowRoute paid for that tap, and the ad only exists because of the Summer Glow launch.

That one click gets described by all five fields at once. Each field answers a different question about it, and once you can hear the difference between the questions, the fields stop blurring together.

utm_source
WHO showed them the link instagram The site or app the person was actually on at the moment they clicked. It is a company or website name and nothing else.
utm_medium
HOW it reached them, and whether money changed hands cpc The mechanism, not the platform. cpc means somebody paid per click. This is the field that decides the channel group, which is why getting it wrong is so expensive.
utm_campaign
WHY it ran — which business push it belongs to summer-glow The initiative that paid for the ad to exist. Every source in the same launch shares this value, which is what lets you total the launch up later.
utm_content
WHICH ONE of several it was video-a Which specific ad, email send or partner link this exact click came from. Without it, everything a source runs collapses into one row and you can never tell the winner from the loser.
utm_term
WHAT THEY SEARCHED empty here The keyword that triggered a paid search ad. Nobody searched for anything to see an Instagram ad, so this field stays empty. It is the only one of the five that genuinely does not apply most of the time.

Which field changes, and which one does not

Here is a different brand, so nothing below gives away your own plan. Northvale Coffee is running one launch, Spring Roast, across three completely different kinds of traffic. Read the table across each row rather than down each column.

Field A Google search ad Their weekly newsletter A podcast sponsor read
utm_source google northvale-weekly brewcast
utm_medium cpc email audio
utm_campaign spring-roast spring-roast spring-roast
utm_content bag-15oz mar-04-send mid-roll
utm_term cold-brew — —

One row is identical all the way across, and it is the whole reason campaign exists. Source and medium change because the traffic genuinely is different. Content changes because each link is a different object. Campaign stays put because all three were bought for the same reason — so at the end of the month there is one row that totals the entire launch.

The two pairs everyone mixes up

utm_source vs utm_medium

instagram is WHO. cpc is HOW. The most common mistake in this whole lab is writing medium=instagram, which names the platform twice and never once says that anyone paid for the click. Analytics then files your ad spend under free traffic. That is exactly what example 3 above does.

Quick test: if the answer is a company you could write a cheque to, it belongs in source. If it describes the kind of link, it belongs in medium.

utm_campaign vs utm_content

Campaign is the whole launch. Content is one link inside it. If you put summer-glow in content you have learned nothing, because every single link would say the same thing. Content only earns its place when it is different for each ad, each send, each partner.

Quick test: campaign should be identical on every link in the launch. Content should be different on every one.

Words the dashboard will use back at you

Session source
Where the visit came from, as the platform recorded it. Taken from utm_source if the link was tagged, and guessed from the referring website if it was not.
Session medium
The kind of traffic, as recorded. Taken from utm_medium, or guessed from the referrer. This is the field that decides the channel group.
Referrer
The website the browser says it came from. Email apps and messaging apps send no referrer at all, which is why untagged email has nothing to fall back on.
Default channel group
The bucket the platform files the visit into (Paid Search, Email, Display and so on). It is calculated from source and medium together, not chosen by you.
Direct
The bucket for visits with no tags and no referrer. It reads as "someone typed our address in", but in practice it is where untraceable traffic accumulates.
Unassigned
The bucket for visits the platform could not fit into any channel, usually because the medium was a word it does not recognize.