Skip to main content
Guide

UTM Parameters Explained: Track Every Campaign Properly

By UrlShorter Team7 min read

Open your analytics tool and look at the traffic sources report. If a large slice of it says "direct" or "(not set)," you have a UTM problem. Direct traffic is supposed to mean people typing your URL into a browser, but in practice it's a junk drawer: untagged email clicks, links from apps, dark social shares, and every campaign someone launched without tracking parameters. Money went out, clicks came in, and nobody can prove which was which.

UTM parameters fix this. They're small tags appended to a URL that tell your analytics tool exactly where a visitor came from and which campaign sent them. They cost nothing, they've worked the same way for two decades, and yet most teams use them inconsistently enough to corrupt their own data. This guide covers the five parameters, the naming discipline that keeps reports clean, and the handful of mistakes that account for nearly all UTM failures.

The five UTM parameters

A UTM-tagged URL looks like this:

https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch

Everything after the ? is metadata for your analytics tool. The page loads identically with or without it. There are five standard parameters:

ParameterAnswersRequired?Examples
utm_sourceWhere did the click come from?Yesgoogle, newsletter, tiktok, partner-blog
utm_mediumWhat type of channel?Yesemail, social, cpc, qr, referral
utm_campaignWhich campaign or promotion?Yesspring-launch, black-friday-2026
utm_termWhich paid keyword?Paid search onlyurl+shortener, qr+generator
utm_contentWhich variant or placement?Optionalheader-cta, footer-link, video-a

Source and medium work as a pair: newsletter / email, tiktok / social, google / cpc. Campaign groups everything belonging to one initiative across channels. Term is essentially a paid-search relic — skip it elsewhere. Content is your A/B lever: two links in the same email get utm_content=hero-button and utm_content=ps-link, and now you know which placement earns the click.

The mental model: source is who, medium is what kind, campaign is why, content is which one.

Naming conventions: where UTM strategies live or die

Analytics tools treat UTM values as literal strings. Email, email, and E-mail become three separate rows in your reports, each holding a fraction of the truth. The tags themselves are trivial; the discipline is everything. Four rules prevent 90% of the damage:

  1. Lowercase everything, always. utm_source=Facebook and utm_source=facebook are different values to GA4. Make lowercase a hard rule with no exceptions, and you never think about it again.
  2. Hyphens, not spaces or underscores. Spaces become %20 in URLs and look broken. Pick hyphens (spring-launch), write it down, and ban the alternatives.
  3. Fixed vocabulary for source and medium. Source and medium come from a closed list you maintain — nobody invents new ones mid-campaign. Medium especially should be a short list: email, social, cpc, qr, sms, referral, affiliate. If someone wants a new medium, it's a team decision, not a Tuesday improvisation.
  4. Structured campaign names. A repeatable pattern like {initiative}-{period}product-launch-2026q2, newsletter-apr-2026 — makes campaign reports scannable and sortable instead of a pile of one-off labels.

Governance: the tracking spreadsheet

Every team that does UTMs well has some version of the same artifact: a shared spreadsheet (or Notion table) that is the single source of truth for tagged links. Minimum viable columns:

  1. Date created
  2. Destination URL (the clean page URL)
  3. Source / medium / campaign / content (each in its own column so you can filter)
  4. Full tagged URL (generated by formula from the columns — this prevents typos)
  5. Short link (more on this next)
  6. Owner (who to ask when something looks weird)

The workflow: anyone launching a campaign adds a row before the link goes anywhere. The formula builds the URL, so casing and separators are enforced mechanically rather than by memory. When a report shows a mystery source six months later, the spreadsheet answers it in one search.

This sounds bureaucratic. It's fifteen seconds per link, and it's the difference between attribution you trust and attribution you argue about.

Combining UTMs with short links

There's an obvious tension in everything above: properly tagged URLs are ugly. A tagged link easily runs past 120 characters of visible tracking machinery. You can't put that on a slide, in an SMS, in a video, or anywhere a human will see the raw URL — and when people see tracking parameters, some of them strip the query string before sharing, silently destroying your attribution.

Short links resolve the tension completely:

  1. Build the full tagged URL in your spreadsheet.
  2. Shorten it with UrlShorter. The short link redirects to the full URL with every parameter intact.
  3. Share only the short link. Humans see six clean characters; GA4 receives the full tag set on arrival.

