Marketing · 9 min read · Updated July 25, 2026
UTM Naming Conventions: a Practical Style Guide for Clean Analytics
UTM parameters are simple; keeping them consistent is not. Analytics tools treat Facebook, facebook, and fb as three different sources, so six months of casual tagging turns a clean report into an archaeology project. The cure is a naming convention: a small set of rules and a fixed vocabulary that everyone who builds links actually follows.
This guide gives you a convention you can adopt as-is: formatting rules, a controlled vocabulary for each parameter, worked examples per channel, and the enforcement habits that make the standard stick. If you need a refresher on what the five parameters mean, start with What are UTM parameters and come back.
The three formatting rules that prevent 90% of the mess
- Lowercase everything, always. UTM values are case-sensitive in every major analytics tool.
Emailandemailbecome two rows in your reports. Making lowercase non-negotiable removes the single most common source of split data. - Use hyphens between words, never spaces. Spaces become
%20in URLs and read as noise in reports. Pick one delimiter and stay with it; hyphens are the safest choice because they survive copy-paste, are easy to read, and match how slugs are written everywhere else. Do not mix hyphens and underscores, that is just the casing problem in a different costume. - ASCII only, keep it short. Accented characters and symbols get percent-encoded into unreadable strings. Stick to a-z, 0-9, and hyphens, and keep each value terse enough to read in a narrow report column.
A controlled vocabulary per parameter
Formatting rules are not enough: you also need to fix the words themselves. The failure mode is synonyms, one teammate writes facebook, another fb, another meta. The fix is a dictionary: an agreed list of allowed values for each parameter, kept somewhere visible, extended deliberately rather than ad hoc.
utm_source: where the click physically came from
The platform or site the visitor was on when they clicked. Use the product name, not the company or the vibe: google, facebook, instagram, linkedin, x, tiktok, youtube, newsletter, partner-acme. Decide the ambiguous ones once (is it x or twitter?) and write the decision down.
utm_medium: the kind of channel
This is the parameter analytics tools use to group traffic into channels, so nonstandard values here do real damage. Keep the list tiny: cpc for paid clicks, email, social for organic social, paid-social, referral, display, affiliate, qr or offline for print. If a value does not describe a class of channel, it does not belong in medium.
utm_campaign: which push this is
Name the initiative, not the channel (the channel is already in source and medium). A pattern that scales well is <initiative>-<period>: summer-sale-2026q3, feature-launch-bio-pages, webinar-jul-2026. Date-stamping campaign names keeps recurring pushes distinct without inventing new words.
utm_content and utm_term: the optional two
Use utm_content to split variants inside one campaign: hero-cta vs footer-link, poster-store vs flyer, ad A vs ad B. Use utm_term for paid search keywords, and mostly nowhere else. Optional means optional: leave them off when there is nothing to distinguish, an empty parameter is clutter, not rigor.
| Channel | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Google Ads | cpc | summer-sale-2026q3 | headline-a | |
| Newsletter | newsletter | summer-sale-2026q3 | top-banner | |
| Organic Instagram | social | summer-sale-2026q3 | reel-teaser | |
| Paid LinkedIn | paid-social | webinar-jul-2026 | ad-b | |
| Flyer QR code | qr | offline | summer-sale-2026q3 | flyer |
| Partner blog post | partner-acme | referral | feature-launch-bio-pages |
Mistakes that quietly ruin reports
- Tagging internal links. UTMs on links between your own pages overwrite the visitor’s real attribution mid-session. Tag inbound links from other places only, never navigation on your own site.
- Channel words in the wrong slot.
utm_source=email-campaignmixes three concepts into one value. Source is the place, medium is the kind, campaign is the push; each fact goes in exactly one parameter. - Synonym drift.
fb,facebook, andmetain the same quarter. The dictionary exists precisely to kill these; when in doubt, look it up rather than improvise. - Redundant repetition.
utm_campaign=facebook-summer-facebookstyle values happen when people encode the channel into the campaign name. Trust the parameters to do their jobs. - Naked long URLs in public. A 140-character tagged URL looks like tracking (it is) and invites manual retyping that drops the parameters. Wrap tagged URLs in a short link so the mess stays hidden and the tags survive intact.
Make the convention self-enforcing
A convention that lives in a doc nobody opens will not survive its first intern. It sticks when the easy path and the correct path are the same path:
- Build every tagged link with a UTM builder instead of hand-typing, so casing and encoding are always right.
- Save the dictionary as reusable templates. ReSlug supports UTM templates on links, so the approved source/medium/campaign sets are one click and typos stop being possible; the Chrome extension applies the same templates when shortening the current tab.
- Shorten the final tagged URL. The short link keeps the ugly query string out of sight, and its own click analytics cross-check what your web analytics report for the same campaign.
- Audit monthly: skim the source and medium values that appeared in the last 30 days; anything outside the dictionary gets fixed at the origin or added to it deliberately. To clean a URL someone already mangled, a tracking-parameter stripper resets it to the bare destination for retagging.
Frequently asked questions
Should UTM parameters be lowercase?
Yes, always. Analytics tools treat UTM values as case-sensitive strings, so Summer-Sale and summer-sale report as two different campaigns. An all-lowercase rule is the cheapest insurance against split data, because it removes judgment from the most common inconsistency.
Should I use hyphens or underscores in UTM values?
Either works technically; consistency is what matters. Hyphens are the better default because they are the convention for URL slugs generally, they read cleanly in reports, and mixing the two delimiters is a common source of duplicate values. Never use spaces, which become %20 in the URL.
What is the difference between utm_source and utm_medium?
Source is the specific place the click happened, like google, newsletter, or instagram. Medium is the class of channel, like cpc, email, or social. Reports group by medium to show channel performance and drill into source for the specifics, which only works when each fact sits in its own parameter.
Should I put UTM parameters on internal links?
No. Clicking an internal link tagged with UTMs starts a new attributed session in most analytics tools, overwriting how the visitor originally arrived. Use UTMs only on inbound links from external places: ads, emails, social posts, partner sites, QR codes.
How do I keep a UTM convention consistent across a team?
Maintain a shared dictionary of allowed values, build links with a UTM builder rather than by hand, and save the approved combinations as templates so the correct tags are the default. A monthly skim of the values that actually appeared in reports catches drift while it is still cheap to fix.
Related tools
Keep reading
What Are UTM Parameters? A Practical Guide for Marketers
Learn what UTM parameters are, how utm_source, utm_medium, and utm_campaign work, naming rules that keep reports clean, and when not to tag a link.
QR Codes · 8 min readHow to Track QR Code Scans (Counts, Locations, and Devices)
QR codes cannot report scans on their own. Learn how a short link inside the code gives you scan counts, locations, and devices, plus what to log per campaign.
Branding · 8 min readHow to Set Up a Custom Domain for Your Short Links
Set up branded short links on your own domain: choosing the subdomain, the CNAME record, verification and auto-SSL, plus why branded links earn more clicks.