UTM values are written differently across links

UTM values are case-sensitive, so Instagram and instagram become two sources. Fix capital letters, spaces and typos in UTM tags with one naming convention.

SymptomThe same source or campaign shows up as several rows in reports, or a tag isn't recognised at all.
Likely causeUTM values and names are case-sensitive, and spaces, typos and nicknames create new values.
FixAgree one lowercase naming convention, use - or _ instead of spaces, and build every link from it.

Short answer: Google Analytics treats UTM values as case-sensitive text, so Instagram, instagram and insta become three separate sources. Spaces, typos and mistyped tag names make it worse. Pick one lowercase convention, replace spaces with - or _, and build every link from it.

What is inconsistent UTM naming?

Inconsistent UTM naming: writing the same source, medium or campaign in more than one way across links, so analytics tools count them as different things.

Google is explicit about this. Its help page says parameter values are case sensitive, so utm_source=google is different from utm_source=Google, and it recommends a strict naming convention. Lowercase is the usual standard.

Why does capitalisation matter?

Because reports store the exact text you sent. Instagram and instagram are two rows, each with part of your traffic, and neither shows the true total.

There is one twist. Google says its default channel rules are not case-sensitive, so both values may still land in the same channel, such as Paid Social. But source, medium and campaign reports keep them apart, and those are the reports you use to compare campaigns.

The common naming mistakes

  • Capital letters: Diwali_Sale one week, diwali_sale the next.
  • Spaces: paid social gets encoded as paid%20social by some tools and differently by others, so the same value can look different. Use paid_social or paid-social.
  • Nicknames: ig, insta and instagram for one source.
  • Mistyped tag names: utm_Source or utm_campain. Parameter names are case-sensitive too, so these tags are usually ignored, and the visit arrives with no source at all.
  • Non-standard tags: anything starting utm_ that isn't on Google's list, such as utm_channel, isn't read as campaign data.

Example

Three links for the same Instagram campaign, written three ways:

https://example.com/?utm_source=Instagram&utm_medium=Paid Social&utm_campaign=Diwali Sale
https://example.com/?utm_source=insta&utm_Medium=paid_social&utm_campaign=diwali
https://example.com/?utm_source=instagram&utm_medium=paid_social&utm_campaign=diwali_sale

Only the third follows a clean convention. Use it for every link in the campaign:

https://example.com/?utm_source=instagram&utm_medium=paid_social&utm_campaign=diwali_sale

How to fix it

  1. Write a short naming sheet: the allowed sources (such as instagram, google, newsletter), the allowed mediums and a pattern for campaign names, such as festival_offer_month.
  2. Use lowercase for everything, and _ or - instead of spaces. Pick one separator and stick to it.
  3. Build links in the UTM builder with "make values lowercase" switched on. It also replaces spaces for you.
  4. Paste any link you didn't build yourself into the link checker. It flags capital letters, spaces, wrong-case tag names and non-standard tags.
  5. For medium values, follow the channel rules in utm_medium and channels.
  6. You can't rename old data in reports, so fix links going forward and note the change date.
FAQ

Common questions

Are UTM values case-sensitive in Google Analytics?

Yes. Google says `utm_source=google` and `utm_source=Google` are different values. Channel grouping ignores case, but source, medium and campaign reports do not.

Should I use underscores or hyphens in UTM values?

Either works. What matters is choosing one and using it everywhere, so `diwali_sale` and `diwali-sale` don't become two campaigns.

What happens if I mistype utm_source as utm_Source?

Parameter names are case-sensitive, so the tag is usually not read as a source at all. Google says missing UTM parameters show as "(not set)" in reports. See [missing UTM parameters](/problems/missing-utm-parameters/).

Can I fix old data with the wrong names?

Not in the raw reports, which keep what was sent. You can group values in your own reporting, but the lasting fix is a naming sheet and links built from it.

What are UTM parameters?

UTM parameters are tags added to the end of a link, such as utm_source and utm_campaign, that tell analytics tools where a visit came from. They let you see which campaign, channel and ad brought each visitor.

Which UTM parameters are required?

Use utm_source, utm_medium and utm_campaign on every campaign link. utm_term and utm_content are optional and help you compare keywords or ad variants.