UTM Naming Conventions That Scale to 50 Campaigns
The taxonomy that survives 50 campaigns: lowercase rules, a closed source and medium dictionary, dates in campaign names, and governance that holds.
Muzahid Maruf, Founder · TrackRev.io & Contant.io
On this page
- 01Why this matters for your revenue
- 02The rules that never bend
- 03The source and medium dictionary
- 04A naming template you can copy
- 05Governance: making the convention stick
- 06Good vs bad, side by side
- 07When lighter conventions are genuinely fine
- 08How TrackRev enforces the convention
- 09When NOT to use TrackRev for this
Explore with AI
Opens this article inside the chosen assistant with a ready-made prompt.
There are exactly five UTM parameters, and a naming convention that scales has to pin down all five before your tenth campaign, not your fiftieth.
The cheap failure is one team member typing Facebook where the convention says facebook, splitting a channel into two dashboard rows for a quarter.
The expensive failure is 50 campaigns in, when three spellings of the same source have quietly divided a year of revenue across rows nobody will ever re-merge.
Across 4,217 TrackRev workspaces (TrackRev platform data, Q2 2026), the teams whose channel reports still reconcile after a year are the ones that fixed the taxonomy early — not the ones with the most parameters.
This is the taxonomy that survives scale: the rules that never bend, a source and medium dictionary you actually maintain, and the governance that keeps everyone typing the same words.
It assumes you already know what the five parameters do — if not, start with the complete UTM parameters guide — and focuses on the conventions that keep them readable at volume — because clean UTMs are what keep a channel report trustworthy enough to rank channels by revenue rather than clicks.
Key Takeaways
- A UTM convention that scales rests on strict formatting (lowercase, one delimiter, dated campaign names), a closed source and medium dictionary, and governance that enforces it.
- utm_medium must be the most tightly controlled value — a small closed list of channel types — because it is the layer your channel roll-ups depend on.
- Spelling drift is the silent killer at scale: three spellings of one source become three under-sized rows that make a strong channel look weak and get it defunded.
- Dropdowns and creation-time validation beat documentation, because they make a wrong value impossible to enter rather than merely discouraged.
- TrackRev enforces the vocabulary in the link builder and ties clean tags to revenue; every paid plan is $39/mo for all three products versus about $84/mo for separate tools.
The one-line version
A UTM convention that scales rests on three things: strict formatting rules (lowercase, one delimiter, dates in campaign names), a closed dictionary for utm_source and utm_medium so nobody invents a synonym, and governance that enforces the dictionary through dropdowns rather than hope. Formatting stops typos; the dictionary stops drift; governance stops both from coming back.
Why this matters for your revenue
UTMs exist to answer one question: which channel drove this revenue? That answer is only as good as the consistency of the tags underneath it.
When newsletter and Newsletter and news-letter are all in your data, the newsletter channel shows up as three under-sized rows instead of one accurate one — and an under-sized row looks like an under-performing channel.
The report does not warn you; it just quietly understates a channel until someone defunds it.
The cost compounds with scale.
At the platform median of $3.80 per tracked click, a channel whose true contribution is split across three rows might read as three mediocre sources rather than one strong one, and the budget review follows the numbers on the screen.
A clean taxonomy is what lets you compare utm_medium=newsletter against utm_medium=paid-social honestly and move money toward what actually earns. Getting the naming right is not administrative tidiness; it is the precondition for every budget decision that reads a channel report.
For the revenue hand-off from tag to charge, see UTM parameters and Stripe attribution.
The rules that never bend
Three formatting rules cause the majority of avoidable UTM damage. They are boring, they are absolute, and they are where every convention starts.
Lowercase, always
Most analytics tools treat UTM values as case-sensitive, so Google, google, and GOOGLE are three separate sources. There is no scenario where mixed case earns its keep, and every scenario where it silently fractures a channel.
Lowercase every value, everywhere, with no exceptions — including the parameter names themselves. This single rule prevents more broken reports than any other.
One delimiter, everywhere
Values with multiple words need a separator, and the separator has to be the same one every time.
A space becomes %20 in the URL and reads as garbage in reports; mixing summer-sale with summer_sale creates two campaigns out of one. Pick one delimiter for multi-word values and forbid spaces entirely.
The specific character matters less than the consistency — what breaks reports is variety, not the choice.
Hyphens vs underscores: pick one and never mix
Hyphens are marginally friendlier to read than underscores, and some tools treat an underscored phrase as a single token in a way that helps or hurts depending on the tool — but the decision that matters is committing to one and applying it uniformly.
If your convention says hyphens, then header-cta is right and header_cta is a bug.
Write the choice down and treat any deviation as a defect, because a report cannot tell that paid-social and paid_social were meant to be the same thing.
The source and medium dictionary
Formatting rules stop typos. They do not stop two people describing the same channel with different words — one writes email, another writes newsletter, a third writes e-mail.
That is drift, and the fix is a dictionary: a fixed, closed list of allowed values for the parameters you group by.
utm_source: the exact origin
utm_source names the precise origin of the click — newsletter, youtube, partner-acme, not a vague category. Precision here is what lets you tell two podcasts apart or credit a specific partner.
The rule that scales: every new source is added to the dictionary deliberately, with a canonical spelling, rather than invented on the spot by whoever needs a link first.
A source that is not in the dictionary should not appear in a link.
utm_medium: a closed vocabulary
utm_medium is the grouping layer — it rolls individual sources up into channel types so you can ask “how is paid social doing?” without summing a dozen sources by hand.
Because it is the grouping layer, it must be the most tightly controlled value in your whole taxonomy. A medium dictionary that stays small and closed is the difference between clean channel roll-ups and a report that cannot group anything.
A starter medium dictionary
A workable closed list for most SaaS and creator businesses: cpc (paid search), paid-social, organic-social, owned-email, affiliate, referral, sponsorship, and display. Eight values cover almost everything, and the discipline is refusing to add a ninth without a real reason.
When someone wants a new medium, the default answer is “which existing one does this belong to?” — new mediums are rare events, not per-campaign decisions.
Why medium must be a closed list
The instant utm_medium becomes a free-text field, roll-ups die. One campaign uses email, another owned-email, a third newsletter, and now the email channel is three rows that never sum.
A closed list of a handful of mediums is what makes “group by channel type” a one-click operation instead of a spreadsheet reconciliation. If only one value in your taxonomy is enforced, make it this one.
utm_campaign: initiative plus date
utm_campaign names the initiative, and the rule that saves you is baking a date into the name from day one — product-launch-jun26, summer-sale-jun26, q3-webinar-series.
Undated names collide the second time you run the same play, and you lose the ability to compare this year’s launch to last year’s.
Unlike source and medium, campaign names are not a closed dictionary — they are created per initiative — but they must follow a fixed pattern so they sort and compare cleanly.
A naming template you can copy
Lock this in once and the team stops debating it. The pattern holds up across SaaS, subscription, and creator businesses.
| Parameter | Rule | Example |
|---|---|---|
utm_source | Exact origin, lowercase, from the dictionary | newsletter, youtube, partner-acme |
utm_medium | Closed list of channel types only | cpc, owned-email, affiliate |
utm_campaign | {initiative}-{monthyear} | summer-sale-jun26 |
utm_content | Placement or variant, hyphenated | header-cta, banner-blue |
utm_term | Paid-search keyword, or blank | stripe attribution or empty |
A reusable UTM template. Keep it in a shared source of truth and apply it to every link; the specific values are examples, the structure is the rule.
Version everything with a date
The single highest-return habit is putting a month-year on every campaign name — launch-jun26, not launch. It costs nothing at creation time and saves you the day, a year from now, when you want to compare two runs of the same initiative and discover they share a name. Dates make campaigns sortable, comparable, and impossible to accidentally overwrite.
Governance: making the convention stick
A convention written in a doc that nobody opens is not a convention; it is a wish. Governance is what turns the rules and the dictionary into something the reports can rely on.
A single source of truth
There must be exactly one place that holds the canonical spelling of every source and medium — a spreadsheet, a wiki page, or better, the dropdowns in your link tool.
The failure mode is a taxonomy that lives in people’s heads, where the canonical spelling is decided by whoever needs a link first. One authoritative list, referenced by everyone, is the backbone of the whole system.
Dropdowns beat documentation
Documentation helps the person who reads it and does nothing for the person who types a link from memory at 5pm.
The structural fix is to remove the textbox: if utm_source and utm_medium come from dropdowns populated by your dictionary, a misspelling becomes impossible because the value is picked, not typed.
Every convention that survives scale eventually stops relying on discipline and starts relying on constraints.
Validation at creation time
The best time to catch a bad UTM is before the link is created, not in next quarter’s report.
Validation — rejecting values not in the dictionary, flagging missing required parameters, normalising case automatically — moves error-catching to the moment of creation, where it is cheap. A link that fails validation never ships, so it never fractures a report.
This is the difference between preventing drift and cleaning it up.
Handling partners and paid platforms
The hardest values to govern are the ones you do not create: an affiliate who builds their own links, or an ad platform that auto-tags with its own parameters.
For partners, give them pre-built links or a constrained builder so they cannot invent spellings.
For auto-tagging platforms, decide whether to let the platform’s parameters coexist with yours or to standardise on your own, and document the choice — because a platform quietly appending its own utm_source is a common way a clean taxonomy springs a leak.
Good vs bad, side by side
The same intent, tagged two ways. The bad column is not exotic — it is what a taxonomy without governance produces within a few months.
| Intent | Bad (drifts) | Good (scales) |
|---|---|---|
| Weekly newsletter | Email / newsletter / e-mail | utm_source=newsletter&utm_medium=owned-email |
| Google paid search | google + google | utm_source=google&utm_medium=cpc |
| June product launch | launch | utm_campaign=product-launch-jun26 |
| Header vs footer CTA | link1 / link2 | utm_content=header-cta / footer-cta |
| Affiliate partner Acme | acme / Acme / partner | utm_source=partner-acme&utm_medium=affiliate |
Illustrative before-and-after for a standard SaaS taxonomy. The bad column shows how the same intent fractures without a closed dictionary and case rules.
Auto-tagging is a silent source of drift
Ad platforms and email tools often append their own tracking parameters, and some overwrite the utm_source you set. If your paid-social numbers suddenly split across two mediums you did not create, check whether a platform is auto-tagging on top of your links. Decide the rule once — coexist or standardise — and enforce it, because auto-tagging drift looks exactly like a team-discipline problem while being nobody’s typo.
When lighter conventions are genuinely fine
If you run two channels and five campaigns a year, an elaborate governance system is overhead you do not need — a short shared list and the case-and-delimiter rules will carry you a long way, and you can add a closed medium dictionary the moment roll-ups start to matter.
The full apparatus earns its keep at volume and across a team; a solo founder tagging a handful of links can start with the rules that never bend and grow the rest as the number of campaigns does.
Do not build governance for scale you do not have — but do put dates in your campaign names from link one, because that habit is free and impossible to retrofit.
How TrackRev enforces the convention
TrackRev Link Tracking makes the taxonomy structural instead of aspirational: it bakes UTMs into every branded short link from a source and medium vocabulary you control, so values are picked from dropdowns rather than typed from memory and misspellings become impossible.
It is included on TrackRev's paid plans from $39/mo (unlimited links and events, custom domain, channel LTV), with a free tier of 1,000 tracked events.
Because the tags are captured server-side on your own domain, they survive iOS Link Tracking Protection, and because they feed one shared data model, a clean utm_source maps straight to the Stripe, Paddle, Polar, or Lemon Squeezy revenue it earned.
Build tagged links quickly with the UTM builder.
On cost, the stack math is the honest close. The default setup pairs Bitly Growth (~$35/mo) for link tracking with Rewardful Starter (~$49/mo) for affiliates — $84+/mo across two tools with two different definitions of a conversion.
TrackRev is $39/mo for all three products on one data model — so the same enforced vocabulary drives your link tracking, your attribution, and your affiliate programme, with one canonical spelling across all three.
When NOT to use TrackRev for this
If your entire need is a place to store canonical UTM values and you already have a link workflow you like, a shared spreadsheet plus a free builder can enforce a convention adequately for a small team.
TrackRev is worth it when you want the vocabulary enforced at creation time and the resulting tags tied to revenue — not just stored.
It is not a standalone taxonomy-governance product for an enterprise with a dedicated analytics ops team and a tag-management platform already in place; that team likely enforces conventions in their tag manager.
For SaaS and subscription teams that want clean tags that also report revenue, the enforced-vocabulary approach is the point.
Found this useful? Share it.
Frequently asked questions
- A UTM naming convention is a documented set of rules for how you spell and structure UTM parameter values so that reports aggregate cleanly. It typically covers formatting (lowercase, a single delimiter, no spaces), a closed dictionary of allowed utm_source and utm_medium values, and a pattern for utm_campaign names such as initiative-plus-date. The goal is that every link tagging the same channel writes exactly the same values, so the channel shows up as one accurate row rather than several fractured ones.
- Lowercase, always. Most analytics tools treat UTM values as case-sensitive, so Google and google are counted as two separate sources, which silently splits a single channel into multiple dashboard rows. Applying lowercase to every value consistently — and to the parameter names themselves — prevents this. There is no reporting scenario where mixed case is an advantage.
- Either works, but you must pick one and never mix them. Hyphens are marginally more readable, and some tools tokenise underscored phrases differently, but the decision that actually protects your reports is consistency: header-cta and header_cta are two different values to an analytics tool, so mixing them fractures your data. Write the choice into your convention and treat any deviation as a defect.
- utm_source names the exact origin of a click, such as newsletter, youtube, or partner-acme. utm_medium names the channel type that groups sources together, such as owned-email, cpc, or affiliate. Source is specific; medium is the grouping layer you report by. The common mistake is letting them duplicate each other — utm_source=email and utm_medium=email — which destroys your ability to roll individual sources up into channel types.
- Remove the textbox. The durable fix is to enforce the convention structurally: populate utm_source and utm_medium from dropdowns backed by a closed dictionary, validate values at creation time so a link with an unknown source cannot ship, and normalise case automatically. Documentation alone relies on discipline, which fails at 5pm under deadline. A link tool that generates tagged links from a controlled vocabulary makes a misspelling impossible rather than merely discouraged.
- Because undated campaign names collide the second time you run the same initiative. If both this year's and last year's launch are tagged simply launch, you cannot compare them without a spreadsheet hack, and last-touch reports may merge them. Baking a month-year into the name — product-launch-jun26 — from day one keeps campaigns sortable, comparable, and impossible to accidentally overwrite. It costs nothing at creation and cannot be retrofitted later.
- As few as cover your channels — typically around eight for a SaaS or creator business: cpc, paid-social, organic-social, owned-email, affiliate, referral, sponsorship, and display. The medium is your grouping layer, so keeping it small and closed is what makes channel roll-ups work. Adding a new medium should be a rare, deliberate event; if you find yourself inventing mediums per campaign, the list has stopped being a closed dictionary and your roll-ups will break.
- You need the formatting rules — lowercase, one delimiter, dated campaign names — from the very first link, because those cost nothing and cannot be retrofitted. The heavier apparatus, a fully governed dictionary with dropdowns and validation, earns its keep at volume and across a team. A solo founder can start light and add a closed medium dictionary the moment channel roll-ups start to matter, which is usually sooner than expected.

Written by
Muzahid Maruf, Founder, TrackRev.io & Contant.io
Muzahid Maruf is the founder of TrackRev.io and Contant.io. He writes about marketing attribution, link tracking, and revenue analytics for SaaS teams.
Writes about Marketing attribution · Link tracking · Revenue analytics · SaaS growth
Keep reading
Related articles from the TrackRev blog.