You also get a second, independent data layer. The short link records every click — including clicks from browsers that block analytics scripts, which your GA4 numbers silently miss. Comparing link-level clicks against GA4 sessions per campaign tells you roughly what fraction of your traffic is invisible to on-page analytics. That gap is often substantial, and most teams have never measured it. The link analytics guide goes deeper on reading link-level data.

This combination matters most in channels where URLs are exposed: QR codes (a tagged URL makes a dense, unreliable code — see the QR code marketing guide), SMS campaigns via an SMS link shortener, print, podcasts, and social bios.

Reading UTM data in GA4

GA4 handles UTMs automatically — no configuration needed. Where to look:

  • Reports → Acquisition → Traffic acquisition shows sessions grouped by source/medium. Your newsletter / email and tiktok / social pairs appear here.
  • Add the campaign dimension (the small "+" above the table) to split any source/medium row by utm_campaign.
  • Explorations are where content-level analysis happens: build a free-form table with campaign and content as dimensions, conversions as the metric, and you can see which CTA variant actually drove signups, not just clicks.

Two GA4-specific things worth knowing. First, GA4 maps UTMs onto its own channel-grouping logic, so a nonstandard medium like utm_medium=banner-thing lands in "Unassigned" — another reason to keep medium to a fixed vocabulary GA4 recognizes. Second, attribution is last-non-direct-click by default: if someone clicks your tagged email link, leaves, and returns directly tomorrow to buy, the email still gets credit. That's usually what you want, but know it's happening when numbers surprise you.

Common UTM mistakes

  • Inconsistent casing and separators. The classic. Facebook vs facebook, spring_launch vs spring-launch. Fragmented values make every report an archaeology project. The fix is mechanical enforcement via the spreadsheet formula, not vigilance.
  • UTMs on internal links. Never tag links that point from one page of your site to another. Clicking an internal tagged link starts a new session with a new attribution, overwriting the real source. Your homepage banner should be a plain link; UTMs are for traffic arriving from outside. (Use utm_content on external links, or on-site event tracking internally, if you need banner-level data.)
  • Swapping source and medium. utm_source=email&utm_medium=newsletter is backwards — medium is the channel type (email), source is the specific origin (newsletter, or promo-list). Once both patterns exist in your data, reports split across them indefinitely.
  • Tagging so granularly that nothing aggregates. If every individual post gets its own campaign value, the campaign report becomes a thousand rows of one-click entries. Campaign groups the initiative; utm_content handles the variants.
  • Forgetting the tags exist on shared URLs. Tagged URLs get copied from browser bars into other places, carrying stale attribution with them. Sharing short links instead of raw tagged URLs largely prevents this.
  • No tags at all on "small" sends. The Slack share, the partner's newsletter mention, the podcast blurb. Untagged is unattributed, and unattributed is "direct." Small sends are exactly the ones you'll wonder about later.

Frequently asked questions

Do UTM parameters affect SEO?

Not when used correctly — on external campaign links pointing at your site, with the destination page canonicalized (standard on most platforms). The genuine SEO risk is tagging internal links, which can fragment analytics and create crawlable duplicate URLs. Don't tag internal links and there's nothing to worry about.

Can visitors see or remove UTM parameters?

Yes — they sit in plain sight in the address bar, and anyone can delete them. That's expected; UTMs are analytics hints, not security. Hiding them behind a short link keeps shared URLs clean and makes accidental stripping much less common.

Which UTM parameters are actually required?

GA4 will accept any subset, but treat source, medium, and campaign as mandatory for every external link. Add content when testing variants. Skip term unless you're manually tagging paid search.

Do short links preserve UTM parameters?

Yes. A UrlShorter link redirects to the exact destination URL you shortened, query string and all. GA4 sees the full tags on landing; the short link separately logs the click. You lose nothing and gain a second measurement layer — see the documentation for specifics.

Wrapping up

UTM tracking isn't hard; it's just unforgiving of sloppiness. Five parameters, lowercase-and-hyphens, a fixed source/medium vocabulary, a shared spreadsheet that generates URLs by formula, and short links so humans never see the machinery. That system takes an afternoon to set up and turns "where did our traffic come from?" from a quarterly debate into a filter click. Start with your next campaign — retroactive attribution is the one thing no tool can give you.