The UTM mistakes I still make
I write about clean attribution for a living and still trip over the same handful of UTM mistakes. The useful part is not pretending I don't.
I have written multiple posts about UTM discipline now, which creates a dangerous illusion: that I am above making UTM mistakes.
I am not.
The mistakes are smaller than they used to be. They no longer look like total chaos. They look like one missing tag on a rushed link, one campaign named too narrowly to compare later, one “I’ll fix it after I post” decision that never gets fixed. Which is worse, in a way, because messy data at least looks broken. Slightly messy data still looks trustworthy.
These are the UTM mistakes I still make, even while building linkutm, and why I take them seriously.
1. I still share untagged links when I’m moving too fast
This is the oldest mistake and somehow the most durable.
I’ll be replying to someone, dropping a link in a DM, posting quickly in a community, and the part of my brain that cares about attribution arrives two seconds too late. The link is already out. It works. The moment passes. The visit shows up later as direct traffic and tells me nothing.
This is why I keep repeating the same rule: no link leaves the house without a tag. The mistake is rarely ignorance. It’s speed. Any system that depends on me remembering to be disciplined in a rushed moment is a weak system.
The real fix is not “try harder.” The fix is reducing the number of steps between I should share this and the tagged link is ready.
2. I make campaigns too specific in the moment
This one feels organized when I do it.
I’ll name a campaign after the exact post, exact thread, exact mood, exact context:
utm_campaign=homepage-feedback-thread
utm_campaign=august-founder-dm
utm_campaign=weekend-post-idea-reply
Perfect memory of the moment. Terrible reporting later.
The problem is that hyper-specific campaigns don’t roll up cleanly. They preserve the story of one link but destroy the ability to compare five links that were actually part of the same push. When I look back a month later, I don’t need a diary entry. I need a useful bucket.
The question that saves me is simple: will I want to total this up later? If yes, the campaign needs to be broader and more reusable.
3. I sometimes put context in the wrong parameter
I know the definitions. I wrote the definitions. I still mess this up when context gets fuzzy.
The usual failure mode is sneaking campaign logic into source:
utm_source=launch-thread
That is not a source. That is a reason pretending to be a place.
When I’m moving quickly, I stop asking the three boring questions:
- Where did I put this link?
- What kind of channel is that?
- Why am I sharing it right now?
Every clean UTM comes from answering those in order. Every messy one comes from skipping straight to whatever label feels descriptive in the moment.
4. I assume I’ll remember the convention without looking
This is the mistake that creates near-duplicates:
founder-slackfounders-slackfounderslack
All three feel close enough to a human. To an analytics tool, they are different universes.
The trap is familiarity. Once you’ve used a convention for a while, you stop checking it because you feel like you know it. That confidence is exactly when drift starts. Clean attribution is less about understanding the rules than obeying them when the tenth link of the day feels too obvious to double-check.
This is also why hand-typing UTMs gets worse over time, not better. Repetition creates overconfidence, and overconfidence creates variance.
5. I delay cleanup because the broken link already shipped
Some mistakes can be fixed retroactively in the system around the link. Others can’t. But either way, delay makes the mess feel normal.
The thought pattern is always the same:
“It’s only one link.”
“I’ll standardize it later.”
“I know what I meant.”
Past a certain point, that becomes a second system: the dashboard says one thing, my memory says another, and now attribution depends on me remembering what I probably meant three weeks ago. That’s not measurement. That’s storytelling with spreadsheets.
The best time to clean a bad tag is the minute I notice it. The second-best time is before I create three more like it.
The part that matters
None of these mistakes are interesting because they are clever. They are interesting because they are ordinary. That is what breaks attribution in most teams: not one catastrophic mistake, just a pile of small exceptions that each felt harmless at the time.
The standard I aim for now is not perfection. It’s suspicion. When data looks clean, I want to know why it is clean. When a channel underperforms, I want to trust that it actually underperformed and wasn’t split across three names and one untagged link.
That trust is the whole point.
UTMs are not hard. Staying consistent when you’re busy is hard. Most of the useful systems in a company work like this: the rule is simple, the discipline is not, and the results are only as good as your worst rushed moment.
I still make these mistakes. Less often than before, and usually smaller. The goal is not to become someone who never slips. The goal is to build a system where slipping once doesn’t quietly poison the next month of decisions.
Post five of writing in public. If you’ve caught yourself making the same tiny attribution mistake three times in a row, email me. Those patterns are usually more revealing than the big mistakes.
- Smit
Thanks for reading. If this resonated, tell me about it. Replies are the whole point of writing in public.