A UTM parameter is a label you staple onto a link so that analytics can tell where the visitor came from. There are five of them, they are simple, and they are broken in almost every account we have ever looked at — not by anything complicated, but by capital letters.
The five
utm_source — where the traffic came from. The specific property: facebook, google, newsletter, partner-site.
utm_medium — the kind of traffic. cpc, email, social, referral, affiliate. This is the one analytics groups by, so it is the one worth being strictest about.
utm_campaign — the campaign the link belongs to. spring-sale, webinar-may, brand-always-on.
utm_content — which variant of the link it was. hero-button, footer-link, video-ad-b. Use it to separate two links pointing at the same page.
utm_term — the paid keyword. Largely historical for paid search, where the platform integration handles it; occasionally useful manually.
Source, medium and campaign are the working set. Content earns its place the moment you have two links in the same email.
The mistakes
Capital letters. UTM values are case-sensitive. "Facebook" and "facebook" are two different sources, and your Facebook traffic is now split across two rows that never get added together. Lowercase everything, always.
Spaces. A space becomes %20 and your campaign appears twice with an invisible difference. Use hyphens.
Inventing a medium. "facebook-ads" as a medium breaks every default channel grouping in analytics, which expects cpc, email, social, referral, organic and a few others. Put the specific thing in source, keep medium in the small standard vocabulary.
Tagging internal links. A UTM on a link between two pages of your own site restarts the session attribution and hands the credit for the sale to your own footer. Never tag internal navigation.
Tagging where the platform already does. If auto-tagging is on for a paid channel, adding your own parameters can conflict with it. Know which of the two is the source of truth.
Leaving them on canonical URLs. Tagged URLs getting indexed creates duplicate pages in search. This is a search problem rather than an analytics one, and it is worth a check.
A convention that holds up
Write it down once, and make the rules mechanical so that nobody has to have taste at 6pm:
- lowercase everything, hyphens between words
- source = the property, medium = one of the standard set, campaign = a name you would recognise in six months
- put the date in the campaign name when the campaign is seasonal: spring-sale-2027
- content = the placement, not the creative concept
- one spreadsheet or one builder, so two people do not invent two spellings
The test of a convention is not elegance. It is whether a report six months later groups correctly without anybody remembering anything.
Check before you send
The UTM builder and tag checker assembles a link and warns about the casing, spacing and non-standard medium mistakes above before the link goes anywhere. Browser-only, no account.
Fixing tags after a campaign has run is not possible — the traffic is already recorded under whatever you sent. This is one of the rare marketing problems that is entirely preventable in the thirty seconds before you hit publish.