How to set a UTM naming convention your team will actually follow
A practical UTM governance guide: the parameter rules, the channel mapping table and the enforcement tricks that keep campaign data clean.
Every messy attribution report traces back to the same crime scene: utm_source=Facebook, utm_source=facebook, utm_source=fb and utm_source=meta, all in the same quarter. Four spellings, four rows, one channel. Here's the convention we install at clients — and more importantly, how to make it stick.
The five rules
- Lowercase everything, always. GA4 is case-sensitive; humans aren't.
utm_source= the platform (google,meta,linkedin,mailchimp) — never the campaign type.utm_medium= the mechanism, from a closed list:cpc,paid_social,email,organic_social,affiliate,referral,qr.utm_campaign= structured slug:{market}_{objective}_{name}_{yyyymm}→uk_leadgen_spring-audit_202604.- Underscores within values, hyphens within words. Pick separators once, write them down, never revisit.
Why the closed list matters
GA4's default channel grouping assigns sessions to channels based on source/medium pairs. Invent a creative new medium and your traffic lands in "Unassigned" — the naughty step of analytics. The closed list isn't bureaucracy; it's what keeps your channel report meaning anything.
Enforcement beats documentation
Conventions documented in a PDF die in a fortnight. What survives:
- A shared link builder (spreadsheet or internal tool) with dropdowns instead of free text — people can't misspell a dropdown.
- Validation in the warehouse: a scheduled query flags any new source/medium pair not on the approved list and posts it to Slack, with the offending URL.
- Quarterly amnesty: review the flagged strays, map or kill them, update the list.
Migrating the mess you already have
Don't rewrite history in GA4 — you can't. Instead, build a mapping table in your warehouse (raw_source, raw_medium → clean_channel) and apply it in your transformation layer. Your dashboards read the clean layer; the archaeological record stays intact underneath for auditing.
Thirty minutes of setup, one dropdown sheet, one watchdog query. That's the entire difference between "our channel data is a joke" and "our channel data settles arguments."