What UTM parameters are (and what UTM stands for)
A UTM parameter is a name-and-value tag appended to a link after a question mark. On its own, a link like example.com/sale tells your analytics nothing about how the visitor arrived. Add UTM tags — example.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale — and the same visit is now labelled by source, channel, and campaign.
UTM stands for Urchin Tracking Module. The convention comes from Urchin, an early web-analytics product Google acquired and turned into Google Analytics, and it has been the standard way to tag campaign links ever since. Every major analytics platform — GA4, Adobe, Matomo, Piwik — reads the same utm_ tags, which is why UTMs are portable across tools.
The tags do not change the page the visitor sees; they only carry information for your analytics. That is the whole point: a tagged link behaves exactly like the untagged one for the visitor, while giving you the attribution you would otherwise lose.
The five UTM parameters, explained
There are five UTM parameters. Three are effectively required if you want clean reporting, and two are optional and mostly used for ads and A/B tests.
Fill in at least source, medium, and campaign on every tagged link. Leaving one out is the single most common reason campaign reports look inconsistent.
- utm_source — where the traffic comes from: the specific referrer or platform (newsletter, google, facebook, partner-site).
- utm_medium — the channel type: email, cpc, social, banner, affiliate. This is what groups traffic into channels in your reports.
- utm_campaign — the campaign name that ties a set of links together: spring-sale, launch-2026, black-friday.
- utm_term — optional; used for paid-search keywords (the keyword you bid on).
- utm_content — optional; distinguishes two links to the same destination, useful for A/B tests or two buttons in one email (header-cta vs footer-cta).
How to build a UTM-tagged URL
The structure is your normal page URL, then a question mark, then each utm_ tag joined by an ampersand. Order does not matter; spelling and casing do. A complete example: example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale&utm_content=header-cta.
The safest habit is a naming convention you apply every time. Keep everything lowercase, because UTM values are case-sensitive: Facebook, facebook, and FaceBook become three separate sources in your reports. Use hyphens or underscores instead of spaces, never raw spaces. Keep a shared list of the exact source and medium values your team is allowed to use, so one person does not write “email” while another writes “e-mail.”
You can assemble links by hand once you know the pattern, or use a URL builder that fills in the fields and encodes the result for you. Either way, the rule that matters is consistency: the same channel must always be tagged the same way, or your reports will split one channel into several.
Free tracking check
See what’s visible on a real site.
Run a free browser-based scan — no login, no install, ~10 seconds.
Run a free checkCommon UTM mistakes that quietly break your reporting
Most UTM problems are not dramatic — they do not throw an error. They just fragment or misattribute your data until the reports stop being trustworthy.
Watch for these in particular:
- Inconsistent casing or spelling: Email vs email, or fb vs facebook, split one channel into several rows.
- Tagging internal links: adding UTMs to links between your own pages restarts the session and overwrites the real source, so a visitor from Google suddenly looks like they came from your own site.
- Spaces or special characters left un-encoded, which can break the link or create ugly, mismatched values.
- Losing UTMs on a redirect: if a tagged link passes through a redirect that drops query strings, the tags never reach your analytics.
- Using utm_campaign for everything and skipping source/medium, which leaves traffic ungrouped by channel.
How to see UTM data in GA4
Once a tagged link is clicked, GA4 reads the tags and stores them against the session. In GA4, open Reports, then Acquisition, then Traffic acquisition, and look at the “Session source / medium” dimension — your utm_source and utm_medium appear there. To see campaigns, add or switch to the “Session campaign” dimension, which shows your utm_campaign values.
If you tagged a link and the values never appear, the usual causes are a redirect that stripped the query string, a typo in a utm_ key (utm_soure instead of utm_source is ignored), or the visit being attributed elsewhere because the link was an internal one you should not have tagged.
If your UTM values are missing entirely and you are not sure whether GA4 is even receiving hits, the problem may be upstream of UTMs — the GA4 tag itself may not be firing on the page.
A tagged link is not proof your tracking fires
UTMs decide how a visit is labelled, but they cannot record anything on their own. They rely on your analytics and pixel tags actually loading and firing on the page. A perfectly tagged link pointed at a page where the GA4 tag or the Meta Pixel does not load will still produce no data — the label had nowhere to be recorded.
So UTM hygiene and tag health are two separate checks, and you need both. Get the tags consistent, then confirm the analytics and pixel tags are genuinely present and firing on the pages your campaigns send traffic to. TrackCanary’s free checkers run that visible check across your public pages, so you know a campaign click is actually being recorded — not just labelled.
Next step
Confirm your GA4 tag actually fires
Clean UTMs only help if your analytics tag is firing on the pages your campaigns point to. Paste your URL into the free GA4 Tracking Checker and confirm the tag loads on your public pages — no login, no extension.