Skip to content
Y
YAS.SH
Analytics

UTM Naming Convention: The System That Keeps Analytics Clean

A copy-paste taxonomy for utm_source/medium/campaign that survives team handoffs.

mohamed-elsaadouni9 min readutmanalyticsmarketing
UTM Naming Convention: The System That Keeps Analytics Clean
Featured imageUTM Naming Convention: The System That Keeps Analytics Clean

UTM Naming Convention: The System That Keeps Analytics Clean

If you've been running campaigns for more than a few weeks, you've seen it: a dashboard where utm_source contains Newsletter, newsletter, NL, email-news, and newsletter-july — all meaning the same thing. Every person on the team invented their own shorthand, and now the "source" report is unusable without a spreadsheet decoder.

The fix is not a better tool. It's a naming convention — a single, written, enforced system that everyone copies. This guide gives you that system: the exact value tables, the rules that keep it consistent, and how to enforce it with automation so it survives team handoffs and turnover.

Why a convention actually matters

UTM parameters are just labels, but they power the decisions that spend money. When your labels are inconsistent, you get four concrete problems:

  1. Split attribution. The same email program shows up as three "sources," so it looks like none of them is performing — and you cut a channel that was actually your best.
  2. Noise in every report. Every slice by source/medium/campaign gets inflated with near-duplicate rows.
  3. Broken filtering. You can't write a reliable segment or exclude a bot pattern when the same value has five spellings.
  4. Rework. Someone eventually has to clean it up in the BI layer, which is a tax on every future report.

A convention is cheap to write and it pays back on the very first real report.

The core rule: lowercase, no spaces, use hyphens

The single most important rule — the one that prevents 80% of the mess — is:

All values are lowercase, use hyphens between words, and never contain spaces, underscores, or punctuation.

  • utm_source=newsletter
  • utm_source=facebook
  • utm_source=Newsletter
  • utm_source=email_news
  • utm_source=newsletter-july-2026 (put the date in the campaign, not the source)

Lowercase matters because Google Analytics (and most platforms) treat values as case-sensitive. Newsletter and newsletter are two different rows. Standardizing on lowercase means one row per real source.

The standard value tables

Here is the exact vocabulary to standardize on. These are the values your team should treat as the only allowed inputs.

utm_source — the platform or publisher

newsletter        (your own email list)
facebook          (any Meta placement)
instagram
linkedin
twitter           (X)
google
bing
youtube
tiktok
podcast
sms               (text campaigns)
whatsapp
qr                (printed or displayed QR codes)
print             (offline, non-QR print)
event             (in-person events)
partner           (affiliate or partner sites)
direct            (typed or bookmarked, rarely used with UTM)

utm_medium — the channel type

email       (owned email, incl. newsletters + lifecycle)
social      (any social platform)
cpc         (paid search / paid clicks)
organic     (unpaid search)
referral    (links from other sites)
qr          (scanned codes)
sms         (text)
display     (paid display / banner)
push        (browser or app push)
offline     (print, event, physical)

The clean separation is: source = where it is, medium = what kind of channel it is. utm_source=facebook&utm_medium=social reads naturally, and it lets you report by medium (all social) or by source (Facebook specifically) without guessing.

utm_campaign — the campaign name

Campaigns should be snake-kebab, lowercase, and specific but short. A strong pattern that survives handoffs:

{product-or-initiative}-{goal}-{period}

Examples:

august-digest            (the recurring monthly newsletter)
spring-sale-2026         (a seasonal promo)
ebook-link-rotting       (a content-gating campaign)
feature-launch-2fa       (product launch)

Do not put the date, the source, or the medium in the campaign name — that data lives in the other parameters. The campaign is the what, not the where or the when.

utm_content and utm_term

Use these sparingly — they're the most commonly abused fields.

  • utm_content differentiates versions within a campaign: header-banner, sidebar, cta-blue, hero. Use it for A/B tests or multiple placements.
  • utm_term is for the keyword or search term in paid campaigns. For most organic and owned channels, leave it empty. An empty value is cleaner than a made-up one.

Building a URL correctly

If you're assembling UTM URLs by hand, you'll make typos. Use a builder — either yas.sh's UTM Builder, or build them into your short links so the parameters are applied once and reused.

When you create a short link for a campaign, apply the UTM parameters once at the destination, then share the short URL everywhere. That way:

  • Every click on the short link carries the same clean parameters (no drift).
  • You can change the destination without changing the tracking.
  • Reports stay tidy because there's exactly one row per source/medium/campaign.

Example of a correct, complete campaign URL:

https://example.com/blog?utm_source=newsletter&utm_medium=email&utm_campaign=august-digest&utm_content=feature-link

Enforcing the convention (so it survives)

A convention that lives only in a Google Doc is a convention that gets ignored after two weeks. Enforce it in the tooling:

  1. Use a builder with fixed dropdowns. If people type free-form, they'll invent values. A builder that only offers newsletter, facebook, etc. removes the choice and the error.
  2. Validate on ingest. If you import campaign URLs from spreadsheets or a CRM, run a check that flags any utm_source/utm_medium value not on the allowlist. Reject or quarantine rows that don't match.
  3. Review once a quarter. Report on the number of distinct utm_source values. If it keeps growing, your enforcement is leaking — tighten the dropdowns.
  4. Name one owner. Attribution is nobody's job when it's everyone's. Assign a single person (usually the analytics or marketing-ops owner) who owns the vocabulary table and can approve new values.

Common mistakes (and how to avoid them)

Mistake Example Fix
Mixed case utm_source=Newsletter lowercase rule
Spaces / underscores email_news hyphens only
Date in source newsletter-july date goes in campaign
Redundant campaign campaign=newsletter-july-email-sale campaign = what, not where/when
Overusing utm_term inventing keywords for organic leave empty
Hand-typing URLs typos and drift use a builder + short links

The takeaway

UTM tracking is free and powerful, but it only stays powerful if the labels stay consistent. Adopt the three rules — lowercase, hyphens, source/medium separation — put the values in a builder, and enforce them in your tooling. Do that and your attribution reports will be readable for years, even as your team changes.

If you build your campaigns through short links, apply the parameters once and reuse the link everywhere. That single habit is the difference between a clean dashboard and a spreadsheet-decoder situation.

Frequently asked questions

Should UTM parameters be lowercase?

Yes. GA4 and most analytics platforms are case-sensitive, so 'Newsletter' and 'newsletter' become two rows. Normalize to lowercase everywhere — including in your CRM imports.

What's the difference between utm_source and utm_medium?

utm_source is the platform or publisher (facebook, newsletter). utm_medium is the channel type (cpc, email, social). A common convention is source=platform, medium=channel.

Can UTM parameters hurt SEO?

No, if handled correctly. Analytics tools strip UTM before sending URLs to crawlers, and canonical tags prevent duplicate-content issues. The risk is mostly messy, duplicated rows in your reports.

Was this helpful? Share
🍪 Cookies & privacy. yas.sh uses only essential cookies to keep you signed in and remember your preferences. We do not run third-party trackers. See our cookie policy and privacy policy.
Settings