Tags: analytics commerce concept
UTM Governance
Date: 2026-08-16
Campaign parameters are free-text fields typed by hand under deadline. Without a convention you get
FBandfb_paidas four channels, and the taxonomy underneath can’t save you.
What it is
UTM parameters are query-string tags identifying where a visit came from, read by analytics tools and mapped into channels.
?utm_source=klaviyo
&utm_medium=email
&utm_campaign=2026-08_summer-sale
&utm_content=hero-banner
&utm_term=wool-socks
| Parameter | Holds | Convention |
|---|---|---|
source | The specific origin | google, klaviyo, meta |
medium | The type | cpc, email, paid-social, affiliate |
campaign | The initiative | 2026-08_summer-sale |
content | Which creative or placement | hero-banner, footer-link |
term | Keyword, for manual paid search | wool-socks |
source and medium drive the Channel Taxonomy; the rest support analysis within a channel.
Why it degrades
Not carelessness — structure. Parameters are typed by different people, in different tools, under time pressure, with no validation and no feedback loop. Nothing fails when they’re wrong; a new row simply appears in a report weeks later.
The predictable failures:
- Case.
Facebookandfacebookare different values in most tools - Synonyms.
email,e-mail,newsletter,klaviyofor the same medium - Campaign names with no structure, so nothing can be grouped by month or type
- Internal links tagged with UTMs — the worst one, see below
- Missing parameters, so paid traffic lands in Organic or Direct
- Spaces and punctuation, which encode inconsistently and split one campaign into several
Internal UTMs overwrite the real source
Worth stating on its own because it’s common, silent and destructive.
Tagging a link within your own site with UTM parameters starts a new campaign attribution mid-visit. The original source — the paid click that brought them — is overwritten by your own homepage banner.
paid search click → utm_source=google, medium=cpc
clicks internal banner tagged utm_source=homepage
→ source becomes "homepage"
purchase → credited to homepage, not paid search
Never put UTM parameters on internal links. For internal promotion tracking use a separate parameter your taxonomy ignores, or an event. This single rule prevents more attribution corruption than any model choice.
The convention
Fix it in writing, on one page, and make it available where people build links:
lowercase always, no spaces
hyphens within words, underscores between parts
source the platform google, meta, klaviyo, awin
medium the type — closed list cpc, paid-social, email, affiliate,
display, referral
campaign YYYY-MM_descriptor 2026-08_summer-sale
content placement descriptor hero-banner, email-footer
The closed list on medium does most of the work, because medium is what the channel taxonomy keys on. Sources can proliferate harmlessly; mediums cannot.
Making it stick
Convention alone fails. What works:
- A link builder — a spreadsheet or small tool that produces the URL from dropdowns. Removes typing, which removes the failure mode
- Auto-tagging where the platform offers it. Google Ads and others append their own parameter, which is more reliable than manual UTMs. Don’t do both — they conflict
- A weekly unclassified report. New source/medium combinations surfaced immediately, while the person who made the link still remembers
- Strip parameters from the CDN cache key, or every campaign variant becomes a separate cached object and hit rate collapses — CDN Caching
- Canonicalise them away so they never create indexable URLs — Canonicalisation
The tension worth naming
Governance is overhead borne by marketing, and the benefit lands on whoever reads the reports weeks later. That asymmetry is why conventions decay, and it’s the same shape as Tracking Plans decay.
Which means the durable fix isn’t a document — it’s the link builder. Make the correct URL the easiest one to produce, and the convention holds without anyone having to remember it.