Updated: November 25, 2025
If you’ve ever looked at your GA4 traffic reports and wondered why some of your marketing channels are showing up as “(direct)” or “(none)” — or worse, why `Facebook` and `facebook` appear as two separate sources — you’re probably dealing with UTM mistakes.
UTM parameters are one of the most powerful tools in analytics. They tell you exactly where your traffic comes from. But they’re also incredibly easy to get wrong. One uppercase letter, one space, one reused parameter — and your data becomes unreliable.
In this guide, I’ll walk through the most common UTM mistakes I’ve seen (and made myself), with practical fixes for each one.
Misusing Uppercase and Lowercase (Most Common!)
This is the one I see most often. Here’s the problem: UTM parameters are case-sensitive.
This means `utm_source=Facebook` and `utm_source=facebook` are treated as two completely different sources by GA4. If your marketing team uses both versions across different campaigns, your traffic report will show two separate rows — one for each variant.
It sounds like a small thing, but I’ve seen it cause hours of confusion during reporting.
Fix: Use lowercase consistently. Always. `utm_source=facebook`, `utm_medium=email`, `utm_campaign=spring_sale`.
Using Spaces or Non-English Characters
When you include spaces or non-English characters in UTM parameters, the browser encodes them. Spaces become `%20` or `+`, and special characters get URL-encoded. The result? Garbled text in your reports and potentially duplicate entries.
Example of a problem URL: utm_campaign=(non-English characters)&utm_medium=cpc
Fix: Use only English letters, numbers, underscores, and hyphens. eg:utm_campaign=spring_sale_2025&utm_medium=cpc
Using UTM Parameters in Internal Links
This is a big one. If you add UTM parameters to links within your own website — say, a promotional banner linking to a product page — GA4 treats that click as a new session source. It essentially overwrites the original traffic source with whatever UTM values you set.
Suddenly, your organic traffic looks like it came from an email campaign.
Fix: Never use UTM parameters on internal links. If you need to track internal clicks, use event tracking instead.
Reusing the Same Parameter
If the same UTM parameter appears twice in a URL, GA4 only takes the last value.
utm_campaign=spring_sale1&utm_campaign=spring_sale2
In this case, GA4 records `spring_sale2` and ignores `spring_sale1`.
Fix: Ensure each UTM parameter is used only once per URL. If you need multiple campaign identifiers, stick with one.
Truncated Parameters
Long UTM parameters — especially ones with special characters like `#` — can be difficult to read and may fail to be parsed correctly.
utm_source=Facebook#channel@official&utm_medium=social&utm_campaign=spring_sale_2025_version_final
The `#` character is particularly dangerous: it signals a URL fragment, and everything after it may never reach GA4.
Fix: Keep parameters short and clean. Use only letters, numbers, underscores, and hyphens. Avoid `#`, `@`, and other special characters.
Non-Standard Parameter Naming
GA4 maps certain UTM values to predefined channels automatically. If you use custom values that don’t match Google’s standard definitions, your traffic can end up classified as “Other” or “Unassigned.”
For example, if you use `utm_medium=marketing1`, GA4 has no idea what that is. Is it email? CPC? Social? It can’t tell.
Fix: Use the official recommended values wherever possible.
Parameter Confusion
Each UTM parameter has a specific purpose. Getting them mixed up can lead to confusing reports.
- utm_source = where the traffic comes from (platform)
- utm_medium = how it gets to you (channel type)
- utm_campaign = the specific campaign name
Example of a confused URL: utm_source=cpc&utm_medium=facebook&utm_campaign=spring_sale_2025
Here, `source` and `medium` are swapped. GA4 will report `cpc` as the source and `facebook` as the medium — completely backwards.
Fix: Stick to the official standards. Here’s a quick reference:
| Parameter | Recommended Examples | Description |
|---|---|---|
| utm_source | google / facebook / wahtsapp/ tiktok | Traffic source platform |
| utm_medium | cpc / cpm / social / email / qr_code | Marketing medium type |
| utm_campaign | double11_2025 / spring_promo | Campaign name (adding year is recommended) |
| utm_term | Keywords (for paid search) | |
| utm_content | banner_a / video_v2 / logoposition | Differentiates multiple creatives for same ad |
Missing Required Parameters
Not including the right UTM parameters can cause traffic to be categorized as “(direct)” or “(none)” — which is the last thing you want when you’re trying to measure campaign performance.
The three most important parameters are utm_source, utm_medium, and utm_campaign. utm_source and utm_medium are essential for correct channel classification. Missing either one will break your channel mapping.
Fix: Always include at least `utm_source` and `utm_medium`. Use `utm_campaign` to differentiate campaigns.
Short Link Services Overwriting Parameters
Some short link services (like bit.ly or your link management tool) may overwrite or remove the original UTM parameters you carefully set up.
Fix: Always test your short links before sending them. Click through and inspect the destination URL to make sure all UTM parameters are intact.
Final Words
Most UTM mistakes come down to the same root cause: inconsistency. Inconsistent casing, inconsistent naming, inconsistent parameters. The fix is simple — pick a standard and stick to it.
Here’s my short checklist for every campaign URL:
- All lowercase, no exceptions
- No spaces or non-English characters
- Only use UTM on external links
- Each parameter appears exactly once
- Use official values for `source` and `medium`
- Always include `source`, `medium`, and `campaign`
- Test your short links before launching
I hope this guide helped you spot and fix common UTM mistakes. If you’ve run into other issues that I didn’t cover, feel free to leave a comment and I’ll do my best to help.