Panther Hook Blog
Attribution & Tracking

Why Redirects Break Campaign Attribution (and How to Test Them)

Diagnose lost UTM and ad click parameters through redirects, short links, different domains and form confirmation pages.

FOLLOW THE HOPSAd URL302Form?utm_source=... → ?

The click arrived, so where did the parameters go?

An ad can send a visitor to a URL containing campaign tags and an ad click identifier. A short-link service, canonical redirect, localization router, consent layer or landing-page script may then replace the URL. If that hop discards the query string, the final form no longer sees the original parameters.

The campaign may still be running normally. It is the measurement chain that has broken. Before changing an advertising campaign, reproduce the complete redirect sequence with a test URL containing obvious non-sensitive markers.

Follow the entire redirect chain

Start with the exact ad destination, not only the URL visible after the page loads. Inspect each HTTP Location header and any client-side navigation. Verify that required parameters either survive the transition or are captured through a permitted first-party mechanism.

An absolute redirect URL with a hard-coded query string can silently drop parameters from the incoming request. A relative redirect may preserve or replace them depending on how the URL is constructed. Do not blindly copy arbitrary query parameters into sensitive destinations: allowlist those you actually require.

Common parameter-loss locations
HopWhat can go wrongTest
Short linkQuery string is overwrittenResolve full destination
HTTP 301/302Location omits parametersInspect response headers
Client-side routerNavigation rebuilds clean URLWatch browser history
Cross-domain hopStored context does not carry overVerify consent and transfer design
Form postAttribution never enters payloadInspect submitted request

A reproducible smoke test

A HEAD request is only an initial check: some sites implement GET and HEAD differently. Complete the test in a real browser and confirm what your final form submits. Use a test token instead of a real GCLID or customer record.

bash
# Inspect redirects without sending a real customer identifier.
curl -IL --max-redirs 8 \
  "https://example.com/landing?utm_source=qa&utm_campaign=check"
# Then inspect the actual form submission in browser DevTools.

Keep reporting boundaries clear

  • Use the original landing request to identify whether tags arrived at all.
  • Preserve only allowed campaign parameters across necessary hops.
  • Test final submissions as well as thank-you pages.
  • Document attribution expiry and consent requirements.
  • Do not assume that keeping a click ID guarantees the ad platform will attribute a later conversion.
See attribution capture and consent setup