No convention
- "Facebook", "facebook", "fb" and "meta" logged as four sources
- Campaign names made up link by link
- Reports need manual cleanup every month
Written convention
- Short fixed list of mediums and sources
- One campaign format, such as 2026-10_launch
- Lowercase letters and hyphens only
- utm_content separates links inside one campaign
Most messy marketing reports are not caused by bad tracking code. They are caused by five people tagging links five different ways. “Facebook”, “facebook”, “fb” and “meta” end up as four separate sources, and nobody can say which channel actually worked. A one-page naming convention fixes this before it starts.
Why it works
Analytics tools group traffic by the exact text in each tag. They cannot tell that two spellings mean the same channel, so every variant becomes its own row and each real channel’s total is split across them. Medium matters most, because default channel groupings are built from it.
A shared rule takes the guesswork away from whoever builds the link. With the allowed values written down, tagging becomes a lookup instead of a judgement call.
How to do it
- Write down the allowed mediums. Keep this list short and tied to channel type, not platform:
cpc,paid-social,social,email,referral,affiliate. Your analytics tool groups traffic into channels using medium, so this is the field that matters most. - Write down the allowed sources. These are the specific places clicks come from:
google,linkedin,newsletter,partner-name. One spelling each. - Pick one format for campaign names. For example
2026-10_product-launchorq4_webinar-growth. Date first sorts nicely; whatever you pick, make it predictable. - Use lowercase and hyphens only. Analytics tools treat values as case-sensitive, and spaces turn into
%20in URLs. - Use
utm_contentto separate links inside one campaign. Two buttons in one email, or two ad creatives, get different content values, not different campaigns. - Put the rules where people tag links. A pinned doc, a shared sheet, or a builder that cleans values automatically. Rules nobody sees are rules nobody follows.
Example
A small SaaS team runs a launch across LinkedIn ads, a newsletter and a partner’s blog. With a convention in place, the three links share utm_campaign=2026-10_launch and differ only in source and medium: linkedin / paid-social, newsletter / email, partner-blog / referral. One campaign filter in analytics now shows the whole launch, broken down cleanly by channel.
Metrics to track
- Number of distinct source and medium values each month. It should shrink and then hold steady.
- Share of sessions in unassigned or catch-all channels, which should fall as mediums line up with your channel rules.
- Share of campaign links built with the shared builder or sheet.
- Time spent cleaning data before monthly reporting.
When it backfires
- Tagging internal links. Adding UTMs to links between pages on your own site resets the visit’s source and wrecks attribution. Only tag links that point to your site from elsewhere.
- Over-engineering. A convention with fifteen fields and a lookup table will be ignored. Start with mediums, sources and a campaign format.
- No owner. Someone needs to spot-check new values monthly and fold strays back into the list.
Questions people ask
What is a UTM naming convention?
A short written rule for what goes into utm_source, utm_medium and utm_campaign, covering the allowed values, the casing and the separators, so everyone on the team tags links the same way.
Can I fix inconsistent UTMs after the fact?
Partly. Most analytics tools let you build channel groupings or filters that merge variants, but it is manual, easy to miss, and does not fix historical exports. Preventing it is far cheaper.
Who should own the UTM convention?
One person, usually whoever owns the marketing reports. They keep the list of allowed values, approve new ones and check each month for strays.