← All articlesMarketing Ops & Analytics

UTMs Gone Wrong: A Cleanup Story and the Rules That Prevent It

By Ralph West  ·  August 17, 2026

This is for anyone who has opened a Google Analytics channel report and found nine versions of "facebook" staring back at them. If that is you, the single most important decision is this: pick your UTM naming convention before you pick your tools, your team structure, or your campaign calendar. Everything else is downstream of that one choice.

Decide this first

Decide who owns the UTM taxonomy. Not which tool generates the links. Not which spreadsheet holds them. Who owns the rules.

I learned this the hard way on a DTC brand I helped scale from $100K to $3M in revenue. Four people were building campaigns: two in-house, one freelancer, one agency. Nobody owned the naming convention. By month eight we had "IG," "instagram," "Instagram," and "insta_story" all live in the same reporting period. Attribution was garbage. We had to guess which spend mapped to which channel because the data itself lied to us.

Once we named one owner, a single marketing ops person, and gave her veto power over any link before it went live, the mess stopped growing. Cleanup still took three weeks. But it stopped growing the same day.

What to look for

Lowercase everything, always

UTM parameters are case-sensitive in most analytics platforms. "Newsletter" and "newsletter" show up as two separate lines in your reports. This single rule fixes more attribution chaos than any tool you can buy. Force lowercase in your naming convention document and in any link-building template you use. No exceptions, no capital letters for "readability."

Fixed vocabulary for source and medium

Do not let people freehand utm_source and utm_medium. Build a closed list.

On the $2.2B infrastructure project I ran marketing for, we had eleven distinct audiences (regulators, local officials, community groups, press, unions) and six channels. That is 66 possible combinations. Without a locked vocabulary for source and medium, we would have had 66 different spellings within two months. We had 66 combinations and exactly zero variants, because the list lived in a shared doc that nobody could edit without asking me first.

A campaign naming formula, not a campaign name

Do not let people type whatever campaign name feels natural. Build a formula and require people to fill in slots.

A working formula looks like this: utm_campaign = [year][month]_[objective]_[audience]_[creative-version]

Example: 2024_09_leadgen_smb_v2

This gives you sortable, filterable data. You can pull every leadgen campaign across a year in one filter. You can compare v1 versus v2 creative performance without opening ten different reports and manually tagging rows. On the DTC brand, once we moved to this formula, our monthly reporting time dropped from about six hours to ninety minutes, because filtering replaced manual tagging.

What to ignore

UTM builder tools with fifty extra fields. You do not need utm_content, utm_term, and three custom parameters for every single link. Most teams need source, medium, campaign, and occasionally content. Adding more fields than your team will consistently fill in just creates more blank or inconsistent data. A field nobody fills in correctly is worse than no field at all, because it looks like real data in your report when it is actually noise.

Also ignore any tool that promises to "auto-clean" your UTMs after the fact with AI or fuzzy matching. I have tried a few of these. They catch obvious typos like "facebok" but they cannot tell you whether "spring_sale" and "spring-sale" from two different people mean the same campaign or two different ones. The cleanup has to happen at the point of creation. Fixing it after the fact is always more expensive than preventing it.

Common mistakes

The most common mistake is treating UTM parameters as free text instead of controlled fields. Someone on the team decides "Black Friday" is more readable than "black_friday" in a spreadsheet, so they type it that way once. Then someone else copies an old link as a template for a new campaign and inherits the inconsistency. Within two quarters you have four spellings of the same event living in your data as four separate rows. Nobody notices until someone tries to build a year-over-year report and the numbers do not add up.

The second common mistake is letting agencies and freelancers build their own links using their own conventions. Agencies often have a house format from working with other clients, and if you do not hand them your rules explicitly, they will default to their own. On one project, an agency tagged everything with utm_medium=cpc regardless of platform, so Facebook paid ads, Google search ads, and LinkedIn sponsored posts all rolled into a single "cpc" line. We lost three months of channel-level performance data before anyone caught it, because the top-line numbers looked fine. It was only when we tried to shift budget based on channel ROI that we realized we had no channel-level truth to work from.

The third mistake, and the one that is hardest to fix, is inconsistent handling of paid versus organic social. Some people tag organic social posts with utm_source=facebook and utm_medium=social. Others skip UTMs on organic posts entirely because "it is not paid, why bother." Then when someone finally does add UTMs to organic content, the medium value does not match anything used before, so now you have a broken time series. Decide up front whether organic gets tracked at all, and if it does, use the same locked vocabulary as paid.

FAQ

What is the actual naming convention I should use for utm_campaign?

Use a structured formula with fixed slots separated by underscores, not free text. A reliable pattern is [date]_[objective]_[audience]_[variant], for example 2024_11_bfcm_returning_v1. The date slot lets you sort chronologically. The objective and audience slots let you filter and compare. The variant slot lets you separate creative or offer tests without creating entirely new campaign identities. Write the formula down in a shared document with three or four real examples, and require every person building links to follow it exactly, including underscore placement.

Should utm_source and utm_medium ever be freeform?

No. These two fields should be a closed list, not open text. Freeform entry is where almost all UTM data gets corrupted, because two people will spell the same source two different ways within a month. Build a dropdown, a Google Sheet lookup, or a Zapier/Make template that only allows approved values for source and medium. If someone needs a new source or medium value, they request it from whoever owns the taxonomy, and it gets added to the approved list before anyone uses it. This one control point prevents most of the mess described above.

How often should I audit existing UTMs for consistency?

Quarterly, at minimum. Pull a raw list of every unique utm_source, utm_medium, and utm_campaign value from your analytics platform and scan for near-duplicates. On the DTC brand, our quarterly audit took about 45 minutes once the naming convention was locked, compared to the three-week cleanup we did the first time we tried to fix historical data. The gap between those two numbers is the whole argument for doing this consistently instead of reactively.

Do I need a UTM builder tool, or is a spreadsheet enough?

A spreadsheet with locked dropdowns for source and medium, plus a documented formula for campaign names, is enough for most teams under 20 people building links. Tools help once you have multiple people building dozens of links a week across several tools like email platforms, ad managers, and social schedulers, because they enforce the format automatically instead of relying on people remembering the rules. But the tool does not replace the rules. It just enforces rules you should already have written down.

Practical takeaway: Write your UTM naming convention down in one document, lock utm_source and utm_medium to a fixed list, use a formula for utm_campaign, force lowercase everywhere, and name one person who owns the whole thing. Do that before you build a single link this quarter, and you will never have to spend three weeks cleaning up someone else's guesswork.

RW

Ralph West

Marketing executive with 20+ years running growth for DTC, B2B, and enterprise. Managed a $10M budget on a $2.2B infrastructure build, scaled a DTC brand from $100K to $3M+, and now runs a daily AI agent stack for marketing operations. See the work.