UTM Link Rot: Auditing Years of Broken Campaign Tags Before You Trust Another Report
Every attribution report is only as good as the tags feeding it, and most businesses have never actually looked under the hood. 💖 We've opened GA4 accounts where "Facebook," "facebook," "FB," and "fb_ads" are all sitting as separate rows in the same source column — meaning the real paid social number is split four ways and looks far weaker than it actually is. Nobody lied to anyone; it just accumulated, one hastily built campaign link at a time, over several years and several different people touching the account.
What most businesses get wrong
The core problem is that nobody owns the UTM taxonomy. A marketing coordinator tags one way, an agency tags another, a well-meaning staff member builds a link by hand in five minutes without checking the convention, and a platform's auto-tagging (like Google's gclid or Meta's fbclid) sometimes clashes with manual UTMs on the same link. None of this breaks anything visibly — GA4 still happily logs the session — it just fragments your data so quietly that most businesses never notice until someone asks "which channel actually drives the most bookings?" and the honest answer is "we can't tell, because it's split across eleven near-identical campaign names."
- 1. Export the data. In GA4, go to Reports → Acquisition → Traffic acquisition, group by Session source/medium, and pull a 24-month lookback into a spreadsheet (use Explore for more granular campaign-level breakdowns).
- 2. Hunt for near-duplicates. Sort alphabetically and look for casing variants (Email/email), spelling variants (newsletter/news-letter), and delimiter inconsistencies (paid_social vs paid-social vs paidsocial).
- 3. Check for tagging gaps. Look at spikes in "(not set)" or "(none)" around specific campaign launches — often a sign a batch of links went out untagged.
- 4. Spot-check destination URLs. Pull your top 20 historical campaign links and check each one actually resolves (not a 404, not stuck in a redirect chain) using a free bulk URL/HTTP status checker.
- 5. Check for auto-tagging conflicts. Confirm Google Ads auto-tagging (gclid) isn't being overridden or duplicated by manually added UTMs on the same ad — this causes double-counted or misattributed sessions.
- 6. Standardise going forward. Write down one naming convention (we like all lowercase, hyphen-separated, e.g. utm_source=facebook&utm_medium=paid-social&utm_campaign=eofy-sale-2026) and build a shared link-builder spreadsheet with dropdowns so nobody free-types a tag again.
How to actually run the audit
Block out a half-day rather than trying to do this in spare five-minute gaps — it's genuinely easier to spot patterns when you're looking at the full 24-month export at once rather than piecemeal. Use a pivot table on source/medium/campaign to surface the near-duplicates fast, and don't be afraid to involve whoever built the original campaigns if they're still around — they'll often remember exactly when and why a convention changed. For the destination URL check, a simple bulk HTTP status checker will flag 404s and redirect chains in minutes rather than clicking through dozens of links by hand. Once the audit's done, the real work is the boring part: get everyone who builds a campaign link — in-house, freelancers, any agency — using the same shared builder sheet, with no exceptions.
Mistakes to avoid
- Mixing a platform's auto-tagging (gclid) with manually added UTMs on the same link.
- Letting every team member or freelancer hand-type tags instead of using one shared builder.
- Changing your naming convention and assuming it retroactively fixes historical reporting.
- Auditing once and never again — link rot re-accumulates the moment a new person starts tagging links.
- Judging a channel's performance from a report without first checking whether its tagging is even consistent.
Frequently asked questions
Can I fix historical data that's already been logged with inconsistent tags?
Not retroactively — once a session is logged in GA4 under a particular source/medium/campaign combination, it stays that way. What you can do is build a saved segment or exploration that manually groups the known variants together for reporting purposes, and fix the tagging going forward so the problem doesn't keep growing.
How often should this audit happen?
A full audit once a year is reasonable for most small businesses, with a lighter quarterly spot-check of recent campaigns — especially after any agency handover, platform migration, or staff change, since those are the moments link rot tends to creep in.
Does this matter if I mostly rely on platform-reported numbers (like Meta Ads Manager) instead of GA4?
It still matters, because discrepancies between what a platform reports and what GA4 shows are often explained by exactly this kind of tagging inconsistency — and most businesses eventually need to reconcile the two when reporting on overall marketing performance.
Is it worth hiring someone to do this audit instead of doing it in-house?
It depends on how tangled the data is and how much time it would take your team — for a straightforward account it's a manageable half-day task, but a multi-year, multi-agency history can genuinely take much longer to untangle than it's worth doing alone.
Keep reading 🤍
I help Gold Coast and Brisbane businesses grow with branding, websites and marketing that actually works.
Work with me ✦