UTM Parameters Lost After a Redirect: Why It Happens and How to Fix It

UTM parameters stripped after a redirect? Here's why UTMs go missing in GA4 (shows as direct/none), how to spot it in your browser, and the plain-English fix.

You spent twenty minutes tagging the perfect link. You launched the campaign. You opened GA4.

(direct) / (none).

When UTM parameters get lost after a redirect, it almost never looks like a bug. Your link works. The page loads. The only thing missing is the tracking, and GA4 just quietly credits the session to direct traffic.

This post covers why it happens, how to spot it without a developer, and what to do about it.

The quick version

A UTM tag is the little tail on a link that tells analytics where a visitor came from:

yourdomain.com/pricing?utm_source=linkedin

When someone clicks your link they don't always land on the final page right away. They get redirected. Old URL to new URL. Marketing page to app page. Branded short link to real destination.

Every redirect is a chance for the tracking tail to get chopped off. When that happens, GA4 sees the visitor arrive with no source and labels the session direct, as if they typed the URL themselves.

That is the entire reason UTM parameters get stripped. The rest of this post is how to find where it's happening to you.

How to check if your UTM is not showing in GA4

You don't need a developer for the test. Do it from a browser:

  1. Take one of your tagged links, the long one with ?utm_source=... on the end
  2. Paste it into a new tab and press enter
  3. Once the page finishes loading, look at the address bar

If the UTM part is still there, the link is fine. If the URL now ends at /pricing with nothing after it, the redirect is stripping your tracking. Every click on that link is being logged as direct.

Run this check on every link in your campaign. It takes about a minute per link and it's the single most useful thing you can do for report accuracy.

Where the stripping usually happens

Four common spots, roughly in order of frequency:

1. Old-URL-to-new-URL redirects on your own site. Someone on your team set up a redirect from /old-pricing to /pricing and forgot to carry over the query string. This is by far the most common cause of UTM parameters stripped between click and pageview.

2. Marketing site to app redirect. The link lands on your marketing site, which kicks the visitor to your app signup page. If that kick drops the tracking, everyone from that campaign shows up as direct inside the app.

3. Cookie consent banners. Some cookie popups reload the page after the visitor clicks Accept, and the reload drops the query string. If your bounce rate jumped the week you added a cookie banner, check this first.

4. CNAME redirect on your branded short domain. If you use something like go.yourbrand.com/launch, that's an extra hop where tracking can fall off. The same browser test above covers this case too.

What to tell your developer

If you find a broken link and need your dev team to fix it, send them this one sentence:

The redirect at [URL] is not forwarding the query string. Please configure it to preserve all query parameters on the redirect.

That's the phrase that turns a week of back-and-forth into a 10-minute fix. Every web server (Nginx, Apache, Next.js, Rails, any of them) has a setting for this. The developer just needs to know what to enable.

The payment gateway problem

A different bug with the same symptom:

Someone clicks your tagged link, lands on your page correctly, then clicks Checkout and goes to Stripe or PayPal. When they come back, GA4 sometimes credits the sale to stripe.com instead of your LinkedIn campaign.

The fix takes about 90 seconds in GA4:

  1. Open GA4, then Admin, then Data Streams, then your stream
  2. Click Configure tag settings
  3. Find List unwanted referrals
  4. Add stripe.com, paypal.com, and any other payment or auth domains you use

Those domains now stop stealing credit from your real traffic sources.

How ClickDash handles this

Short links built in ClickDash forward every tracking parameter from the short URL to the final destination. Whatever you put on the short link is what reaches the landing page. No silent stripping.

You can also use ClickDash to skip the problem altogether. If your current flow is:

tagged link -> marketing page -> app signup

and the marketing-to-app hop is where UTMs go missing, swap it for:

ClickDash short link -> app signup

One hop, nothing to break, and the redirect is fast because it's cached in memory. The typical end-to-end time is under 50ms.

Your five-minute checklist

  • Click-test every tagged link in your active campaigns. If the UTMs disappear in the address bar, flag it
  • Send the broken ones to your developer with the sentence above
  • Add your payment processors to GA4's unwanted-referrals list
  • Run the same browser test on your short-link service
  • If you don't have a short-link service that preserves parameters, switch to one that does

Fix these five things and your GA4 reports start reflecting reality. Skip them and you're making budget decisions on ghost traffic.

Try ClickDash free