Your first client is free.

What are UTM best practices?

Agree one spelling for every value, keep everything lowercase with a single separator, write the approved list down, never tag internal links, and generate tags from the list rather than typing them. Almost every broken UTM report traces back to one of those five.

The rules, and why each one exists

UTM best practices and their reasoning
RuleWhy it matters
Lowercase every valueValues are recorded as typed and tools differ on whether they normalise case. Lowercase removes the question rather than betting on the platform.
One separator, everywherePick _ or - and use it in every value and every parameter. Two separators in one taxonomy is two taxonomies.
Define the approved source valuesA short closed list per platform. Anything outside it is a decision, not a typo.
Define the approved medium valuesMedium drives channel grouping, so an unapproved value quietly moves spend into the wrong channel.
Make campaign names descriptive and predictableThe campaign value should be readable months later without opening the ad account to decode it.
Match the campaign value to the ad accountIf utm_campaign equals the campaign name in the platform, reconciling spend against sessions stops being manual.
Never tag internal linksA tagged internal link starts a new session and overwrites the original source, so you reattribute your own paid traffic to yourself.
Keep personal and sensitive data outUTM values end up in analytics, in referrer headers and in shared reports. An email address or a customer ID does not belong in any of them.
Document the convention where people build linksA convention nobody can find at the moment they need it is not a convention.
Generate rather than typeManual typing is where fragmentation comes from. Every hand-typed tag is a chance to invent a new value.
Test the finished URLClick it. Confirm it loads the right page, the parameters survived, and nothing was double-encoded.

Fragmentation is the real failure

It is tempting to frame UTM hygiene as getting the values right. Mostly there is no right. facebook is not more correct than meta, and paid-social is not less valid than paid_social. Analytics accepts all of them.

What analytics will not do is treat them as the same thing. It groups by exact string, so four spellings of one platform are four rows, four channel assignments and four partial totals. The cost is not an incorrect number in one place. It is that no number anywhere is complete, and the person reading the dashboard has no way to tell.

Fragmented

  • utm_source=Facebook
  • utm_source=facebook
  • utm_source=FB
  • utm_source=Meta

Consistent

  • utm_source=meta

Four marketers, one platform, four rows. None of them did anything invalid, which is precisely why nobody catches it until quarter end.

Questions that come up

Should the convention be enforced or just documented?

Documented is the floor. Enforced is what actually works, because the failure mode is not disagreement, it is someone building a link in a hurry without checking the doc. If tags come out of a tool that only offers approved values, the question stops arising.

What about campaigns that predate the convention?

Leave them. Rewriting historical values is not possible for traffic already collected, and changing tags on live links mid-campaign splits that campaign in two. Start clean on a date boundary and note it where people read the reports.

How long should a campaign value be?

Long enough to identify the campaign, short enough to scan in a report column. Structured values built from a few short fields beat sentences, because they stay sortable and comparable.

Do UTMs work without Google Analytics?

Yes. They are just query parameters, and any analytics tool reading the URL can use them. The parameter names are a Google Analytics convention, which is why most tools chose to understand them.

Where the convention should live

A spreadsheet is the usual answer and it half works. It records the decision but does nothing at the moment a link is built, which is the moment that matters. The closer the list sits to the act of generating a tag, the less it depends on anybody remembering.

The UTM naming convention template is a starting taxonomy, and campaign naming conventions covers the campaign value itself in more depth.

A convention that generates, not one that reminds

UTMConfig stores the approved values for your workspace and builds every tracking URL from them. Different marketers stop inventing different spellings because there is nothing to invent.

Create your workspaceFree for one client. No card required.