UTM Naming Convention for Teams: Rules That Survive 12 Months
The rules a UTM naming convention actually needs to survive a year of real campaigns — and how to enforce them once more than two people build links.
Your team agreed on a UTM naming convention once, in a doc nobody has opened since. Six months later the same channel shows up as facebook, Facebook, FB, and fb — and GA4 counts them as four different sources. The convention did not fail because it was wrong. It failed because nothing enforced it after the meeting ended.
67% / 58%
Teams that use UTMs vs teams with a documented strategy (SEMrush, 2024)
29%
Attribution-accuracy gain after teams standardize (Cometly, 2026)
10–20%
Of GA4 sessions commonly land in Unassigned
Why UTM naming conventions drift#
Most teams are not missing a convention. 67% of teams use UTMs, but only 58% have a documented strategy (SEMrush, 2024) — and even a documented one drifts the moment it lives in a doc instead of in the tool that builds links. The link gets created in a hurry, the person copies a value from memory, and a new spelling enters the data.
Spreadsheets stop enforcing consistency once more than two people touch them. One marketer types paid-social, another types paid_social, a third writes Paid Social. None of them is wrong on purpose. But GA4 keeps every spelling as a distinct value, your channel groupings fragment, and a slice of traffic slides into Unassigned where no report can credit it.
The UTM parameter naming rules that survive#
A convention that lasts 12 months is short and mechanical. Anyone should be able to apply it without judgment calls. These are the rules worth writing down — and the only ones you really need.
- Lowercase everything. Force every value to lowercase before it is saved. This single rule removes the most common source of duplicate channels.
- One controlled vocabulary per dimension. Decide the allowed values for
utm_sourceandutm_mediumonce, then pick from that list. No free typing. - Underscores, never spaces. Spaces become
%20in the URL and break joins. Use_to separate words insideutm_campaign. - One canonical spelling per concept.
facebookis the source;fb,Facebook, andmetaare banned aliases, not alternatives. - No PII, ever. Never put a name, email, or customer ID in a UTM. The full URL appears in analytics, shared report links, and referrer headers.
- Date campaigns predictably. End
utm_campaignwith_yyyymmso the same promotion in two quarters does not collide. - Document it, then enforce it. The written rule is the floor. Locked dropdowns and auto-lowercase are what make it hold.
| Parameter | Rule | Good example |
|---|---|---|
| utm_source | Lowercase; pick from a fixed platform list | |
| utm_medium | Lowercase; one of cpc, email, social, referral, organic | cpc |
| utm_campaign | Lowercase; underscores; theme_detail_yyyymm | spring_sale_202604 |
| utm_term | Lowercase keyword; underscores; optional | running_shoes |
| utm_content | Lowercase; describes the creative or variant | hero_video_a |
The utm_campaign field is where most of the structure decisions live, because it carries the most meaning. If you want a fuller pattern for theme, audience, and date order, see the utm_campaign naming structure template.
Case is the rule people forget
GA4 is case-sensitive: email, Email, and EMAIL are three different mediums. Auto-lowercasing at the point a link is built fixes this before it reaches your reports. More on why this happens in UTM case sensitivity in GA4.
What a governed link looks like#
Here is the same campaign tagged two ways. The clean version reads the same to a person and to GA4. The drifting version looks fine in the address bar and quietly creates duplicate rows in every report that touches it.
- 1DocumentAllowed values per dimension
- 2LockDropdowns + auto-lowercase
- 3BuildPick, never type, the value
- 4AuditMonthly drift check
A checklist before you call the convention done#
Run this list before you publish the convention to the team. If any item is still "we will be careful," it is not enforced yet — and being careful is exactly what drift defeats.
UTM naming convention readiness
- Every value is forced to lowercase automatically, not by hand.
utm_sourceandutm_mediumare dropdowns locked to an approved list.- Spaces are blocked or auto-converted to underscores in
utm_campaign. - There is exactly one canonical spelling per channel, with aliases banned.
- No field can contain a name, email, or customer ID.
- Campaign names carry a
_yyyymmdate suffix so they stay unique over time. - The convention is written down in one place everyone can find.
- Existing links were audited and cleaned before the new rules went live.
Spreadsheet vs governed link builder#
A spreadsheet is a fine place to write a convention. It is a poor place to enforce one, because it cannot stop a teammate from typing a new value. The difference shows up not in the doc, but in the next quarter of data.
Shared UTM spreadsheet
- Any cell accepts any value — free text
- Case and spelling drift once 3+ people edit it
- No lowercasing, no alias blocking
- Drift is invisible until a report looks wrong
- Cleanup is a manual find-and-replace later
Governed link builder
- Source and medium are dropdowns, not free text
- Auto-lowercases every value on save
- One canonical token per concept, aliases blocked
- Every generated link is audit-logged
- Recurring audit flags drift the week it appears
Most teams do not need to rip out the spreadsheet on day one. The practical path is to audit what is already there, agree on the canonical values, then move link creation into a tool that holds the rules. See moving from a UTM spreadsheet to governed links for the step-by-step, and automated UTM drift detection for catching the spellings that slip in after.
The rule behind all the rules
A naming convention is only as strong as the thing enforcing it. Teams that standardize see a 29% improvement in attribution accuracy (Cometly, 2026) — not because the rules are clever, but because the same value gets written the same way every single time.
What is a good UTM naming convention for teams?
Lowercase every value, give each dimension a controlled vocabulary (a fixed list of approved utm_source and utm_medium values), use underscores instead of spaces, keep PII out of every field, and pick one canonical spelling per concept. Then document it and enforce it with locked dropdowns so no one can type a new variant by accident.
Should UTM parameters be uppercase or lowercase?
Lowercase. GA4 is case-sensitive, so Email, email, and EMAIL are counted as three separate mediums. Standardizing on lowercase and auto-lowercasing at the point a link is built removes one of the most common causes of duplicate channels.
Can I store my UTM naming convention in a spreadsheet?
A UTM naming convention spreadsheet is a good way to write the rules down, but it does not enforce them. Spreadsheets stop enforcing consistency once more than two people touch them, because any cell accepts any value. Use the spreadsheet as the reference, and a governed link builder with locked dropdowns to make the rule actually hold.
How do I standardize UTM names that are already a mess?
Audit your existing values before changing anything. Pull a source/medium export, cluster the variants (fb, Facebook, meta into facebook), and agree on the canonical token for each. Once the canonical list exists, lock it into your link builder so new links match. The cleanup is one-time; the enforcement is what keeps it clean.
What are the basic UTM parameter naming rules?
Five rules cover most of it: lowercase everything, one controlled vocabulary per dimension, underscores instead of spaces, no personal data in any field, and one canonical spelling per channel. Add a _yyyymm date suffix on utm_campaign so repeated promotions stay unique, and you have a convention that survives a year.
See how far your UTMs have already drifted
Paste a GA4 source/medium export and get an A–F UTM health grade in about a minute — with the duplicate spellings clustered for you and a canonical taxonomy you can lock in one click.