Why UTMs Don't Appear in GA4: 9 Causes and Step-by-Step Fixes

UTM parameters missing in Google Analytics 4? Review possible causes and steps for checking campaign data in GA4 reports.

Diagnostic diagram showing 9 failure points where UTM parameters are dropped before reaching GA4
Table of Contents
  1. Quick Diagnostic Checklist: 9 Possible Causes
  2. Cause 1: GA4 Data Processing Latency (24-48 Hours)
  3. Cause 2: Server 301/302 Redirect Stripping Parameters
  4. Cause 3: Single Page Application (SPA) Route Wiping
  5. Cause 4: Differently Capitalized Values in Reports
  6. Step-by-Step Repair Protocol

You tagged the link, but the campaign is missing from GA4. Start by checking the final landing URL, then confirm that the right analytics property received the visit. Work through these nine possible causes before changing your campaign setup.

Quick Diagnostic Checklist: 9 Possible Causes

  1. Standard Report Latency: GA4 standard reports have a 24-48 hour processing delay. Check Realtime or DebugView instead.
  2. Server Redirect Drops: Your web server redirects HTTP to HTTPS, non-www to www, or adds a trailing slash, stripping the query string.
  3. Hash Symbol (#) Before Query String (?): Placing an anchor hash before UTMs hides them from the server and analytics library.
  4. Single Page App (SPA) Router Overwrites: React/Vue routers wipe window.location.search before the GA4 config tag fires.
  5. Ad Blockers & Privacy Extensions: Testing with Brave or uBlock Origin blocks the google-analytics.com/g/collect endpoint.
  6. Consent Management (CMP) Blocking: Your cookie banner blocks the Google tag until the visitor accepts analytics consent.
  7. Cross-Domain Link Loss: Traffic traversing multiple subdomains or domains without GA4 linker parameter (_gl).
  8. Missing utm_source: Passing utm_campaign and utm_medium without utm_source causes GA4 to discard manual campaign attribution.
  9. Internal Traffic Filter Enabled: Your IP address is filtered out under GA4 Internal Traffic filters.

Cause 1: GA4 Data Processing Latency (24-48 Hours)

Unlike Universal Analytics, which updated standard reports within a few hours, GA4 can take up to 24 to 48 hours to process data into standard acquisition dashboards (e.g. Traffic acquisition). If you launched your campaign this morning, it is normal not to see it in standard reports yet.

Cause 2: Server 301/302 Redirect Stripping Parameters

Test your live link in browser terminal with curl:

curl -ILs "https://example.com/promo?utm_source=meta" | grep -iE "HTTP|location"

If the Location: header shows https://example.com/promo/ without ?utm_source=meta, your server rewrite configuration is deleting query parameters!

Cause 3: Single Page Application (SPA) Route Wiping

In modern Next.js, React, or Angular apps, client-side routers often execute a "clean URL" rewrite upon mount, stripping query strings to keep the address bar clean. If this router clean-up runs before gtag('config') reads window.location.search, GA4 captures a blank query string!

Cause 4: Differently Capitalized Values in Reports

Manual source values with different capitalization can appear as separate values in reports. If a report filter is set to facebook, check whether the data contains a differently capitalized value such as Facebook. A consistent lowercase naming convention can make report filters and comparisons easier to manage.

Step-by-Step Repair Protocol

  1. Verify link syntax using UTM Checker.
  2. Fix server redirect rules to include query string preservation.
  3. Test in a clean Incognito session with an ad blocker disabled.

For the broader setup, read GA4 UTM Tracking Troubleshooting Guide: Root Causes, Debugging & Solutions. Browse the GA4 Attribution & Troubleshooting guides to choose another troubleshooting task.

References