Full Answer
UTM loss isn't one bug; it's a chain where any weak link drops the data. The first link is redirects. Every hop that rebuilds the URL without preserving the query string silently discards your campaign tags: a forced HTTP-to-HTTPS upgrade, a redirect to a regional or mobile subdomain, a vanity link, or a URL shortener that forwards to a clean URL.
The second link is your own infrastructure. CDN edge rules and caching layers sometimes strip query strings to improve cache hit rates, and payment gateways that bounce a buyer off-site and back rarely return them with UTMs intact. None of this shows up in a dashboard; the order just arrives with no source attached.
The third link is the browser. Safari's Intelligent Tracking Prevention and privacy extensions recognise utm_source and friends as link decoration, and community filter lists like EasyList and AdGuard match those exact parameter names. The fix isn't to hunt each culprit forever. It's to stop depending on parameters that browsers and middleboxes are free to delete: capture attribution server-side at the order, and use coded parameters that filter lists don't recognise by name. That moves the durable record off a fragile address bar and into data you actually own and control.