UTM parameters feel like a solved problem. Add ?utm_source=linkedin&utm_medium=social to your links, and attribution just works. Except it often doesn’t. Broken UTM parameters are one of the most common causes of wrong but plausible attribution data — and wrong-but-plausible is far more expensive than data that’s obviously broken.
What “broken” actually means
A UTM parameter is broken anytime it fails to do its one job: travel from the link click through to the analytics event or CRM record that represents the conversion.
Brokenness has several forms:
Never attached. Someone posts a link without UTMs. Every click registers as direct traffic, even if the post was a paid placement.
Attached but malformed. utm_source=LinkedIn (capitalized) and utm_source=linkedin are treated as two different sources by most tools. Over time you accumulate fragmented, uncombineable source data.
Attached but stripped mid-funnel. The user clicks your UTM-tagged link, but navigates to a page that doesn’t preserve URL parameters — a subdomain hop, a server-side redirect, a SPA router that resets on navigation. The UTM was present at the door; it never made it inside.
Attached but never written to the conversion record. Your analytics tool sees the UTM on the landing page. Your form submit fires correctly. But the UTM value was never passed to the CRM or your sign-up database. The conversion is orphaned — it happened, but the source is unknown.
Attached twice. Someone shares an already-tagged URL and tags it again. The result is a URL like ?utm_source=email&utm_medium=newsletter&utm_source=twitter — technically invalid, and handled inconsistently by different platforms.
How broken UTMs corrupt budget decisions
Here’s a real pattern that plays out in marketing teams every quarter.
You run three channels: paid search, LinkedIn organic, and a newsletter. Paid search has clean UTM tagging because the ad platform handles it automatically. LinkedIn posts are tagged inconsistently — some people on the team remember, some don’t. Newsletter links are tagged, but your email tool wraps them in a redirect that strips query parameters.
After three months, your attribution data shows:
- Paid search: 180 conversions, $28 CAC
- Direct/unknown: 140 conversions, no cost attributed
- LinkedIn: 45 conversions, high CPL
- Newsletter: 12 conversions, high CPL
You conclude paid search is your best channel. You scale it. You cut LinkedIn posting and reduce newsletter frequency to save time.
But the 140 direct/unknown conversions were mostly newsletter and LinkedIn traffic that lost their UTMs. Paid search looked cheap because its volume was real. Newsletter and LinkedIn looked expensive because their volume was invisibly absorbed into direct.
You just made a major budget decision based on attribution that was structurally broken in a way that systematically favored the one channel with automated tagging.
The compounding effect
This kind of error doesn’t stay static. When you cut LinkedIn and newsletter, you reduce the volume of untracked conversions. Direct drops. Paid search’s share grows. The data looks cleaner and more consistent — which feels like confirmation you made the right call. The feedback loop is self-reinforcing.
Six months later, pipeline slows and no one can explain why.
Why UTM hygiene is a budget problem, not a housekeeping problem
Marketing operations teams often position UTM governance as a cleanliness issue — keep the data tidy, avoid duplicate sources, maintain a naming convention. That framing undersells it.
UTM hygiene is directly equivalent to budget governance. Every untagged link is a budget allocation decision made without data. Every malformed parameter is a fractured view of a channel’s actual performance. Every stripped UTM in a redirect is a conversion that cost real money but appears to have arrived for free.
The cost of sloppy UTM practices isn’t messy spreadsheets. It’s misdirected spend, compounding over every budget cycle where the broken data is used as input.
The practical fix
Establish a naming convention and write it down
Decide on a canonical format before you tag a single link. Common choices:
- Lowercase everything. No exceptions.
linkedinnotLinkedIn. - Hyphens, not spaces or underscores.
paid-searchnotpaid searchorpaid_search. - Enumerated values for source and medium. Don’t let anyone free-type these fields. Use a short, maintained list:
google,linkedin,twitter,newsletter,partner. Every value outside the list is a signal something was tagged ad-hoc.
Audit your redirects
Map every redirect in your funnel. Any server-side redirect (301/302) that doesn’t explicitly pass query parameters will silently strip UTMs. This includes many email platforms, link shorteners, and CMS configurations. Test each one manually: click a tagged link, follow it all the way to the landing page, and confirm the UTMs survived.
Capture UTMs at landing, not at conversion
Don’t rely on UTMs being present in the URL at the moment of conversion. Capture them on the first page load, store them in a first-party cookie or sessionStorage, and read them back when the conversion event fires. This decouples UTM persistence from URL persistence — the user can navigate around your site, and the UTM data stays available.
Use a link management tool with enforced fields
Free-form UTM tagging in spreadsheets is where conventions go to die. A link management tool that requires source, medium, and campaign before generating a link — and enforces the naming convention — eliminates the human error problem at the source. It also gives you a canonical record of every tagged link ever created, which is invaluable when auditing discrepancies.
Audit quarterly
Pull a report of all traffic sources from the past 90 days. Any (direct)/(none) traffic that exceeds 15–20% of your total is worth investigating. Check for source values that look like mis-tags (LinkedIn, linkedIn, li). Check for high-converting source/medium combinations with suspiciously round or suspiciously zero numbers.
The standard to hold yourself to
Every deliberate marketing touchpoint should carry a UTM parameter. Every UTM parameter should use the canonical naming convention. Every UTM should survive to the conversion record intact.
That’s it. It’s not technically complex. The gap between knowing this and actually maintaining it is discipline and tooling — not expertise.