UTM tags fall apart when you paste them wrong
Every marketing report I have ever had to untangle started the same way: someone pasted a URL with a space in the utm_campaign value, or built one link with utm_source=Newsletter and another with utm_source=newsletter, and the analytics tool politely recorded both as different traffic sources. No error. No warning. Just a quietly split report.
UTM parameters are labels, not settings
A tagged URL looks like configuration, so people treat it like configuration and assume typos will be caught. They are not. A tracking URL is just a destination plus five query labels:
utm_source— where the click came from (newsletter, twitter, producthunt)utm_medium— the channel type (email, cpc, social)utm_campaign— the specific push (spring-launch)utm_termandutm_content— optional detail for paid keywords and A/B variants
Analytics software stores these strings exactly as received. Case differences, trailing spaces, underscores versus dashes — all become separate rows. Two people on the same team can generate three different spellings of the same campaign within an hour, and you will not notice until someone asks why the traffic report shows half the expected volume per row.
The three failures I see constantly
First, unencoded characters. A campaign named "Q3 & back-to-school" contains an ampersand, which is a query-string separator. Everything after it silently becomes a new parameter. Spaces break links in some email clients entirely. A URL encoder fixes this in seconds: paste the value, get the percent-encoded form, and the campaign name survives contact with the internet.
Second, case drift. Spring-Launch and spring-launch are different campaigns to every major analytics platform. Pick one convention — lowercase with dashes is the common one — and enforce it mechanically, not by hoping people remember.
Third, broken label order. When you hand-edit a URL repeatedly, parameters get duplicated: ?utm_source=x&utm_medium=y&utm_source=x. Some trackers take the first value, some the last. Either way, the data is now ambiguous. Rebuilding the link from scratch beats patching it.
A workflow that keeps reports clean
Build the URL once with a UTM builder, where the fields are fixed and the output is encoded correctly. Check what the link actually looks like after all the encoding with a URL decoder — if the decoded parameters do not read as the campaign names you intended, the link is wrong before a single click lands. And when an old link misbehaves, a redirect checker tells you whether the UTM parameters survive the redirect chain; several common redirect setups strip query strings, which means your carefully tagged campaign shows up as direct traffic.
The fix is boring and cheap. Agree on naming, generate links with a tool instead of by hand, and verify one link per campaign end to end. That is the entire difference between an analytics report you trust and one you spend an afternoon reconstructing from raw logs.