A UTM Naming Convention That Survives Contact With a Marketing Team

Most UTM naming conventions look great in a doc and fall apart in practice. Here is one built to hold up when real people use it under real deadlines.

Every UTM naming convention works in the document where you write it down. The test is whether it survives three months of real people building real links under real deadlines. Most do not, because they are built for elegance instead of for the way humans actually behave when they are busy.

Here is a convention built for survival. It is boring on purpose. Boring is what holds up.

The one rule that matters most

Lowercase everything. Always.

This is not an aesthetic preference. GA4 is case-sensitive, so Facebook and facebook are two different sources to it, and a campaign tagged inconsistently gets split across multiple rows in your reports. Lowercase is the safest default because it removes every judgment call. Nobody has to decide whether a proper noun gets capitalized. The answer is always no.

If you take nothing else from this, take that. It prevents the single most common UTM failure on its own.

The five parameters, decided in advance

The trick to a convention that holds is to make as few decisions as possible at link-creation time. You do that by deciding the hard parts now, once, and writing them down.

utm_source: where the traffic comes from. Lock this to a fixed list. google, facebook, linkedin, newsletter, partner-sitename. The rule: if a source is not on the list, you add it to the list deliberately, you do not invent it on the fly.

utm_medium: the channel type, and this is where consistency matters most because GA4 uses medium for its default channel grouping. Pick one word per channel and never vary it. email (never e-mail or newsletter), social, cpc for paid search, display, affiliate. Write these five or six down and treat them as closed.

utm_campaign: the specific initiative. This is the one place you allow some freedom, but give it structure: season-year-topic, like spring-2026-sale or q2-2026-webinar. Dates in the name make old campaigns sortable and obvious.

utm_term: reserve for paid keywords. If you are not running paid search, leave it empty. Do not repurpose it for something clever; future you will not remember what the clever thing was.

utm_content: use this to tell apart two links pointing to the same place in the same campaign. The two buttons in one email, the image versus the text link. header-cta versus footer-cta. Skip it when you do not need it.

A convention that lives in a doc nobody opens is already dead. The reason conventions fail is the gap between where the rules are written and where the links are made. Someone is building a link, cannot remember whether it is email or newsletter, does not want to go dig up the doc, and guesses. The guess is where your data breaks.

Close the gap. The standard values need to live at the point of creation, as the actual options a person picks from, not as a reference they are trusted to consult. When email is a preset they select rather than a word they retype, the convention enforces itself and there is nothing to remember.

A starting template you can copy

utm_source:   google | facebook | linkedin | newsletter | youtube
utm_medium:   cpc | social | email | display | affiliate
utm_campaign: [season]-[year]-[topic]   e.g. spring-2026-launch
utm_term:     [paid keyword, or leave blank]
utm_content:  [variant identifier]      e.g. header-cta, footer-cta

Adapt the source and medium lists to your channels, then freeze them. The freezing is the point. A convention is only as good as your ability to stop people from quietly extending it.

The honest part

No naming convention survives on discipline alone. People are busy and memory is unreliable. The conventions that actually last are the ones where breaking the rule is harder than following it, which means the standard values have to be built into the tool that makes the links.

UTM Forge holds your source and medium values as presets, so the convention you decide on here gets enforced automatically every time someone builds a link. The doc is the plan. The presets are what make the plan stick.