← Back to blog
Developer Utilities

What Are UTM Parameters? A Practical Guide With Naming Conventions

Five tags, two of them effectively mandatory. Most broken campaign reports aren't missing UTMs — they're the same campaign spelled three different ways.

By Rajhussain Kanani7 min read

The short answer

UTM parameters are tags you append to a link's query string so your analytics tool can tell where a visitor came from. There are five: utm_source, utm_medium, utm_campaign, utm_term and utm_content. A tagged link looks like this:

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

UTM stands for Urchin Tracking Module, after Urchin — the analytics company Google bought in 2005 and turned into Google Analytics. The name survived the product. The parameters are read by the analytics tool on the receiving end; they change nothing about the page itself, and a link works exactly the same with or without them.

The five parameters, and what GA4 does with each

  • utm_source (required in practice) — the specific origin: newsletter, google, linkedin. GA4 maps this to Session source.
  • utm_medium (required in practice) — the channel type: email, cpc, social, referral. Maps to Session medium, and this is the one GA4 uses to sort traffic into its default channel groups. Get the medium wrong and your campaign lands in "Unassigned".
  • utm_campaign — the specific push, so you can group several links together: spring-launch. Maps to Session campaign.
  • utm_term — the paid keyword. Largely vestigial now that Google Ads auto-tagging handles this; useful mainly if you run search ads somewhere that doesn't auto-tag.
  • utm_content — which link or creative variant was clicked: hero-button versus footer-link. The right place for A/B distinctions.

GA4 also recognises a handful of extras — utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic — but only utm_id is worth most people's attention, and only if you are stitching cost data from an ad platform onto sessions. Ignore the rest until you have a specific reason.

Two parameters are effectively mandatory: source and medium. GA4 will accept a link with only a campaign name, but with no source or medium it has nothing to file the session under, and the visit ends up credited to direct traffic or an unassigned channel.

Hand-typing query strings is where the typos come from. CheckSEO's UTM Link Builder takes your destination URL and each parameter as a separate field, encodes them correctly, and gives you a ready-to-paste link — with source and medium marked required so you can't ship a link that GA4 can't file.

Build a tagged campaign URL

A naming convention that survives contact with a team

The single biggest cause of unusable campaign reports is inconsistency, not missing tags. Pick a convention once, write it down, and hold everyone to it.

1

Lowercase, always

UTM values are case-sensitive. Facebook, facebook and FaceBook are three separate rows in your report, splitting one campaign's numbers three ways. Lowercase everything, with no exceptions, and the problem disappears.

2

Hyphens between words, never spaces

A space becomes %20 or a + depending on how the link was encoded, and those two forms report separately. Hyphens are readable in a URL, safe everywhere, and consistent.spring-launch, not Spring Launch. Underscores work too — just don't mix both.

3

Fix your medium vocabulary to a short closed list

Medium is the field that decides your channel grouping, so it should be a controlled set, not free text: email, cpc, social, affiliate, referral, display. GA4 expects specific strings here — cpc and ppc map to Paid Search, email maps to Email — and inventing your own (e-mail, newsletter, paid) is the fastest route to an Unassigned bucket.

4

Keep source specific and medium generic

Source answers "which property?" and medium answers "what kind of traffic?" So utm_source=linkedin&utm_medium=social for an organic post and utm_source=linkedin&utm_medium=cpc for an ad on the same platform. If you find yourself putting a platform name in medium, the two are the wrong way round.

5

Keep one shared spreadsheet of every link built

One sheet with the date, the destination, every parameter value, and the finished URL. It is boring and it is the only thing that stops a second person inventing a second name for the same campaign six weeks later.

Where not to use UTMs

Never put UTM parameters on internal links. This is the most damaging UTM mistake, and it is common. When a visitor arrives from Google and then clicks an internally tagged link, GA4 sees new campaign parameters mid-visit and starts a brand new session, re-attributing that visitor away from organic search and onto your internal tag. The original source is destroyed, your session count inflates, and every conversion gets credited to the wrong channel. For measuring internal clicks, use event tracking — that is exactly what it is for.

Two more places to leave them off. Don't tag Google Ads links manually — auto-tagging's gclid parameter carries far richer data, and manual UTMs can override it. And don't put anything private in a UTM: these values sit in the URL, get pasted into chats, appear in referrer headers, and land in shared analytics reports. No names, no email addresses, no customer IDs.

The duplicate-content question

Tagged URLs are technically distinct URLs, so a crawler that finds one treats it as a separate page from the clean version. In practice this is rarely a serious problem — Google is good at consolidating parameter variants, and most tagged links live in email and ads where crawlers never see them. It becomes a real problem when tagged URLs get published somewhere public and start accumulating links of their own.

The protection is a self-referencing canonical tag pointing at the clean URL on every page, which you should have anyway — see the guide to duplicate content for how that works across the rest of a site. Don't block parameters in robots.txt to solve this; that stops the page being crawled without stopping it being indexed, which is worse.

Where the data shows up

In GA4, tagged traffic appears under Reports → Acquisition → Traffic acquisition, where you switch the primary dimension to Session source / medium or Session campaign. Add a secondary dimension of Session manual ad content to see utm_content. Data is not instant — allow up to 24–48 hours before deciding a tag didn't work, and test the link yourself first in the Realtime report, where a tagged visit shows within seconds.

Build your next campaign link

CheckSEO's UTM Link Builder takes each parameter as its own field, handles the encoding, and returns a finished campaign URL you can copy straight into an email or an ad — no manual query strings, and no typo that quietly splits a campaign into two rows.

Frequently asked questions

What are the 5 UTM parameters?

utm_source (where the traffic comes from), utm_medium (the channel type), utm_campaign (the specific promotion), utm_term (a paid keyword) and utm_content (which link or creative variant). Source and medium are the two that matter most — without them GA4 has nothing to file the session under.

What does UTM stand for?

Urchin Tracking Module. Urchin was the analytics company Google acquired in 2005 and rebuilt into Google Analytics. The product name changed and the parameter prefix never did, which is why the acronym no longer describes anything in the current tool.

Should I use UTM parameters on internal links?

No. When a visitor clicks an internally tagged link, GA4 sees new campaign parameters mid-visit, starts a fresh session and re-attributes them away from their real source. That inflates session counts and credits conversions to the wrong channel. Use event tracking for internal clicks instead.

Are UTM parameters case sensitive?

Yes, and this is the most common reason a campaign's numbers get split. Facebook, facebook and FaceBook report as three separate rows. Lowercase every value without exception, use hyphens rather than spaces, and keep a shared sheet of the links your team has already built.

Do UTM parameters hurt SEO or cause duplicate content?

Rarely in practice. Tagged URLs are technically distinct, but Google consolidates parameter variants well and most tagged links live in email and ads where crawlers never see them. A self-referencing canonical pointing at the clean URL covers the cases where tagged links do get published publicly.

Check your own site with the UTM Link Builder.

Open UTM Link Builder

More from the blog