TrackCanary guide · Pixel and conversion tracking checks

UTM parameters explained: what they are, how to build them, and how to confirm they work

UTM parameters are the small tags you add to the end of a link so your analytics can tell where a visit came from. When someone clicks a tagged link — from an email, an ad, a social post, or a newsletter — the tags travel with them in the URL and your analytics reads them, so a visit shows up as “email / newsletter / spring-sale” instead of a nameless “direct” or “referral.” UTM stands for Urchin Tracking Module, named after Urchin, the analytics company Google bought before it became Google Analytics. This guide explains what each UTM parameter does, how to build a tagged link that will not quietly break your reporting, the common mistakes that scramble campaign data, and how to see UTM data once it lands in GA4.

TrackCanary checks visible browser-side signals. It does not prove final attribution accuracy, ad account setup, analytics account data, legal compliance, or every possible conversion event. Manual verification may still be recommended.

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 check

Common 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.

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.