What is a UTM parameter? The beginner's guide

A UTM parameter is a small tag glued onto a URL that tells your analytics where the click came from. Plain-English explainer of what is a UTM parameter.

May 21, 2026 16 min read Linked.Codes
What is a UTM parameter? The beginner's guide

A UTM parameter is a small piece of text added to the end of a URL that tells your analytics tool where the click came from. You've seen them — the long stretch of ?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch that gets stapled onto the back of a link. They look ugly. They're also the difference between a report that says "8,000 people clicked something" and a report that says "the LinkedIn post drove 60% of the signups; the Twitter post drove 4%". Same campaign. Same total clicks. Completely different decisions on the other side.

This post is the foundational explainer. What UTMs are, where they came from, what each of the five fields does, what those fields look like in Google Analytics 4, and why short links matter for keeping the URL you actually share clean. If you're already comfortable tagging URLs and the question is "what naming convention should the team adopt", read the operator playbook on UTM parameters that actually matter for short links instead — this one is for the reader who's seen the term and wants to know what it means without the jargon.

What is a UTM parameter, exactly

UTM stands for Urchin Tracking Module. The name is older than most marketing teams. Urchin Software was a web-analytics company Google bought in 2005, and Urchin's tagging scheme became the foundation of what every analytics tool — Google Analytics, Adobe, Matomo, Plausible, Fathom — now reads when it tries to figure out where a visit came from. The Urchin product was retired in 2012; the parameter prefix it left behind became the industry's de facto standard.

The mechanics are not complicated. A URL has a path (/landing) and an optional query string (?key=value&key=value). UTM parameters are just five specific keys that go in that query string. They start with utm_ so the analytics tool knows to treat them as campaign-tracking signals rather than functional parameters the page itself needs. Strip them off and the page still works. Leave them on and your analytics tool reads them, files them away with the click, and surfaces them in your reports under names like "Source", "Medium", and "Campaign". Append your own utm_source and utm_medium to a destination in the short-link tool at /short-link-generator, click through, and the receiving analytics will surface the values exactly as you wrote them.

Anatomy of a URL with UTM parameters highlighted Anatomy of a tagged URL example.com/landing ? utm_source=newsletter & utm_medium=email & utm_campaign… page the user lands on where the click came from channel type marketing initiative The page itself does not need any of this. UTMs are pure metadata for your analytics tool. The landing page ignores them. The order does not matter. utm_source=x&utm_medium=y is identical to utm_medium=y&utm_source=x.
The question mark splits the page from the parameters. Each & separates one key=value pair from the next. The order is arbitrary; the names are not.

