Attribution · Sprites diagnoses this

UTM parameters not showing in GA4

If the UTMs reach the page but GA4 does not show them, GA4 either never read them or overrode them. The common reasons are looking at the wrong report scope, a tag that fires after the URL changes, gclid taking priority over manual tags on Google clicks, and data that is still processing. Check the Traffic acquisition report at session scope before anything else.

$1 today. Cancel anytime before day 7.

What Sprites checks

  • ?Session source / medium(not set) on 12% of sessions
  • ✓First page_view locationUTMs present
  • ✓Google Ads link in GA4Linked, auto-tagging on
  • !Custom channel rulespaid-social not matched
Illustration of a typical broken account. Your own readout comes from your account.

Why it happens

Wrong report or scope

  1. Wrong report or scope

    User acquisition shows first user source, not the session. A returning visitor from your new campaign shows under the old source there.

  2. gclid overrides UTMs on Google clicks

    With auto-tagging on, GA4 takes campaign data for Google Ads clicks from gclid, not from your utm_campaign.

  3. utm_medium does not match a channel rule

    GA4 builds the Default Channel Group from utm_source and utm_medium. A medium like "paid-social" or "Paid" that no rule matches lands in Unassigned.

  4. The tag reads a cleaned URL

    A redirect or a client-side route change removed the UTMs before the first page_view fired.

  5. Data still processing

    Standard reports can take 24 to 48 hours. Realtime shows the visit sooner.

How to line them up, step by step

  1. Open Traffic acquisition

    In GA4 go to Reports, then Acquisition, then Traffic acquisition, and switch the primary dimension to Session source / medium or Session campaign.

  2. Watch one tagged visit live

    Open Admin, then DebugView, load a tagged URL with the Google tag debugger on, and check page_location on the first page_view includes your UTMs.

  3. Use standard medium values

    Use cpc, paid_social, email and similar values GA4 recognizes. Check your channel groups under Admin, then Data display, then Channel groups.

  4. Check the Google Ads link

    Under Admin, then Product links, then Google Ads links, confirm the link is active. Google Ads clicks get their campaign from gclid through it.

Steps checked against Google Analytics Help: Collect campaign data with custom URLs; Google Analytics Help: Default channel group; Google Analytics Help: Traffic acquisition report.

Sprites diagnoses this

Sprites diagnoses it

Sprites reads your GA4 property and its traffic so you see which campaigns land unattributed.

What Sprites does

  • Reads the GA4 property setup: key events, linked Google Ads accounts and data streams, and names anything missing.
  • Breaks sessions down by channel, source and medium and by landing page, so Unassigned and (not set) traffic shows where it lands.
  • Splits GA4 conversions by linked Google Ads campaign beside the totals.

What it doesn't do

  • It does not edit GA4 settings, channel groups or your tags.
  • It does not rewrite your UTMs.

Questions

Why does GA4 show (not set) for my campaign?

The session had no campaign value GA4 could read, often because the UTMs were stripped before the tag fired or because the event was not tied to a session.

Why is my traffic Unassigned in GA4?

Your utm_source and utm_medium values did not match any rule in the Default Channel Group. Use standard medium values like cpc or paid_social.

Are UTMs case sensitive in GA4?

Yes. Facebook and facebook show as two sources. Pick lowercase and stick to it.

How long until UTMs show in GA4 reports?

Realtime shows them within minutes. Standard reports can take 24 to 48 hours.

See where it breaks

Connect your accounts. Sprites reads them side by side and shows you exactly where the numbers split.