UTM Parameters: A Naming Convention You Will Stick To

The five UTM parameters explained, the lowercase rule that saves GA4 reports, and the naming system I adopted after wrecking six months of data.

Six months of data I can never get back

When I finally opened my GA4 traffic acquisition report with fresh eyes, my newsletter appeared as three different sources: Email, email, and E-Mail. Same newsletter, three rows, because past me tagged links however the mood struck that day. Six months of campaign data, permanently split into fragments that can never be merged back together. GA4 does not retroactively clean your naming sins.

The fix was not a tool or a plugin. It was a boring naming convention written down in one shared document, plus the discipline to never freestyle a tag again. This post is the five parameters in plain English, the convention I settled on, and the mistakes that quietly poison attribution for months before anyone notices.

The five parameters, in plain English

UTM parameters are just labels bolted onto a URL that tell your analytics where a click came from. Five of them cover almost every situation, and GA4's documentation adds a couple of newer ones like utm_id and utm_source_platform that most small sites can safely ignore for now.

The mental model that finally made these stick for me: source is the place, medium is the kind of place, campaign is the reason. Everything else is optional detail.

  • utm_source: the specific site or platform sending the click, like google, newsletter, linkedin, partner-site
  • utm_medium: the channel type, like cpc, email, social, qr, referral
  • utm_campaign: the specific push, like 2026-08-summer-sale
  • utm_term: the paid search keyword, mostly relevant if you run ads and do not use auto-tagging
  • utm_content: which specific link or creative, like header-button vs footer-link, useful for testing two links in one email

Why is lowercase the whole ballgame in GA4?

GA4 treats parameter values as case-sensitive. Email and email are two different sources as far as reporting is concerned, forever, and there is no setting to merge them after the fact. This one property of the system is responsible for most of the messy acquisition reports I have ever been asked to look at, including my own.

So the first and least negotiable rule of any convention: everything is lowercase, always, with hyphens between words instead of spaces. A space in a URL becomes %20, which is both ugly and a fresh opportunity for inconsistency. One character of deviation creates a new row in your reports, and rows are permanent.

The naming table I actually use

Conventions fail when they live in someone's head. Mine is a table in a shared doc that took ten minutes to write, and every tagged link on the site has come from it since. The structure matters less than the fact that it is written down and boring.

The campaign format is the piece I would defend in an argument: yyyy-mm plus a short topic, like 2026-08-back-to-school. It sorts chronologically in every report, it tells you at a glance when a campaign ran, and it prevents the graveyard of campaigns called final, final2, and new-final that I have absolutely been guilty of creating.

  • utm_source: a fixed list of real places: google, newsletter, linkedin, x, facebook, partner name
  • utm_medium: a fixed list of five or six types: email, cpc, social, qr, referral, and nothing invented on the fly
  • utm_campaign: yyyy-mm-topic, so 2026-08-summer-sale, never just sale
  • utm_content: position-variant, so hero-button, footer-link, image-a
  • utm_term: paid keywords only, left empty everywhere else

Mistakes that quietly ruin attribution

The tagging errors that hurt most are the ones that produce data that looks plausible. A report full of (not set) announces itself. A report where half your email traffic is attributed to the wrong campaign just sits there confidently misleading you.

The worst offender by a distance: putting UTM parameters on internal links. When someone lands from a Google ad and then clicks an internal banner tagged utm_source=homepage, GA4 starts a new attribution story and the ad silently loses credit for whatever happens next. UTMs are for links pointing at your site from somewhere else. Never for navigation within it.

  • Tagging internal links, which overwrites the real traffic source mid-session
  • Tagging a campaign but skipping source and medium, which scatters clicks into unassigned
  • Free-styling creative names like blast-v2-B that nobody can decode in the January reports
  • Forgetting print and QR entirely, so a whole channel reports as direct traffic
  • Pasting full UTM links into public posts where the ugly URL erodes clicks, instead of using a short link

The places people forget to tag

Anything offline or app-based strips referrer data, which means untagged clicks from those channels land in your reports as direct, the analytics word for a shrug. QR codes are the big one: a code on packaging or a flyer with a bare URL is a channel you are choosing not to measure. I generate the tagged link first, then feed it into the QR code generator, and suddenly print campaigns show up in GA4 like any other source.

Email signatures are a smaller but real case. Every signature link in outgoing mail can carry source newsletter or source signature, medium email, and over a year that adds up to a channel worth knowing about. I went into more depth on that in the professional email signature guide. PDFs, slide decks, and podcast show notes all follow the same logic: no referrer, so tag it or lose it.

My five-minute setup

Every tagged link I create now goes through the UTM link builder, with the naming table open beside it. The builder enforces the structure so I cannot lazily type a capital letter, and each finished link gets a row in a shared log: date, destination, full URL, where it was used. The log has saved me twice when a mystery traffic spike turned out to be an old QR code on a conference handout.

One last habit: before I tag a link, I make sure the destination page is worth landing on, with a real title and preview via the meta tag generator, because a tagged link that gets shared onward carries the page's social card with it. Then I check GA4 the next day to confirm the source and medium arrived clean. Thirty seconds of verification beats another six months of Email, email, and E-Mail.

Questions people ask

Are UTM parameters case-sensitive in GA4?

Yes. Email, email, and EMAIL become three separate rows in your reports, and GA4 cannot merge them afterward. Lowercase everything as a hard rule.

Should I use UTM parameters on internal links?

No, never. Internal UTMs overwrite the visitor's real traffic source mid-session, so the ad or email that actually brought them loses attribution. UTMs belong only on links pointing at your site from outside it.

What is the difference between utm_source and utm_medium?

Source is the specific place the click came from, like newsletter or google. Medium is the type of channel, like email or cpc. My newsletter links use source newsletter with medium email.

Do UTM parameters affect SEO?

Not meaningfully, as long as you never put them on internal links and your pages declare a canonical URL, which prevents tagged versions being indexed as duplicates.

How do I track QR code scans in GA4?

Build the URL with source and a medium of qr first, then generate the code from that tagged link. Scans then arrive in GA4 as a measurable channel instead of vanishing into direct traffic.

Read next

All articles