TrackRev
Blog
11 min read
UTM tracking

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 of TrackRev.io

Muzahid Maruf, Founder

LinkedIn

On this page
  1. 01Why this matters for your revenue
  2. 02The rules that never bend
  3. 03The source and medium dictionary
  4. 04A naming template you can copy
  5. 05Governance: making the convention stick
  6. 06Good vs bad, side by side
  7. 07When lighter conventions are genuinely fine
  8. 08How TrackRev enforces the convention
  9. 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.

ParameterRuleExample
utm_sourceExact origin, lowercase, from the dictionarynewsletter, youtube, partner-acme
utm_mediumClosed list of channel types onlycpc, owned-email, affiliate
utm_campaign{initiative}-{monthyear}summer-sale-jun26
utm_contentPlacement or variant, hyphenatedheader-cta, banner-blue
utm_termPaid-search keyword, or blankstripe 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.

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.

IntentBad (drifts)Good (scales)
Weekly newsletterEmail / newsletter / e-mailutm_source=newsletter&utm_medium=owned-email
Google paid searchgoogle + googleutm_source=google&utm_medium=cpc
June product launchlaunchutm_campaign=product-launch-jun26
Header vs footer CTAlink1 / link2utm_content=header-cta / footer-cta
Affiliate partner Acmeacme / Acme / partnerutm_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.

PostLinkedIn

Frequently asked questions

Muzahid Maruf — Founder of TrackRev.io

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.

Stop guessing where your revenue comes from.

Set up TrackRev in 5 minutes. Free tier covers 1,000 events / month — no card needed.

UTM Naming Conventions That Scale to 50 Campaigns · TrackRev