On this page+
Every marketing team eventually makes each of these. The good news: they are mechanical errors that compound until you notice them, then a one-time fix prevents new ones.
Here is the list, in order of frequency.
1. Mixed casing inside a single campaign
utm_medium=Email and utm_medium=email are two different rows in GA4. The same campaign tagged inconsistently across an email send, a paid social ad, and a partner blast splits into three rows. The data is still there, it is just split where it should have merged.
Fix. Lowercase every value at the link-builder level. Trakl does this on save. If you build links manually, document the rule and enforce it in code review of campaign briefs.
2. Putting the channel name in utm_medium
utm_medium=facebook instead of utm_medium=social. This puts your Facebook traffic into the "Other" channel grouping in GA4 because GA4's Default Channel Grouping is a string match on a specific list of values that does not include "facebook."
Fix. Use the GA4 channel grouping list. Source = the specific origin (facebook, mailchimp). Medium = the category (social, email, paid_social). The piece on utm_source vs utm_medium has the lookup table.
3. Missing utm_campaign
A link with utm_source=linkedin and utm_medium=social but no utm_campaign. The traffic shows up correctly in Source/Medium but the campaign value is empty. You cannot pull a clean campaign-level report.
Fix. Treat campaign as required. Most modern link builders enforce this; Trakl rejects a link save with no campaign value. If your tool does not, add a docs-level rule and audit weekly until habit holds.
4. Encoding the channel into utm_campaign
utm_campaign=q2-launch-email and utm_campaign=q2-launch-social-paid and utm_campaign=q2-launch-partners. Three campaign rows in GA4 for what is actually one initiative.
Fix. Use a stable utm_campaign value across all channels for one initiative. Let utm_source and utm_medium carry the channel split. The Q2 launch in email, paid social, and partner blasts all share utm_campaign=q2-launch.
5. Spaces and capital letters in values
utm_campaign=Q2 Launch becomes Q2%20Launch in URL and shows up as either Q2 Launch or Q2%20Launch in reports depending on encoding. Inconsistent and ugly.
Fix. Hyphens, lowercase, no spaces. utm_campaign=q2-launch.
6. No UTMs on internal links inside the same session
A user clicks an email link, lands on your homepage, then clicks a hero button. The hero button has no UTMs, but you tagged the email. So far the attribution holds because GA4 keeps the session attribution.
But: if the user clicks a link to a different domain (your separate app subdomain, for example) inside the same session, GA4 sees a referrer from your own marketing domain and the original UTM source is overwritten. The session restarts as referral traffic from your own site.
Fix. Set up cross-domain measurement in GA4. Admin → Data Streams → Configure your domains. Add every domain in your funnel. UTMs are not needed on internal links if cross-domain is configured correctly.
7. UTMs on links you should not be tagging
Tagging an internal link inside your own site. Tagging a link in a transactional email like a password reset. Tagging a link inside your dashboard for an existing user.
These tags overwrite the session's original attribution and corrupt the source-of-truth for that user. A user who came from email then clicked a tagged internal link looks like they came from email twice, when really they came from email once and then clicked through your own UI.
Fix. Only tag URLs that lead users into your site from external campaigns. Internal navigation, transactional emails, in-app links should never carry UTMs.
What to do about old broken data
You cannot fix the past. Every link you sent with a wrong tag is still wrong in the historical reports. Three options:
- Live with it. Accept the past data as broken. Going forward, tag correctly. The bad rows decay over months.
- Build a custom channel group in GA4 that maps your old broken values into the right buckets. This makes the historical data legible without retagging.
- Republish the campaigns with correct tags. Almost never worth the effort. The tagged links are already in inboxes, on social posts, in printed materials.
The piece on why your UTM data is messy covers the broader diagnostic for when GA4 numbers are off from your ad platform.
What a clean weekly review looks like
Every Monday, three reports:
- GA4 → Acquisition → Traffic Acquisition. Group by Default Channel Group. Look for big week-over-week shifts and any meaningful "Other" or "Unassigned" rows.
- Drilldown on Source / Medium. Look for values that should have merged (Email vs email) or values that should not exist (utm_medium=facebook).
- Conversions by campaign. The number that justifies the campaigns workspace existing in the first place.
If you find a broken tag, the fix is forward-only. Stop the bleeding, do not bother with retroactive cleanup.
For the working setup, the free UTM builder enforces the conventions that prevent six of these seven mistakes from happening. The seventh (tagging the wrong links) is a discipline question and the tool cannot solve it.
Frequently filed
Common questions.
Q.01What is the most common UTM mistake?+
Mixed casing inside a single campaign. utm_medium=Email and utm_medium=email show up as two different rows in GA4 because the analytics tool is case-sensitive. The fix is to lowercase every value at the link-builder level so the values are not retyped each time.
Q.02How do I find UTM mistakes in my existing data?+
Open GA4 → Acquisition → Traffic Acquisition. Group by Source / Medium. Sort by sessions descending. Look at the top 30 rows for any value that should have been merged or that falls outside GA4's recognized channel groupings. Those rows are the broken tags.
By the byline
Trakl TeamEditorial team
We build Trakl, a link shortener and UTM tracker for marketing teams. We write here from the cleanup work, support tickets, and campaign reviews that fill the rest of our week. Specifics over slogans, and we cite the source.
Photo: Akshar Dave on Unsplash




