Skip to content
Troubleshooting

UTM Parameters Not Working in GA4?

You added UTMs to your links. You checked GA4. Nothing's there. Here are the 10 most common reasons — and how to fix each one.

Updated April 2026 · 10 min read

Quick Diagnosis: Find the Problem in 3 Steps

Before going through all 10 fixes, run this quick test to narrow down where the problem is. It takes two minutes and saves you hours of guessing.

1

Open your UTM link in an incognito window

Paste your full UTM link into a private browser tab and hit Enter. After the page loads, check the address bar. Are the UTM parameters still in the URL? If they disappeared, a redirect is stripping them (see Fix #1). If they're still there, move to step 2.

2

Check GA4 Realtime report

Right after clicking your link, open GA4 and go to Reports → Realtime. Do you see your visit with the correct source and medium? If yes, GA4 is receiving the data — your problem is likely a reporting or delay issue (see Fixes #5 and #6). If no, something is blocking the data before it reaches GA4 (see Fixes #7, #9, #10).

3

Wait 24-48 hours and check Traffic acquisition

If Realtime looks fine, wait a day. Then go to Reports → Acquisition → Traffic acquisition. Switch dimension to Session source/medium. If your UTM data shows up here, everything is working — you were just checking too early.

#1: Redirects Are Stripping Your UTMs

This is the most common cause. Your UTM link looks fine, but between the click and the final page load, something redirects the URL and drops the UTM parameters along the way.

Common culprits:

HTTP to HTTPS redirect. Your link uses http:// but your site forces https://. The redirect sometimes drops the query parameters. Fix: always use https:// in your UTM links.

Trailing slash redirect. Your link goes to /pricing but your site redirects to /pricing/ (or vice versa). During the redirect, UTMs can get lost. Fix: check which version your site uses and match it in your links.

Link shorteners or tracking redirects. Some URL shorteners or click-tracking tools don't pass UTM parameters through their redirect. Test your shortened link in a browser to confirm the UTMs survive.

JavaScript or server-side redirects. Your site might redirect visitors (to a login page, localized version, or mobile version) and drop the UTMs in the process. Use the Chrome extension "Redirect Path" to see all redirects that happen after you click your link.

How to test: Paste your full UTM link in an incognito window. After the page loads, look at the address bar. If the UTMs are gone, a redirect is the problem. Install the "Redirect Path" Chrome extension to see exactly where they're being dropped.

#2: Typos in Parameter Names

GA4 only recognizes specific parameter names. If you misspell one, GA4 ignores it completely — no error message, no warning, just silence.

These are the exact parameter names GA4 supports:

utm_source · utm_medium · utm_campaign · utm_term · utm_content · utm_id · utm_source_platform

Common mistakes that break tracking:

utm-source → should be utm_source (underscore, not hyphen)

utm_surce → should be utm_source (typo)

utmsource → should be utm_source (missing underscore)

UTM_SOURCE → should be utm_source (parameter names must be lowercase)

The easiest way to avoid this: use a UTM builder tool instead of typing parameters by hand.

#3: Case Sensitivity Splitting Your Data

Your UTMs might be working perfectly — but your data looks wrong because GA4 treats uppercase and lowercase as different values.

For example, these three are separate sources in GA4:

utm_source=Facebook
utm_source=facebook
utm_source=FACEBOOK

Instead of one "facebook" row with 300 visits, you'd see three separate rows — making it look like each source is performing poorly when they're actually the same channel.

Fix: Always use lowercase for every UTM value. No exceptions. If your team has been using mixed case, you can't retroactively fix old data, but you can standardize going forward. Write down your naming rules and share them with everyone who creates links.

Our UTM best practices guide has the full naming convention framework.

#5: You're Looking at the Wrong GA4 Report

GA4 has multiple acquisition reports, and they show different things. This confuses a lot of people.

User acquisition report

Shows the source/medium of the first visit only. If someone first came from Google organic and later clicked your UTM email link, the User acquisition report still shows "google / organic". Your UTM won't appear here for returning visitors.

Traffic acquisition report ✓ (use this one)

Shows the source/medium of each session. This is where your UTM data appears. Go to Reports → Acquisition → Traffic acquisition and switch dimension to Session source/medium.

Also make sure you're looking at the right GA4 property. If you have multiple properties (test, staging, production), you might be checking the wrong one. It happens more often than you'd think.

#6: GA4 Data Processing Delay

GA4 is not real-time (except the Realtime report). Standard reports can take 24-48 hours to process data. If you just launched a campaign and immediately checked the Traffic acquisition report, your data might not be there yet.

Fix: Use the Realtime report for instant verification. If you see your visit there with the correct source/medium, everything is working — just wait a day for it to appear in the standard reports.

#8: Traffic Showing as "Unassigned" Instead of Your Campaign

This is a frustrating one. Your UTMs are working — you can see the correct source and medium in the source/medium report — but when you look at the default channel grouping, it says "Unassigned".

This happens because GA4 has built-in rules for mapping source/medium combinations to channels like "Paid Search", "Email", "Organic Social", etc. If your utm_medium value doesn't match any of GA4's expected values, it can't categorize the traffic and dumps it into "Unassigned".

For example, if you use utm_medium=paid_social but GA4's default rules don't include "paid_social", the traffic becomes Unassigned.

Fix: Two options.

Option 1: Use GA4's recognized medium values — "cpc" for paid search, "email" for email, "social" for organic social, "display" for display ads. Stick to standard values and GA4 categorizes automatically.

Option 2: Create custom channel groups. Go to Admin → Data display → Channel groups. Add rules for your custom medium values so GA4 knows where to put them.

We explain the full GA4 channel fix for specific platforms in our TikTok UTM generator (which covers fixing "Unassigned" for TikTok traffic specifically).

#9: Ad Blockers Are Preventing Tracking

Ad blockers and privacy extensions (like uBlock Origin, Ghostery, or Brave's built-in shields) can block Google Analytics entirely. When GA4 doesn't load, no UTM data gets recorded — regardless of how perfectly you set up your links.

Some privacy-focused browsers also strip query parameters from URLs, which removes your UTM tags before GA4 even has a chance to read them.

Fix: You can't force users to disable ad blockers. But you should be aware that a portion of your traffic (often 15-30% depending on your audience) will be invisible to GA4 regardless of your UTM setup. For your own testing, disable ad blockers in your browser before checking if UTMs work. If your test fails with ad blockers on but succeeds with them off, the UTMs are fine — it's just ad blocker interference.

For more complete tracking, consider server-side Google Tag Manager, which is harder for ad blockers to detect.

#10: GA4 Tag Missing on Landing Page

Sounds obvious, but it happens: the page your UTM link points to doesn't have the GA4 tracking code installed. This is common with:

New landing pages that were created after GA4 was set up, and the tag wasn't added to the new page template.

Third-party hosted pages like Chargify payment pages, Typeform surveys, or Calendly scheduling pages — these don't have your GA4 tag by default.

Subdomain pages where GA4 is installed on your main domain but not on a subdomain (like blog.yoursite.com or shop.yoursite.com).

Fix: Open your landing page in a browser. Right-click → View Page Source. Search for your GA4 measurement ID (starts with "G-"). If it's not there, the page isn't tracking anything. Install the GA4 tag on that page, or use Google Tag Manager to deploy it site-wide.

Quick Fix Checklist

  • UTM link loads without redirects stripping parameters
  • Parameter names are spelled correctly (utm_source, not utm-source)
  • All values are lowercase (facebook, not Facebook)
  • No UTM parameters on internal site links
  • Checking the Traffic acquisition report, not User acquisition
  • Waited 24-48 hours for GA4 to process data
  • Cookie consent banner is not blocking GA4 from firing
  • utm_medium values match GA4's default channel groupings
  • Ad blockers disabled during testing
  • GA4 tracking code is installed on the landing page

Frequently Asked Questions

Why is my UTM traffic showing as "Direct" in GA4?

The most common reasons: a redirect is stripping UTMs before the page loads, the GA4 tag isn't on the landing page, or consent mode is blocking analytics. Follow the quick diagnosis steps above to narrow it down. "Direct" in GA4 basically means "we don't know where this came from" — so the UTM data is getting lost somewhere between the click and GA4.

My UTMs show in Realtime but not in standard reports. Why?

GA4 standard reports take 24-48 hours to process. If you see data in Realtime, your tracking is working — you just need to wait. Check the Traffic acquisition report (not User acquisition) after a day. Also make sure your date range in the report includes the day you sent the test click.

Do I need to set up anything special in GA4 for UTMs to work?

No. GA4 reads UTM parameters from URLs automatically. You don't need to create custom dimensions, enable features, or configure anything. If GA4 is installed on your page and a visitor arrives through a URL with UTM parameters, the data is captured automatically.

Can Google Ads auto-tagging conflict with my UTMs?

It can. When Google Ads auto-tagging is enabled, GA4 uses the GCLID (Google Click Identifier) for attribution instead of your UTM parameters. If you want your manual UTMs to be used alongside auto-tagging, go to GA4 Admin → Data Streams → Web stream → Google tag settings and enable "Allow manual tagging to override auto-tagging".

Why do my UTMs work on desktop but not on mobile?

Some mobile apps (especially social media apps like Instagram and TikTok) open links in their built-in browser, which may handle redirects and cookies differently. Also, iOS privacy features can strip query parameters in some scenarios. Test your UTM links by opening them directly in a mobile browser (Safari/Chrome), not inside an app's built-in browser.

I'm using React / Vue / Angular — could that be the problem?

Yes. Single Page Applications (SPAs) don't do full page reloads when navigating. If your GA4 tag fires before the router finishes loading, or if the URL changes during routing, UTMs can get lost. Make sure GA4 fires after the initial route resolves, and that the page_view event captures the full URL including parameters.

Related Guides

Build UTM links that actually work

Our UTM builder generates correctly formatted links every time. No typos, no broken parameters.

Generate UTM Links Free