Docs · UTMs

How to Optimize UTM Tags Across Your Campaigns

Which parameters matter, how GA4 maps them to channels, and the governance habits that stop your source/medium report from rotting.

· Updated

Most analytics accounts aren’t missing UTMs. They’re drowning in bad ones: mixed case, invented mediums, internal links that restart sessions, and paid social tagged as organic. Fixing that is less about “more parameters” and more about a short, enforced vocabulary.

If you buy traffic in Google Ads, pair this with tracking template vs Final URL suffix and the Ideal Configuration — UTMs usually belong in the suffix, not the template. For paste-ready strings, use Spectacle google/cpc, Search UTMs, or draft one-offs in the Campaign URL builder.

What each parameter is for

Five standards, plus a few GA4 extras. The names look interchangeable; the reports treat them very differently.

GA4 also accepts utm_source_platform, utm_creative_format, and utm_marketing_tactic. Useful once you actually report on them. Until then, skip them — every unused parameter is another way to break a URL.

Treat utm_medium as a controlled vocabulary

Default channel grouping is a pile of regexes over source, medium and campaign. Miss the pattern and traffic lands in Unassigned — or worse, the wrong channel.

Write down ≤10 allowed mediums. Anything else is a bug. Meta / LinkedIn / TikTok paste packs on this site already use paid_social or cpc on purpose — see Calendly Meta UTMs and Spectacle Meta.

Lowercase everything

Values are case-sensitive. Email and email never merge. Same for campaign names. Don’t rely on people remembering — generate links from one tool that lowercases on output (our Campaign URL builder is fine for one-offs; agencies usually wrap a sheet with dropdowns).

If you already have years of dirty data, normalise in BigQuery from the raw page location. GA4 won’t fix casing in the built-in dimensions for you.

Don’t put UTMs on internal links

Tagged links between your own pages start a new session and overwrite acquisition. Paid click → internally tagged banner → conversion credited to the banner. Paid looks dead; the banner looks genius.

Use GA4 view_promotion / select_promotion (or custom events) for on-site promos. UTMs are for inbound traffic only.

Separators, encoding, privacy

Tag the channels people forget

ChannelUsual gap
Paid searchSearch is fine; PMax / Shopping often aren’t. Check suffixes there too.
Paid socialPlatform “URL parameters” defaults are incomplete — set per ad set.
EmailESP defaults invent mediums. Override to email.
Organic socialAlmost never tagged. Tag every profile link you post.
AffiliatesGive partners pre-built URLs; don’t let them freestyle.
PDFs / decksLinks inside downloads rot for years.
QR codesutm_medium=qr + a location campaign.
Signatures / pushLow volume, high intent, invisible without tags.

Names vs IDs

Platform macros that resolve to IDs ({campaignid}, Meta {{campaign.id}}) survive renames. Friendly names in utm_campaign are easier to read and fragment the moment someone “cleans up” naming in Ads Manager.

Best of both: IDs in the URL, names joined in BI. No warehouse? Use names and treat a rename as a breaking change. That’s why our Google Ads recipes default to {campaignid} in the Ideal tracking-template setup.

Governance beats clever parameters

The highest-leverage fix isn’t another UTM key. It’s ownership.

Keep the set small

Source + medium + campaign done consistently beats seven parameters done “sometimes”. Add utm_content / utm_term when a report needs them — not because a blog checklist said so.

FAQ

Is utm_medium=social or paid_social right for paid Meta ads?

Use something paid: paid_social, cpc, paid. Plain social usually lands in Organic Social in GA4.

Are UTM values case-sensitive?

Yes. Enforce lowercase at generation time.

Should I add UTMs to internal site links?

No. It restarts the session and overwrites acquisition. Use events / promotions instead.

Do UTMs hurt SEO?

They create alternate URLs for the same page. Use a self-referencing canonical on the clean URL. Ad and email clicks rarely get crawled, but the canonical is cheap insurance.

How many parameters should I use?

Three done well first. Expand only when reporting requires it.

What’s utm_id for?

GA4 manual campaign ID and the join key for imported cost data from non-Google platforms.

Related

← All documentation