You Inherited the UTM Mess: Your First 30 Days
Last updated
Thirty days from now you can hand leadership a one-page account of your tracking: what’s broken, who breaks it, and what changes on which date.
Inherited UTMs with no owner, no documentation and drifted values? Don’t start by cleaning. Week one, measure the mess in GA4. Week two, find everyone who builds links. Week three, write a short standard and decide what history to leave alone. Week four, make that standard the easiest way to build a link.
TL;DR
- Week 1: export source and medium values from GA4’s Traffic acquisition report, count how many collapse once you lowercase them, and measure the sessions sitting in the variant rows.
- Week 2: trace the biggest bad values back to the teams, agencies and tools that produce them, then ask leadership for the mandate while the scope is in front of you.
- Week 3: write a standard short enough to fit on one page, and draw a history line. Old data gets mapped in reports, never rewritten.
- Week 4: replace the old building paths so the standard becomes the default way to build a link.
- Pitch the budget on reporting leadership can defend, using the week-one numbers.
What You Inherited
It’s one of the most common ways our sales calls start. Someone new in a marketing ops, analytics or growth seat opens GA4, sorts by source, and finds the same five platforms spelled fifteen ways.
The details vary. The shape doesn’t.
A marketing lead at a manufacturer told us that before they joined, hardly anyone on the team understood what UTMs were for, and nobody was looking at GA4.
A marketing operations leader at a fast-growing tech company described the same thing from the other side: every team was inventing its own parameters, with no guidelines to work from.
And at a membership organization, the in-house link builder everyone depended on was frozen in place. The person who built it had left, and nobody remaining could change it.
Every drifted value in situations like these was a reasonable decision by someone under deadline, and the people and paths that produced them are still running. That’s why cleaning the data first fails. They’ll produce next month’s mess on schedule, because the mess is a people problem wearing a data costume.
So the order matters more than the effort.
Week 1: Audit What Exists
Your goal this week is four numbers and one file. Resist the urge to fix anything.
Pull the values out of GA4
In GA4, go to Reports, then Acquisition, then Traffic acquisition. Open the dimension dropdown above the table and switch the primary dimension to Session source / medium. Set the date range as far back as your property goes.
Standard reports like this one are not limited by your data retention setting. That setting (2 or 14 months on a standard property) only trims explorations and funnel reports, so if you want a long lookback, stay in the standard report rather than rebuilding it as an exploration.
Download it: Share this report, then Download File, then Download CSV. The file holds up to 100,000 rows. Repeat with the primary dimension set to Session campaign.
If you see an (other) row, GA4 has folded less common values together because the table hit its row limit. Your counts will miss that long tail, so note the row’s share of sessions next to your numbers. If your property exports to BigQuery, the raw values are there for every day since the export was turned on; it doesn’t backfill earlier dates.
That’s the file. A raw inventory of every value your property has recorded, with sessions attached.
Get your four numbers
Put the source / medium export in a sheet. Filter out rows with medium referral, organic or (none) first; you’re auditing what people typed. Add a column that lowercases and trims each value, then count distinct values before and after. Keep the campaign export to one side. It feeds the mapping work later, not this week’s numbers.
The four numbers to write down:
- Distinct source / medium pairs, raw.
- Distinct pairs after lowercasing and trimming. The gap between numbers one and two is your casing and whitespace drift, and it’s the cheapest problem you’ll ever fix.
- Share of tagged sessions in variant rows. For each group of rows that collapse together, treat the spelling with the most sessions as canonical. Total the sessions in every other row, then divide by all the sessions left after your filter.
- Share of sessions landing in Unassigned. Switch the report back to its default channel dimension to see this. GA4 uses Unassigned when no channel rule matches, which often points to a medium value the rules don’t recognize.
A result might look like this. The numbers are illustrative, not from any real property:
| What you count | Illustrative result |
|---|---|
| Distinct source / medium pairs | 212 |
| Distinct after lowercasing and trimming | 131 |
| Tagged sessions in variant rows | 14% |
| Sessions in Unassigned | 9% |
In that example, 81 of the 212 rows are spelling variants of another row, which is 38 percent of the report. Those rows carry 14 percent of tagged sessions, and the sessions figure is the one that matters to anyone reading totals.
GA4’s channel definitions aren’t case sensitive, so the channel report looks fine while source, medium and campaign rows split underneath it; the GA4 UTM diagnostic covers that failure and a dozen others.
Collect the artifacts, too
Before the week ends, find every place a rule might have been written down: the old spreadsheet, a builder bookmarked in someone’s browser, a slide from a past onboarding, the agency’s own naming doc.
Don’t judge them yet. Just list them. Some of them are still in use, and next week you find out which.
The detailed catalog-and-map process, where you record what each legacy value means and what it should become, is covered step by step in the When You Inherit a Mess page of our marketing taxonomy guide. Start it this week if you have time, but don’t let it swallow the week. The four numbers matter more right now.
Week 2: Find Everyone Who Builds Links
The export tells you what went wrong. It doesn’t tell you who’s still doing it.
This is the easiest week to skip, and it’s the one that decides whether any of this sticks.
Work backwards from the worst values
Sort your week-one file by sessions. Take the top 20 values that look wrong, and for each one, find the person or system that produced it. Ask in Slack, search the ad accounts, check the ESP settings and read the agency’s reports.
You’ll find link builders in places you didn’t expect:
- Paid media teams building tracking into ad platform URL settings, sometimes on top of auto-tagging.
- Email and marketing automation tools, many of which can append their own UTM parameters with their own defaults. Check those settings before you blame a person.
- Social schedulers doing the same thing.
- Regional and business-unit teams with their own spreadsheet and their own idea of what “channel” means.
- Agencies, who may bring a naming convention from another client.
- Events, sales and partner teams printing QR codes that point straight at a tagged URL.
A brand and digital lead at a healthcare company with several divisions described the divisional version: each division tags links its own way, and nobody at the center could say whether they used the same parameters, let alone the same values. Our read on situations like that is simple. Ask any one division and it will describe a process and a spreadsheet. Nobody has the company’s process, because there isn’t one.
Record why each builder tags
For every builder you find, write down four things: the team and who builds, which tool or sheet, rough monthly volume, and what report they use the data for.
That last column is the one people leave out, and it’s the most useful. A marketing operations lead at a B2B software company found that one team had swapped its mediums and channels, with channel values sitting in medium and vice versa. The values were easy to correct. The concern was that correcting them would disrupt reports people already relied on.
Every team that builds links is reading some report built on those values. Change the values without knowing which report, and you break someone’s dashboard in your first month.
Here’s an illustrative register of link builders:
| Team | Builds with | Links per month | Reports on |
|---|---|---|---|
| Paid social | Ad platform URL settings | 40 | Platform dashboards, GA4 |
| Lifecycle email | ESP auto-tagging | 25 | ESP reports only |
| EMEA field marketing | Own spreadsheet | 60 | Regional BI dashboard |
| Events agency | Agency naming doc | 30 | Monthly PDF to the events lead |
Keep that register current. It becomes the audience for next week’s standard and the rollout list for week four.
Ask for the mandate now
Look down the register. Most of those teams and agencies probably don’t report to you.
A standard without authority behind it is a suggestion, and suggestions are how you inherited this. So take the register to your leader at the end of this week, while the scope is plain to see, and ask for one thing in writing: from a start date you’ll set next week, every team and agency builds links from the standard.
Budget comes later, in week four. Get the authority first, because weeks three and four depend on it.
Week 3: Write the Standard and Draw the History Line
Write the rules against what the audit and the register showed you.
Keep the standard to one page
A standard that runs to twelve pages is a document nobody opens. Aim for one page with five parts:
- Allowed values for
utm_sourceandutm_medium. A closed list, lowercase, one spelling each. - A pattern for
utm_campaign, built from the dimensions your register says people report on: region, product, quarter, whatever the dashboards group by. - Formatting rules: lowercase, one separator, no spaces.
- Who owns the standard. That’s you.
- How to request a new value, and how fast you’ll answer.
Don’t write the value lists from scratch. The free UTM naming convention template has starter source and medium values and a regex for campaign names that you can adapt in an afternoon.
Then take the draft to the people in your register and check that the dimensions they report on survive. They don’t need to approve every value. If EMEA’s dashboard groups by country and your campaign pattern has no country, you’ll hear about it now or in production.
Draw the history line
Every inherited mess forces the same question: fix the old data, or leave it?
Answer it with one date. Call it the history line. Everything built after it follows the standard. Everything recorded before it stays exactly as it is in GA4 and gets translated at the reporting layer.
That split holds for data. Links are different, because some old links are still out in the world generating new sessions. Sort them this way:
- Evergreen links still in circulation: email signatures, bio links, always-on ads, partner and directory listings, nurture emails. Rebuild these now. They’re producing fresh bad data every day, so they’re on the wrong side of the line no matter when they were built. Links on your own site get their UTMs removed, not rebuilt.
- Campaigns running right now: leave them until they end or renew. Changing parameters mid-flight splits one campaign into two rows, which is the problem you’re trying to remove.
- Printed QR codes that point straight at a tagged URL: you can’t change them. Let them age out, map their values in reports, and route future QR codes through a short link whose destination you can edit.
- Finished campaigns: leave them in history.
For the history side, GA4 has a useful property. Custom channel groups apply retroactively, so a group built today reclassifies last year’s sessions in your reports. That fixes channel-level history, like odd mediums and Unassigned. It won’t merge case variants of a source or campaign; do that with a CASE mapping in Looker Studio or your warehouse.
A standard property gets two custom channel groups, created under Admin, then Data display, then Channel groups. One catch: making a custom group your primary channel group only applies from that point forward. The full mapping approach, with where to run it and a pointer to running the switch, is in the guide’s When You Inherit a Mess page.
Before the history line takes effect, tell every report owner in your register the date. That single message prevents most of the “why did my numbers change” tickets you’d otherwise field in month two.
Week 4: Make the Standard the Path of Least Resistance
A written standard changes nothing on its own. People build links the way that’s quickest under deadline. So make the compliant way the quickest one.
A marketing lead at an investment firm described what happens otherwise. Their spreadsheet began as a careful piece of work, then drifted as each user adapted it to suit themselves, until it stopped producing consistent links. The sheet had rules. Nothing stopped anyone editing them.
Replace the old building paths
Go back to your register, row by row, and replace each path:
- Personal spreadsheets get archived as read-only, with a pointer to the new place to build.
- ESP and scheduler auto-tagging gets reconfigured to your values, or switched off so links come from the standard.
- Agencies get the standard in writing and one place to build, not a PDF to interpret.
- Onboarding for new marketers gets a ten-minute section on building a link.
If you’re staying in a spreadsheet for now, start from a template with locked dropdowns rather than an open sheet. Our roundup of UTM builder spreadsheet templates is a reasonable starting point. A sheet works for one or two builders and modest volume. Past roughly two builders or 100 links a month it starts costing more than it saves, and the spreadsheet comparison walks through where that edge is.
Or refuse bad values at creation
The alternative is building the standard into the tool itself. That’s what Terminus, the marketing taxonomy governance platform, does.
Your standard becomes a governance model: fields with static or hierarchical picklists (where a parent choice narrows the child list), a campaign name concatenated from those fields, and validation for casing, spaces, uniqueness and patterns. Changes go through draft and publish, so a new value doesn’t reach builders until you release it.
For the register you just built, a few pieces map directly. Builders pick a Quick, Form or Grid builder depending on whether they’re making one link or a whole batch. Teams that live in spreadsheets round-trip through CSV, and tools that build links programmatically go through the API, which applies the same validation. Short links on your own domains keep editable destinations, so the next printed QR code can be re-pointed without a reprint. The Business plan adds automated picklists, scoped workspaces that let EMEA see only EMEA’s values and the events agency see only events values, and approval workflows that add a sign-off step for teams still learning the standard.
You can try a working governance model in the no-signup playground, or browse the starting models in the template library.
The pitch to leadership
Somewhere in week four you’ll need to explain all of this to someone who controls budget and doesn’t care about UTM casing. Don’t make it about tidy tags. Make it about numbers they can defend.
Four slides, or four paragraphs:
- What I found. Your week-one numbers. With the illustrative figures above, “38 percent of our source/medium rows are spelling variants of another row, and they carry 14 percent of our tagged sessions” lands harder than “our UTMs are messy.”
- What it costs. Name the questions current reports can’t answer: which region’s paid social drove pipeline, what last quarter’s events returned. If someone reconciles values by hand, show the math. Say an analyst spends four hours a week merging source values: over 48 working weeks that’s 192 hours a year, before counting the decisions made on the wrong totals. Use your own figures, and label estimates as estimates.
- What I’m doing. The standard, the history line date, the register of link builders, and the mandate you secured in week two.
- What I need. The tool budget if you want one, and time from each team to move onto the new path.
For a fuller cost model to back up slide two, see the ROI of marketing taxonomy governance.
Day 31
At the end of the month you should have a GA4 export with four numbers, a register of link builders, a written mandate, a one-page standard, a history line date that report owners already know about, and old building paths closed off.
Don’t expect a perfectly cleaned historical dataset by then. Mapping history can run on its own schedule after day 31.
If you remember one thing: find who makes the mess before you clean it, or you’ll clean it again next quarter.
FAQ
How long does it take to fix inherited UTM tracking?
About a month to stop the mess growing: a week each for auditing, finding builders, writing the standard and replacing the building paths. Mapping historical values in reports can continue after that without blocking anything.
Should I rewrite historical UTM data in GA4?
No. Recorded values don’t change, so translate history in reports instead. A GA4 custom channel group applies retroactively and fixes channel-level history, like odd mediums and Unassigned, but it won’t merge case variants of a source or campaign. Use a CASE mapping in Looker Studio or your warehouse for those. Our marketing taxonomy guide lays out the order of work for the mapping.
How do I see every UTM value in GA4?
Open Reports, then Acquisition, then Traffic acquisition, and switch the primary dimension to Session source / medium or Session campaign. Use Share this report, then Download File, then Download CSV. Standard reports aren’t limited by data retention, so a long date range works. If an (other) row appears, GA4 has hit a row limit and folded rare values together; BigQuery holds the raw values only for dates since its export was turned on.
Do capitalization differences break GA4 channel reports?
Not at the channel level, since GA4’s default channel definitions aren’t case sensitive. They do split source, medium and campaign rows, so Facebook and facebook appear as separate lines and their totals never meet.
Should I change UTMs on campaigns that are already live?
No, unless it’s an evergreen link that runs indefinitely. Changing parameters mid-campaign splits one campaign’s data across two sets of values. Let running campaigns finish, and rebuild evergreen links like email signatures and always-on ads straight away.
What do I do about agencies that build our links?
Add each agency to your register of link builders, give them the standard in writing, and give them one place to build that enforces it. Asking an agency to follow a document is weaker than giving them a builder that only offers your values.
Is a spreadsheet enough, or do I need a tool?
A locked-down spreadsheet works for one or two builders at modest volume. Once several teams, regions or agencies build links, a sheet can’t stop anyone editing its rules, and a governance platform that enforces values at creation is the more durable fix.
How do I get leadership to back the cleanup?
Ask for the mandate first, at the end of week two, when the register shows how many teams and agencies build links. Then pitch budget with the audit numbers, the questions current reports can’t answer, and the history line date.
Every account starts with a 21-day trial, no credit card required.