Back to blog
GuidesPublished 2026-08-199 min read

UTM Naming Conventions (Free Template)

A UTM naming convention doesn't fail on day one. It fails in month four, when utm_source=Instagram, utm_source=instagram, and utm_source=IG are all sitting in the same report as three different rows, and nobody remembers which one was supposed to be canonical. The fix isn't a smarter analytics tool — it's a written convention simple enough that everyone actually follows it, applied before the first tagged link goes out rather than cleaned up after.

A UTM naming convention template: utm_source and utm_medium always lowercase from a fixed list, utm_campaign structured as date-plus-name for sortability, utm_content used only to distinguish near-identical links, with a worked example showing the same campaign tagged consistently across email, social, and paid search

Why This Needs to Be Written Down, Not Remembered

UTM parameters only work as attribution data if the same source, medium, and campaign name get typed identically every single time. That's an easy rule to follow for one person tagging links for one campaign, and a rule that quietly breaks the moment a second person joins, a new channel gets added, or six months pass and nobody remembers the exact casing used in March. A convention that lives only in someone's head doesn't survive team growth or turnover — it has to be a reference document, not tribal knowledge.

The Template: Copy This Directly

utm_source — lowercase, one canonical name per platform, no abbreviations. facebook, not fb or Facebook. newsletter, not email-newsletter or Newsletter. Keep a literal list of every source you use and its one approved spelling — this is the single highest-impact rule on this whole list, since source is what most reports group by first.

utm_medium — lowercase, chosen from a fixed, closed set rather than freeform text: social, email, cpc, referral, affiliate, display. Closed means closed — if a new channel doesn't fit an existing medium, that's a deliberate decision to add one to the list, not an invitation to improvise a new value per campaign.

utm_campaign — a structured pattern, not a free description: {date-or-quarter}-{campaign-name}, all lowercase, hyphenated. 2026-q3-summer-sale, 2026-08-product-launch. The date prefix isn't decoration — it makes campaigns sort chronologically in any report and prevents two different years' "summer-sale" from colliding into one merged row.

utm_content — used only when two links in the same campaign would otherwise be indistinguishable, describing placement or variant: header-cta, footer-link, story-swipe-up. Skip it entirely when there's only one link per campaign per channel — an unused parameter is better than an inconsistently-applied one.

utm_term — reserved for paid search keywords specifically, lowercase, spaces replaced with +: url+shortener. Leave it out entirely outside paid search rather than repurposing it for something else.

A Worked Example Across Three Channels

The same campaign, tagged consistently for email, an Instagram story, and a paid search ad — notice utm_campaign stays identical across all three, which is exactly what makes cross-channel reporting possible:

Channelsourcemediumcampaigncontent
Emailnewsletteremail2026-q3-summer-saleheader-cta
Instagraminstagramsocial2026-q3-summer-salestory-swipe-up
Paid searchgooglecpc2026-q3-summer-sale

Tracking clicks across social campaigns specifically covers the channel-level detail this table only summarizes — the naming convention here is what makes that per-channel data roll up into one coherent campaign view instead of three disconnected ones.

Enforcing the Convention Once You Have One

A written convention only holds if something actually enforces it day to day. A closed dropdown for utm_medium in whatever tool your team uses to build tagged links prevents casing drift structurally — nobody can type Social by accident if the only option is a pre-set social. A free-text field, however well-documented the convention is elsewhere, relies on everyone remembering and typing it correctly every time, which is exactly the failure mode this whole guide exists to prevent. If your current tooling is free-text, the practical mitigation is fewer people with tagging access and a shared reference doc pinned somewhere everyone actually looks — not a perfect substitute for a closed list, but a real reduction in drift.

Handling Edge Cases Without Breaking the System

Two situations come up often enough to plan for rather than improvise around. First, recurring campaigns — a monthly newsletter, a weekly promo — should still get a fresh date in utm_campaign each time (2026-08-newsletter, 2026-09-newsletter) rather than reusing one static campaign name indefinitely; otherwise every send since launch collapses into a single undifferentiated row and month-over-month comparison becomes impossible. Second, partner or affiliate links you don't fully control — where someone else is generating the tagged URL — should still get validated against your source and medium lists before they go live, since a partner's own naming habits won't automatically match yours, and one inconsistent batch from an external partner can quietly pollute months of otherwise-clean data.

Frequently Asked Questions

Should UTM values ever use spaces or capital letters? No — lowercase and hyphenated (or + for utm_term specifically) avoids both inconsistent casing and URL-encoding issues that spaces introduce (%20 showing up in a shared link looks broken even when it technically isn't).

What if a campaign genuinely spans two mediums, like social and email at once? Tag each individual link with the medium it's actually shared on, not the campaign's overall shape — a link shared on Instagram is medium=social regardless of what other channels the same campaign also uses elsewhere.

How often should the source and medium lists get reviewed? Whenever a genuinely new channel gets added — not on a schedule. Adding tiktok as a new canonical source the first time a campaign actually runs there is the right moment; auditing an unchanged list quarterly for its own sake isn't a valuable use of time.

Is it too late to introduce a convention if six months of tags are already inconsistent? No — start applying it to everything new immediately. Historical data can be cleaned up separately and gradually if the reporting gap is painful enough to justify the effort, but it shouldn't delay fixing what goes out from today forward.

Where Cut.bd Fits

Cut.bd's link creator includes a UTM builder that fills all five parameters into the short link's underlying destination — but the fields themselves are free text, not a closed dropdown, so the convention above is exactly the discipline that needs to sit alongside it rather than something the tool enforces automatically. Pairing a written convention like this with a custom domain and consistent short-link structure covers both halves of what makes campaign links trustworthy months into a program, not just on day one.

Found this useful? Share it.

Try Cut.bd's link shortener — free, no account required.

Shorten a link