Campaign tracking field guide
A GA4 UTM naming convention that stays clean
GA4 treats your utm_ values as literal, case-sensitive text. A convention is not decoration; it is the difference between one tidy campaign row and five near-duplicates that split your numbers.
Reviewed against primary sources ·
At a glance
utm_ parameters describe how you labelled a link. They set the source, medium, campaign, and related dimensions GA4 records — they do not create sessions, guarantee a channel assignment, or measure quality on their own.
What each parameter feeds in GA4
GA4 reads the utm_ parameters on the landing URL and records them as campaign dimensions on the session. Source, medium, and campaign are the ones you should treat as mandatory; the rest are optional detail. Every value is stored as literal text, so Email and email are two different values.
| Parameter | GA4 dimension | Required? | Example value |
|---|---|---|---|
utm_source | Session source | Yes | newsletter |
utm_medium | Session medium | Yes | email |
utm_campaign | Session campaign | Yes | spring-sale-2026 |
utm_id | Session campaign ID | Optional | 2026-spring-01 |
utm_content | Session manual ad content | Optional | header-cta |
utm_term | Session manual term | Optional | running-shoes |
GA4 also recognises utm_source_platform, utm_creative_format, and utm_marketing_tactic. They are genuinely optional; add them only if a report will use them, because every extra slot is one more value to keep consistent.
One meaning per slot
Decide what each parameter answers and never let it drift. When two people disagree about whether the platform goes in source or medium, the campaign report is where the argument surfaces — as two rows that should have been one.
- source — the specific origin:
newsletter,facebook,partner-acme,instore-poster. - medium — the marketing category:
email,cpc,social,qr,affiliate. - campaign — the initiative, dated so it stays unique:
spring-sale-2026. - content — which creative or placement, for A/B splits:
hero-avshero-b. - term — the keyword, mostly for paid search you tag by hand.
Medium is not free text — it drives your channels
GA4 maps source and medium into a default channel group. Values such as email, affiliate, cpc, and organic match rules GA4 already understands; an invented value such as e-mail or Paid_Social can land the traffic in Unassigned or the wrong channel. Pick medium values that align with GA4's channel definitions, and reserve creative freedom for the campaign name.
Casing and separators, decided once
Because GA4 stores values verbatim and compares them case-sensitively, the mechanical rules matter more than they look. Adopt these and enforce them in the builder, not in people's memory:
- Lowercase everything.
Facebook,FACEBOOK, andfacebookare three rows otherwise. - Hyphens between words, never spaces. A space becomes
%20and reads badly:spring-sale, notspring sale. - Pick one separator and keep it. Do not mix
spring-saleandspring_sale; they will not aggregate. - No brand punctuation, accents, or emoji. Keep values to
a–z,0–9, and hyphens. - Date the campaign name (
-2026-q2) so recurring sends stay distinct year to year.
When to add a campaign ID
utm_id is a stable identifier for a campaign, independent of its human-readable name. Use it when you need to reconcile GA4 with an external system — an ad platform, a CRM, or a finance sheet — that already has its own campaign IDs. The name can stay friendly (spring-sale-2026) while utm_id carries the machine key (2026-spring-01). If you have no such system to join against, you do not need it; an unused ID is just another field to mistype.
Never put UTMs on internal links
This is the mistake that quietly ruins attribution. Google's Campaign URL Builder is meant for links that point to your site from external sources. When a visitor clicks an internal link that carries utm_parameters, GA4 can attach those new campaign values to events collected after the click. Google explicitly says a mid-session campaign change does not start a new session and does not replace the traffic-source values already associated with that session; the new values can still affect event-scoped attribution. A person who arrived from google / organic and clicked an internal utm_medium=banner link has now added a made-up acquisition campaign to later event data even though the banner brought nobody to the site.
Rule: tag inbound links only. For on-site promos, links between your own pages, or buttons in your own app, use normal URLs with no utm_ parameters. If you need to measure on-site clicks, use GA4 events, not campaign tags.
Ownership and governance
A convention only survives if someone owns it. Keep the taxonomy where the team can see it and generate links against it, rather than trusting each marketer to remember the rules under deadline.
- One source of truth. A single sheet lists the allowed
sourceandmediumvalues and the campaign-name pattern. - A named owner. One person approves new source or medium values so the list does not sprawl.
- Closed lists where it counts. Treat medium as an enumerated list; leave campaign and content open but pattern-checked.
- Build, don't hand-type. Generate every link from the builder so casing and separators are applied automatically.
- Review the sprawl quarterly. Scan the campaign report for near-duplicates and fix the process that produced them.
Reusable templates
Adapt these patterns, keep them lowercase and hyphenated, and store the filled-in versions in your taxonomy sheet.
Email newsletter
https://example.com/spring
?utm_source=newsletter
&utm_medium=email
&utm_campaign=spring-sale-2026
&utm_content=header-ctaPaid social, two creatives to compare
https://example.com/spring
?utm_source=facebook
&utm_medium=paid-social
&utm_campaign=spring-sale-2026
&utm_content=video-a (vs video-b)Reconciling with an external campaign ID
https://example.com/spring
?utm_source=partner-acme
&utm_medium=referral
&utm_campaign=spring-sale-2026
&utm_id=2026-spring-01The same convention feeds a QR campaign — the printed code is simply one of these tagged URLs. Keep source, medium, and campaign identical so the poster shows up in the same campaign row as its digital siblings.
Primary sources
Checked on . Google Analytics changes; the official pages below remain the authority for current behaviour.
- Google — Collect campaign data with custom URLs [GA4] ↗The primary reference for the recognized utm_* parameters, their GA4 dimensions, and which parameters Google recommends.
- Google — Campaign URL Builder ↗Google's official tool for assembling tagged URLs; it directs marketers to tag inbound links from external sources, not internal navigation.
- Google — Default channel group [GA4] ↗How GA4 maps source and medium into channels; explains why utm_medium values must match the terms GA4 already understands.
- Google — Campaigns and traffic sources ↗Google's collection and processing reference, including how campaign values received during an existing session apply to events without starting a new session or replacing that session's traffic source.
- Google — Key events and conversions [GA4] ↗Defines key events (formerly conversions) and how you mark an event as a key event; a scan or a visit is not automatically either.