Analytics
UTM Parameters Explained (With a Naming Convention)
UTM parameters are simple. Keeping them consistent across a team for more than two months is the hard part.
UTM parameters are tags you append to a URL so your analytics knows where a visitor came from. They are just query string values — nothing clever happens, the analytics tool simply reads them and files the session accordingly.
The five parameters
- utm_source — where the traffic came from: newsletter, instagram, partner-name.
- utm_medium — the type of channel: email, social, cpc, qr, referral.
- utm_campaign — which campaign it belongs to: spring-launch, black-friday-2026.
- utm_content — which specific creative or placement: hero-button, footer-link, poster-a.
- utm_term — the paid keyword. Rarely used outside search advertising.
In practice, source, medium, and campaign do almost all the work. Content is worth adding when you are testing two versions of the same thing. Term you can generally ignore unless you are running paid search.
What a tagged URL looks like
You append them with a question mark and join them with ampersands: yoursite.com/landing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch. That is the whole mechanism.
It is also immediately obvious why nobody wants to share these directly. They are long, ugly, and look faintly suspicious in a social post — which is where shortening comes in.
The part that actually goes wrong
UTM parameters are case-sensitive and string-matched. Email, email, and E-Mail are three different mediums as far as your analytics is concerned, and they will appear as three separate rows in your report forever.
This is how UTM data degrades. Not through misunderstanding the parameters, but through four people on a team each inventing their own capitalisation and spelling over six months, until the campaign report is a scatter of near-duplicates nobody trusts.
Pick a convention, write it down somewhere the whole team can see, and apply it without exception. That single document is worth more than any tagging tool.
A convention that holds up
- Always lowercase. No exceptions, ever.
- Hyphens between words, never spaces or underscores. Spaces become %20 and make URLs unreadable.
- Keep utm_medium to a short fixed list — email, social, cpc, qr, referral, affiliate — and do not add to it casually.
- utm_source is the specific platform or publication, not the category.
- Include the year in campaign names for anything recurring: black-friday-2026.
- Never put personal data in a UTM. They are visible in the URL and stored in analytics.
Source versus medium
This is the distinction people get wrong most often. Medium is the category of channel; source is the specific place within it.
- Instagram post: source=instagram, medium=social.
- Weekly newsletter: source=newsletter, medium=email.
- Google Ads: source=google, medium=cpc.
- QR code on a poster: source=poster-oxford-st, medium=qr.
If you keep medium to a small controlled vocabulary and let source carry the specificity, your reports stay groupable. Invert it and you end up with a medium column containing forty values.
Combining UTMs with short links
Tag the destination URL with UTMs, then shorten the tagged URL. This gets you both layers of measurement from one share.
- 1Build the full URL with UTM parameters attached.
- 2Shorten it, with a readable custom alias.
- 3Share the short link.
- 4The shortener records the click; the UTMs attribute the session in your site analytics.
This is particularly useful for print and QR codes, where the raw tagged URL would be completely impractical to display.
Things worth knowing
- Never put UTM parameters on internal links between pages of your own site. It restarts the session attribution and destroys the original source data.
- UTMs are public. Anyone can read them in the address bar, and competitors can read them off your ads.
- Some platforms strip or append their own parameters. Check what actually arrives rather than assuming.
- If a campaign shows no UTM data at all, check whether the link was shared somewhere that rewrites URLs.
A minimal starting point
If this feels like a lot, start with three parameters — source, medium, campaign — all lowercase and hyphenated, with a fixed list of five mediums. That alone will put you ahead of most teams, and you can add utm_content later when you start running genuine tests.