UTM URL Generator Free UTM builder

Guide

How to see UTM parameters in GA4

The tags are collected on the landing pageview. You look at session dimensions, not a report literally named “UTM.” This page is the click-path in the interface. How the fields are stored is GA4 UTM tracking.

Standard reports: Traffic acquisition

Open Reports → Acquisition → Traffic acquisition. The table often starts on Session default channel group. That is a bucket (Paid Search, Email, Unassigned), not the raw UTM. To see the tags:

  1. Open the dimension dropdown above the table.
  2. Switch to Session source / medium. You should see pairs like google / cpc and facebook / paid_social.
  3. Add a secondary dimension, or switch primary to Session campaign, to see utm_campaign.

Session source is utm_source. Session medium is utm_medium. Session campaign is utm_campaign. If you only look at channel group, a bad medium hides as Unassigned and you will think “UTMs are not working” when they are working and the value is just one GA4 does not group. Fix that in Unassigned traffic.

Explorations for term and content

Standard reports hide utm_term and utm_content more often than source and campaign. In Explore, create a free-form exploration. Dimensions to add:

  • Session source, Session medium, Session campaign
  • Session manual term (term)
  • Session manual ad content (content)

Use a date range that includes your test. Filter to the campaign name you just shipped so the table is not the whole site. If those dimensions are empty but campaign is filled, you never set term or content — that is optional, not a bug.

First user vs session

GA4 also stores First user source, medium, and campaign: the tags on the hit that started the user. A later email click can change session campaign while first user stays the original paid click. For “what sent this visit,” use session. For “how did we acquire this user,” use first user. Mixing them in one slide is how two analysts both look correct and still fight. More on that split: GA4 campaign tracking.

A four-minute test that actually finishes

  1. Build a link in the campaign URL builder. Use a throwaway campaign name such as qa-desk-2026-08-30 so you can find it.
  2. Open it in a private window. Accept or dismiss consent the way a real visitor would; a blocked tag collects nothing.
  3. If you have access: enable debug mode (GTM preview, or the GA Debugger extension) and watch Admin → DebugView for the page_view. Confirm campaign parameters on that event.
  4. Check Reports → Realtime for a coarse “someone is here.” Do not expect Traffic acquisition to update in two minutes.
  5. The next morning, filter Traffic acquisition to qa-desk-2026-08-30. Confirm source, medium, campaign, and channel group.

Score the URL before you click it: UTM validator. If you only care whether the medium will group, use the channel checker first so you do not wait overnight to learn you used promo.

If the row is missing or wrong

What you seeUsual causeWhat to do
Nothing in DebugViewTag did not fire (consent, blocker, wrong container)Fix the tag. UTMs cannot report a hit that never ran.
Session exists, campaign (not set)Missing utm_campaign or query strippedDecode the final URL in the decoder.
Channel group UnassignedMedium not in a default ruleChange the medium. Do not wait for a custom channel unless you mean to.
Google Ads clicks, no google / cpcgclid dropped or accounts not linkedAuto-tagging and the click ID inspector.
Looks like yesterday’s emailYou are on First user, or last-click from a later sessionSwitch to session dimensions. Read ads vs GA4.

FAQ

UTM builder questions

Where do I see UTM parameters in GA4?

There is no report titled UTM. Open Reports → Acquisition → Traffic acquisition. Use Session source / medium and Session campaign. Term and content are usually added in Explorations as Session manual term and Session manual ad content.

Why is my test click not in the report yet?

Standard reports are not realtime. Use Admin → DebugView with a debug hit, or Reports → Realtime for a coarse check. Traffic acquisition can lag hours. Do not rebuild the taxonomy because a click from ten minutes ago is missing.

What does (not set) mean on Session campaign?

The landing pageview did not include utm_campaign (or the query was stripped). Source and medium can still be present. Add the missing campaign and retest.