A real example. Say you're sending a newsletter that links to your pricing page. The bare URL is https://example.com/pricing. The tagged URL is https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch. Both URLs land on the same page. The second one tells Google Analytics that the visit started in your newsletter, came in via email, and was part of the spring-launch campaign. Open GA4 the next morning, look at the Traffic Acquisition report, and you'll see a row labelled "newsletter / email" with the click count, the bounce rate, and (if you've wired conversions) the signups it drove.

The five UTM keys, in priority order

The standard defines five fields. They are not equally important. The first three carry almost all the useful signal, the fourth matters when you're A/B testing, and the fifth is a legacy field most teams should ignore.

The literal place the click came from. A specific newsletter, a specific social network, a specific partner site, a specific printed magazine. Examples: newsletter, twitter, linkedin, partner-blog, vogue-may-issue, instagram-bio.

The right level of detail is "specific enough that you'd act on the number". If you send three different newsletters, newsletter is too coarse — make it newsletter-product, newsletter-deals, newsletter-jobs. If you only have one, newsletter is fine.

utm_medium — the type of channel

The category the source belongs to. Examples: email, social, cpc (cost-per-click — paid search), print, referral, sms, affiliate. The medium tells you what kind of work the source represents — email work is different from social work is different from paid-ad work.

In Google Analytics, source and medium are joined together as a single "Source / Medium" dimension — newsletter / email, twitter / social, google / cpc. That joined name is the most-used dimension in any analytics report and the reason getting source and medium right matters more than the other three combined.

utm_campaign — the marketing initiative

The name of the broader effort the link is part of. Examples: spring-launch, q2-pricing-test, black-friday-2026, affiliate-onboarding. A campaign typically spans multiple channels (newsletter + social + paid) and a defined time window (a week, a month, a quarter). The same utm_campaign value goes on every link inside that effort, across every channel, so you can pull a single report that says "spring-launch produced 12,000 clicks across newsletter, twitter, and linkedin combined".

What does NOT go in utm_campaign: dates, user emails, session IDs, anything that changes per click. The campaign field is a permanent dimension in your analytics database. Stuff a unique value in there and your dashboard fills up with millions of one-click "campaigns" you can't aggregate over.

When you have two or more links pointing to the same destination from the same source-medium-campaign combination, this is how you tell them apart. The header link in an email vs the footer link. The red button vs the blue button in the same ad. Variant A vs variant B in an A/B test. Examples: header, footer, red-button, variant-b, image-link, text-link.

If you're not running A/B tests or placement experiments, you can skip utm_content. It's optional. The first three are the ones that fail loudly if missing; this one fails quietly by not telling you which placement won.

utm_term — paid search keyword (legacy)

The original definition was "the keyword the user searched for that triggered this ad". Google Ads now auto-populates this from the keyword that triggered the ad — you don't fill it in yourself unless you've turned auto-tagging off. For organic, social, email, and print clicks, utm_term has no useful meaning. Leave it empty.

The five UTM fields ranked by how often you fill them in Which fields to fill in, by use case utm_source always utm_medium always utm_campaign always utm_content when A/B testing utm_term paid search only Three fields carry the signal. One matters for tests. One you'll likely never touch.
Source, medium, campaign — these three are the minimum to get a click out of the "(direct) / (none)" bucket. Content is for tests. Term is for paid search.

Where UTMs show up in Google Analytics 4

The five values get parsed out of the URL by GA4 and surfaced in four main places.

Traffic Acquisition report. The top-level "where did our traffic come from" view. The default dimension is "Session source / medium" — that joined name like newsletter / email or twitter / social. Sort by sessions, conversions, or revenue. This is the report you look at first.

User Acquisition report. Same dimensions, but attributed to the first time a user arrived rather than the most recent session. Useful for asking "where do our paying customers originally come from" instead of "which channel drove last week's sessions".

Campaign reports. When you click into a specific channel, you see a breakdown by utm_campaign. This is where spring-launch, q2-pricing-test, black-friday-2026 each get their own row with their own metrics.

Custom explorations. In the Explore section, you can pull the four UTM dimensions (source, medium, campaign, content) into a free-form table or funnel and slice them however you want. The default reports don't surface utm_content on its own — you have to build an exploration to compare placement variants within a campaign.

The thing to internalise: GA4 reads UTMs at the session boundary. The first hit of a session sets the source-medium-campaign for everything that follows. If a user clicks your tagged newsletter link, browses around, leaves, and returns an hour later via a Google search, GA4 starts a new session and the second session's source is google / organic, not newsletter / email. This is standard last-click attribution and it's why the same click can show up as one source today and another source next week if the user comes back via a different path.

An untagged click is a vote you cast blindfolded. The dashboard counts it. It just can't tell you what you voted for.

Why "(direct) / (none)" is the data graveyard

Open any GA4 property and look at the Traffic Acquisition report. There will be a row labelled (direct) / (none). That's every session GA4 couldn't categorise — no referrer in the browser, no UTM tags on the URL, no Google Ads click ID, no recognised source.

Some of that is legitimate direct traffic — people who typed your URL into the address bar, clicked a bookmark, or returned to an open tab. A lot of it is leakage. Email clients sometimes strip the referrer. In-app social browsers shed query parameters. SMS clicks can lose tags depending on the OS. A campaign you forgot to tag goes straight into "(direct)" because GA4 has no other signal to use.

Industry attribution audits consistently put 18–32% of campaign traffic in the "(direct)" or "(not set)" buckets on default GA4 setups. A quarter of your campaign clicks invisible is the baseline before you start fixing anything. The fix is exactly what UTMs are for — give the click a label that survives the trip from your sending tool to the destination page, and GA4 reads the label instead of guessing.

The hidden cost of not tracking your short links puts numbers on the budget that quietly disappears into this bucket — the channel cuts you can't make, the conversions you can't credit, the reallocation lift you never see. The mechanism is always the same: untagged clicks float free of the campaign that produced them.

The ugliness problem. A tagged URL looks like this:

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

Nobody wants to print that on a magazine page. Nobody wants to read it aloud on a podcast. Nobody wants to type it on a billboard. The UTMs make the URL useful for analytics and unusable for everything else.

Short links solve the readability problem without losing the attribution. The short link stores the long, tagged URL as its redirect destination. The user sees linked.codes/p/sale (or, better, yourdomain.com/p/sale if you're using a custom short-link domain). They click. The redirect fires. The browser ends up at the full tagged URL — UTMs intact — and GA4 sees newsletter / email / spring-launch exactly as if you'd pasted the full URL.

There are two patterns for combining short links and UTMs:

UTMs on the destination, short link clean. You set the UTMs once on the destination URL inside the short-link tool, and every click on the short link gets the same UTMs. Best for printed and broadcast channels where the same code appears on a magazine page, a poster, a piece of packaging. One channel, one set of UTMs, one short link.

UTMs on the inbound short URL, forwarded. The short link doesn't bake in any UTMs; you append them when you share the URL — linked.codes/p/sale?utm_source=twitter vs ?utm_source=newsletter. The redirect forwards the tags through to the destination. One short link, many channels. Useful when the same short URL gets shared across multiple surfaces by multiple parties.

The full breakdown of when each pattern wins, plus the naming conventions that hold up across multi-channel sends, lives in the UTM operator playbook. The point for a beginner: short links don't replace UTMs, they let you keep them without the URL becoming unreadable.

A short link hides the UTMs without losing the attribution What the user sees vs what the analytics tool sees What the user sees on the magazine page yourdomain.com/p/sale What the browser actually lands on after the redirect example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch
The reader gets a URL they can read aloud. Google Analytics gets the full attribution. Both jobs done.

Build the short link once, set the UTMs on the destination, share the short URL anywhere. The lifetime tier covers unlimited links.

See how short links and UTMs fit together

Build your first tagged URL

Plug in your details below. The widget normalises the values the way GA4 expects them (lowercase, hyphens instead of spaces) and shows you exactly what the URL will look like — plus a preview of how it'll appear in your Source / Medium report the next day.

How it shows up in GA4 Traffic Acquisition
Session source / mediumCampaignSessions

Take that tagged URL, paste it as the destination of a short link, and you've got both the readable URL to share and the attribution to read in the morning. The widget above also lives at /utm-link-builder as a standalone page — handy when you're tagging a one-off link from a phone and don't want to scroll through the whole explainer. The mechanics of wiring the click through to a conversion event — so the report says "newsletter / email drove $4,200 in revenue", not just "newsletter / email drove 142 sessions" — are covered in the conversion tracking with QR codes and short links walkthrough, which is the next step up from this post.

The conventions every marketer eventually adopts

A few rules every team converges on after their first messy UTM audit. Adopt them on day one and skip the audit.

Lowercase everything. UTM values are case-sensitive on the analytics side. Email and email are two different mediums in GA4. Standardise on lowercase across every tag and never look back.

Hyphens instead of spaces. A space in the value gets URL-encoded as %20, which looks ugly in reports and tempts typos. spring-launch not spring launch.

One vocabulary per dimension. Don't switch between social and social-media for the same channel. Don't switch between cpc and paid-search. Pick one term, document it, use it for that dimension forever.

Source is specific, medium is general. The newsletter is the source; email is the medium. Twitter is the source; social is the medium. Confusing the two is the most common rookie mistake — putting email in source and newsletter in medium inverts the dimension order GA4 expects.

Campaign names should outlive the calendar. spring-launch-2026 is fine. email-may-15 is bad — your spring launch ran on May 15, May 22, and May 29, and you want one campaign row with three weeks of activity, not three rows with one week each.

Don't tag your own internal links. UTMs are for external-to-internal attribution. A click from your homepage to your pricing page does not need UTMs; tagging it overwrites the original referrer and hides the actual source.

The deeper version of all of this — including the slug conventions that work alongside UTMs, the audit shape for cleaning up corrupted historical data, and the platform settings that quietly strip parameters — lives in the UTM operator playbook. The debug guide for short links that aren't tracking clicks covers the apps and extensions that drop parameters between click and page view, which is the failure mode you'll hit if your tagging is clean but your reports still look thin.

What UTMs don't do

Three things UTMs are not, often misunderstood.

They're not a tracking pixel. UTMs label a click. They don't follow the user around the internet. Cookies and pixels do that. UTMs only tell your analytics tool "this session started with this source" — nothing more.

They're not personal data. A utm_source=newsletter value tells you which newsletter the click came from. It doesn't tell you which subscriber. Joining the click to a logged-in user record is the step that turns aggregate attribution into per-person tracking, and that step is a separate privacy decision your team has to make.

They're not retroactive. A link you sent yesterday without UTMs cannot be tagged after the fact. The clicks have already happened. The session data has already landed in "(direct)". Going forward you can tag everything; going backward you can't. This is the practical reason "start tagging today" beats "design the perfect taxonomy first".

The walkthrough on tracking links in email goes deeper on what email-specific tracking layers on top of UTMs — and where the privacy line lives. The reason to choose a branded short-link domain in the first place is upstream of the UTM question — a tagged link only helps if people click it, and they click branded short links at roughly a third higher rate than generic shorteners on identical creative. UTMs measure what happened after the click; the domain decides whether the click happens.

What to do next

The smallest move that closes most of the beginner gap, in under an hour:

  1. Pick the one campaign you're sending next week.
  2. Generate a tagged URL with the widget above. Fill in source, medium, campaign. Skip content unless you're A/B testing.
  3. Paste it as the destination of a short link on your own domain.
  4. Share the short link wherever the campaign lives — newsletter, social, ad.
  5. Open GA4 the morning after the send and find the row in Traffic Acquisition. Sort by sessions. Note the number.

That's the loop. Do it for one campaign and you'll have a real attribution number for the first time. Do it for three campaigns and you'll start seeing which channels actually pay back. Do it for a quarter and you'll have the data to cut the loser and double down on the winner — which is the entire point UTMs exist.

For the live-feed view of those numbers as the campaign runs — minute-by-minute clicks by source, geographic distribution, top referring URLs — real-time link analytics is the surface that shows it. For the historical rollups — month-over-month per-source CTR, refund-adjusted conversions, time-to-conversion histograms — the click analytics docs walk through the reports the platform builds on top of the same click log.

Do I need UTMs if I'm only using one channel?

Yes — even with one channel, UTMs distinguish marketing traffic from organic, direct, and referral traffic. Without tags, your newsletter clicks land in "(direct)" alongside people who typed the URL by hand. With tags, they land in their own row. The day you add a second channel, your historical data is already segmented and comparable.

Will UTMs break my page or my SEO?

The page itself ignores UTMs — they're metadata your code doesn't read. SEO-wise, search engines do index URLs with parameters, but setting a canonical tag on the landing page that points to the unparameterised URL solves duplicate-content concerns. Most modern site frameworks do this by default.

What's the difference between utm_source and utm_medium?

Source is the specific place — newsletter, twitter, vogue-magazine. Medium is the broader channel type — email, social, print. A newsletter is the source; email is the medium. Twitter is the source; social is the medium. Source answers "which one"; medium answers "what kind".

Do I need utm_term?

Almost certainly not. utm_term was for paid-search keyword attribution and Google Ads auto-populates it now. For organic, social, email, and print clicks, leave it empty. Filling it in manually for non-paid-search clicks just creates noise.

How do UTMs work with short links?

Two patterns. Either bake the UTMs into the destination URL stored by the short link (cleanest for print, one channel per short link) or pass UTMs through the inbound short link as query parameters (one short link, multiple channels). Both end up in the destination's analytics correctly.

Is there a maximum length for a tagged URL?

HTTP has no hard maximum, but most browsers handle URLs up to about 2,000 characters reliably. UTMs typically add 100 to 200 characters, well under any practical limit. The bigger issue is shareability — long URLs look ugly in print and social, which is exactly why short links exist.

Can I add my own custom UTM-like parameter?

You can add any query parameter you want, but only the five standard UTMs are read by default in GA4. Custom parameters need a custom dimension configured before they show up in reports. Easier to use utm_content for the secondary attribute unless you genuinely need a sixth dimension.

Sourcesshow citations

Try it on your own domain

Branded short links and dynamic QR codes, on your subdomain or your own domain. One-time purchase, no per-click fees.