Marketing Tool Stackby Amit Gupta
← Learn

Common UTM Tracking Mistakes (and How to Fix Them)

The most common UTM mistakes are inconsistent casing, tagging internal links, missing required parameters, spaces in values, duplicated campaign names, and no shared documentation. Each one fragments or overwrites your attribution data. The fix is the same pattern every time: one documented convention, enforced by a builder rather than memory.

Inconsistent casing

The fix is to force every value to lowercase before it reaches a URL. UTM values are case-sensitive, so Email, email, and EMAIL are stored as three separate sources, splitting one channel across three report rows. Casing drift is the single most frequent UTM error because it is invisible at link-build time and only surfaces weeks later in a fragmented report.

Why it breaks attribution

Analytics platforms match values as exact strings. When half your team writes Facebook and half writes facebook, the channel's traffic, conversions, and revenue are divided between two rows that should be one, and any total you read off the top is understated.

The fix

Standardise on all-lowercase as a hard rule and enforce it mechanically. A builder that lowercases input automatically removes the entire class of error, because no one has to remember the rule at the moment they are pasting a link into an ad platform.

Tagging internal links

The fix is simple: never put UTM parameters on links between pages of your own site. When a visitor who arrived from Google clicks an internally tagged button, the new UTMs overwrite the original source and start a fresh session, so a Google visitor is suddenly re-attributed to your own homepage banner.

What goes wrong

Internal UTMs inflate whatever source you tagged the button with and erase the real acquisition channel for that visit. Over time this makes on-site elements look like top traffic sources while starving your genuine channels of credit, quietly corrupting every attribution model downstream.

The fix

Reserve UTMs strictly for inbound links: emails, ads, social posts, partner sites, anything that lives on another property. For clicks within your own site, use event tracking (a click or button event) instead, which records the interaction without resetting the session source.

Missing required parameters

The fix is to treat utm_source, utm_medium, and utm_campaign as required on every tagged link. Source and medium feed your analytics channel grouping; campaign ties the traffic to a specific initiative. Drop any of the three and the visit either falls into an "unassigned" bucket or loses the context that makes the data usable.

What each required parameter does

ParameterStatusWhy it matters
utm_sourceRequiredNames the specific platform; without it the visit is uncategorised
utm_mediumRequiredDrives channel grouping (email, cpc, social) in reports
utm_campaignRequiredTies traffic and conversions to a named initiative or offer
utm_contentOptionalSeparates two creatives or placements within one campaign
utm_termOptionalRecords the paid-search keyword

The fix

Make the three core parameters mandatory fields in whatever builds your links, so a link cannot be generated until source, medium, and campaign are all filled in. Leave content and term optional, and only add them when you genuinely need to tell variants or keywords apart.

Spaces and duplicate campaigns

The fix is to replace spaces with a single hyphen and to draw every campaign name from one approved list. A raw space becomes %20 in the URL, producing ugly, easy-to-mistype links; meanwhile small spelling differences spawn duplicate campaigns that scatter a single initiative across several rows.

Spaces and special characters

Never type a space, and avoid characters that need URL-encoding. spring sale renders as spring%20sale and is trivial to fat-finger into spring+sale or spring sale elsewhere. Standardise on hyphens, as in spring-sale, and use that one separator across the whole team.

Duplicated campaign names

Duplicates are casing and separator drift wearing a different hat. q2-demo, Q2-Demo, and q2_demo are three campaigns to your analytics, so one push reports as three. The table below shows the typical broken-versus-clean pairs.

MistakeFixed valueWhy
utm_campaign=Spring Saleutm_campaign=spring-saleSpace becomes %20 and breaks the URL
utm_campaign=q2_demo & q2-demoutm_campaign=q2-demoMixed separators create duplicate campaigns
utm_source=fb & facebookutm_source=facebookAliases for one platform split the data

The fix

Decide one exact string per campaign in advance, document it, and reuse it character-for-character on every link. A builder that strips spaces and lowercases values turns "remember the exact name" into something the tool guarantees for you.

Stop these mistakes at the sourceThe UTM Builder lowercases values, strips spaces, and requires source, medium, and campaign, so broken links never get built.
Open the tool →

No documentation

The fix is to keep one shared, link-accessible spreadsheet as the single source of truth for both your approved values and the links themselves. Almost every mistake above, whether casing drift, duplicate campaigns, or off-vocabulary mediums, comes from people guessing values link by link because nothing tells them the right one.

What to document

A simple two-tab structure covers most teams:

  • Tab 1, Vocabulary. One column per parameter listing the allowed values, so everyone picks from a list instead of inventing labels.
  • Tab 2, Link log. One row per campaign URL with source, medium, campaign, the destination page, and the date, so any link can be traced back later.

The fix

Documentation defines the rules, but it won't stop typos on its own. The durable setup is the sheet plus a builder that mechanically enforces it, so conventions are applied automatically rather than relying on each person to remember them under deadline.

Frequently asked questions

Why is my UTM campaign showing up twice in reports?

Almost always a spelling or casing difference. spring-sale and Spring-Sale, or spring-sale and spring_sale, are treated as two distinct campaigns because UTM values are case- and character-sensitive. Pick one exact string, draw it from a documented list, and reuse it identically on every link.

Should I put UTM parameters on internal links?

No. Tagging links between pages on your own site overwrites the original source and restarts the session, so a visitor who arrived from Google gets re-attributed to your internal button. Reserve UTMs for inbound links from other properties and use event tracking for on-site clicks.

Which UTM parameters are actually required?

Source, medium, and campaign are the three to treat as required on every tagged link. Source and medium drive your channel grouping in analytics; campaign ties spend to an initiative. Content and term are optional and only added when you need to separate creatives or track paid keywords.

How do I fix UTM links that are already broken in the wild?

You usually cannot retag a link that is already published, so fix it forward. Decide the correct value, update any link you still control, and in analytics create a channel grouping or rule that maps the wrong variants onto the right one so future reports consolidate cleanly.

What is the single biggest UTM mistake to avoid?

Having no documented convention. Every other mistake, whether casing drift, duplicate campaigns, or off-vocabulary mediums, stems from people guessing values link by link. One shared sheet of approved values, plus a builder that enforces them, prevents the majority of UTM problems before they happen.

Last updated: 14 June 2026