3 min read

The UTM naming convention I actually use

Tagging links only works if you tag them the same way every time. Here is the exact convention I use, the mistakes that quietly break your data, and a template you can steal.

Tagging your links is worthless if you tag them differently every time.

I learned this the slow way. I’d tag a link twitter one week, Twitter the next, x the week after, and my analytics would split one channel into three, none of which added up to anything. The tags were there. They were just useless, because I had no convention.

So here is the exact convention I use now for linkutm and everything else. Steal it. The specific words matter less than picking a rule and never breaking it.

The three tags that matter

You only really need three UTM parameters. Ignore the other two until you have a reason.

  • utm_source: where the link lives. The specific place. twitter, newsletter, reddit, producthunt.
  • utm_medium: what type of channel it is. The category. social, email, community, referral.
  • utm_campaign: why you’re sharing it. The reason or moment. launch, v2-announce, weekly-tips.

Source is the room. Medium is the kind of room. Campaign is why you walked in. Get those three right and you can answer almost any question your analytics will ever be asked.

The rules that keep it clean

The convention is less about which words you pick and more about these five rules, applied without exception:

  1. Everything lowercase. Always. Twitter and twitter are two different channels to a computer. Pick lowercase and never type a capital letter in a UTM again. This one rule alone fixes half of all broken UTM data.
  2. Hyphens, never spaces or underscores. weekly-tips, not weekly tips (spaces get mangled into %20) and not weekly_tips (fine, but pick one separator and stick to it). I use hyphens everywhere.
  3. One word per concept. newsletter, not my-email-newsletter. Short, obvious, boring. You want to be able to guess the tag six months from now without looking it up.
  4. Source is specific, medium is general. This is the one people get backwards. twitter is a source; social is its medium. If you find yourself writing the same word in both, one of them is wrong.
  5. Write the convention down. A tag you can’t reproduce from memory isn’t a convention, it’s a coin flip. Keep the list somewhere you’ll actually see it.

A template you can steal

Here’s the shape I use. Base URL, then the three tags:

https://yoursite.com/?utm_source=SOURCE&utm_medium=MEDIUM&utm_campaign=CAMPAIGN

And here’s how real links come out of it:

Shared in my newsletter, announcing v2:
  ?utm_source=newsletter&utm_medium=email&utm_campaign=v2-announce

Posted on X, same announcement:
  ?utm_source=twitter&utm_medium=social&utm_campaign=v2-announce

Dropped in a founder Slack, same announcement:
  ?utm_source=founder-slack&utm_medium=community&utm_campaign=v2-announce

Notice the campaign stays identical across all three. That’s the point. Same campaign, different source and medium, and now you can see that v2-announce sent 200 people total, that 140 came from the newsletter, and that the Slack drop punched above its weight. Same reason, three channels, one clean comparison.

The mistakes that quietly break everything

These are the ones I’ve personally made, ranked by how much data they cost me:

  • Inconsistent casing. Covered above, but it’s worth saying twice because it’s the most common and the most invisible. Your dashboard won’t warn you. It’ll just silently show Reddit and reddit as two channels.
  • Putting the campaign in the source. utm_source=launch-tweet feels natural and ruins everything. Now “launch” is scattered across a dozen sources and you can never total it up. Source is the place. The reason goes in campaign.
  • Tagging inconsistently across a campaign. If three of your five launch links have utm_campaign=launch and two have nothing, your launch total is a lie. Tag all of them or none of them.
  • Forgetting to tag at all. The big one. Every untagged link arrives as “direct” traffic, the analytics equivalent of a shrug. My rule stands: no link leaves the house without a tag.

The whole point

A convention isn’t about being tidy. It’s about being able to ask a question and get a real answer six months from now, when you’ve forgotten every link you ever shared.

Traffic went up. From where? With a convention, that’s a lookup. Without one, it’s a guess. The words you choose barely matter. Choosing the same words every single time is the entire game.


Post three of building in public. If your UTM tags are a mess and you want a second pair of eyes, email me. I’ve made every mistake on this list at least once.

- Smit

Thanks for reading. If this resonated, tell me about it. Replies are the whole point of writing in public.