AttriModel
GuidesUTM Tracking
UTM Tracking14 min read·Updated July 2026

UTM Naming Conventions: Keep Your GA4 Campaign Data Clean

Messy UTMs are the number one cause of unreliable GA4 reports. "Facebook" and "facebook" become two sources; a stray space fragments a campaign. This guide gives you a simple, enforceable naming convention that keeps your channel data clean — and explains the reasoning so your whole team can follow it.

What are UTM parameters?

UTM parameters are tags you append to a URL to tell your analytics tool where a visitor came from. UTM stands for Urchin Tracking Module — a nod to Urchin, the company Google acquired to build Analytics. When someone clicks a tagged link, the browser sends those parameters to your site, and GA4 reads them to attribute the visit to a specific source, medium, and campaign.

Without UTMs, GA4 can only guess at traffic sources from the HTTP referrer — which is often missing, generic (facebook.com), or stripped entirely by privacy features. UTMs make attribution explicit and intentional: you decide exactly how each link is labelled instead of leaving it to inference.

A tagged link looks like this:

https://example.com/sale?utm_source=facebook&utm_medium=paid-social&utm_campaign=spring-sale-2026

Everything after the ? is UTM metadata. It changes nothing about the page the visitor sees — it only feeds your analytics.

Why UTM naming discipline matters

GA4 builds its default channel grouping from utm_source and utm_medium. It treats every distinct value as literally distinct — so "Google", "google", and "google " (with a trailing space) are three different sources. Multiply that inconsistency across a team of marketers and your channel reports fragment into unmergeable rows.

The fix isn't a tool — it's a convention everyone follows. The tool just enforces it.

The five UTM parameters

  • utm_source — where the traffic comes from (google, facebook, newsletter)
  • utm_medium — the channel type (cpc, email, paid-social)
  • utm_campaign — the specific campaign (spring-sale-2026)
  • utm_term — paid keyword (optional, mainly for search)
  • utm_content — differentiates creatives or links (optional, e.g. hero-banner vs sidebar)

utm_source and utm_medium are required. utm_campaign is strongly recommended. The other two are optional.

Rule 1: Always lowercase

UTM values are case-sensitive in GA4. Standardize on all lowercase, always. This one rule eliminates the most common source of fragmentation. Facebook, FaceBook, and facebook should all be facebook.

Rule 2: Use hyphens, never spaces

A space in a UTM becomes %20 in the URL and creates ugly, error-prone links. Replace spaces with hyphens: spring sale 2026 becomes spring-sale-2026. Pick hyphens over underscores and stick with it — mixing separators is just another way to fragment data.

Rule 3: Standardize source/medium pairs

This is where teams drift most. Agree on one source/medium pair per channel and document it. A sensible baseline that maps cleanly to GA4's default channel grouping:

  • Google Ads → google / cpcPaid Search
  • Microsoft Ads → bing / cpcPaid Search
  • Facebook/Instagram Ads → facebook / paid-socialPaid Social
  • Organic social post → facebook / socialOrganic Social
  • Email newsletter → newsletter / emailEmail
  • Affiliate → partner-name / affiliateReferral

The exact values matter less than everyone using the same ones. Consistency beats correctness.

How GA4 maps medium to its default channel grouping

GA4 assigns each session to a channel based largely on utm_medium (and sometimes utm_source). If your medium doesn't match one of the values GA4 expects, the traffic lands in "Unassigned" — the single clearest sign of a broken UTM. Use these mediums so your traffic routes correctly:

Channel in GA4utm_medium values that matchTypical utm_source
Paid Searchcpc, ppc, paidsearchgoogle, bing
Paid Socialpaid-social, paidsocial, social-paidfacebook, instagram, linkedin
Organic Socialsocial, social-network, smfacebook, x, linkedin
Emailemail, e-mail, newsletternewsletter, crm
Affiliatesaffiliatepartner-name
Referralreferralreferring domain
Displaydisplay, banner, cpmad network
Organic Videoorganic-videoyoutube
Paid Videovideo, cpvyoutube

If traffic keeps showing up as Unassigned, it's almost always a medium that doesn't match this list — for example facebook-ad instead of paid-social, or Email with a capital E.

Rule 4: Design a campaign naming pattern

utm_campaign is freeform, which is exactly why it descends into chaos. Impose a pattern. A common, sortable structure is:

{season-or-theme}-{year}-{descriptor}
spring-sale-2026-footwear
blackfriday-2026-sitewide
webinar-2026-ga4-setup

A consistent pattern means you can filter and group campaigns in GA4 with a simple contains match (spring-sale-2026) instead of hunting for a dozen spelling variants.

Never put UTM parameters on links between pages of your own site. Doing so restarts the session and overwrites the original source — so a visitor who came from Google gets re-attributed to your internal button. Use UTMs only on links that point to your site from outside it.

Putting it together

A well-formed campaign URL following these rules:

https://example.com/sale
  ?utm_source=facebook
  &utm_medium=paid-social
  &utm_campaign=spring-sale-2026-footwear
  &utm_content=carousel-ad-1

Document your conventions in a shared sheet, and use a builder that enforces lowercase and hyphenation automatically so the rules survive contact with a busy team.

Build a UTM governance system

A convention only works if it's enforced. For a team of more than one, set up lightweight governance:

  • A single source of truth. Keep one shared UTM tracking sheet where every campaign link is generated and logged. Columns: destination URL, source, medium, campaign, term, content, final URL, owner, date. One place to look means no reinventing values.
  • Dropdowns, not free text. In the sheet, make utm_source and utm_medium dropdown lists restricted to your approved values. This alone kills most fragmentation, because no one can type Facebook when the list only offers facebook.
  • A builder that enforces the rules. Have everyone generate links through a builder that lowercases and hyphenates automatically, so the convention survives a busy Friday afternoon.
  • Periodic audits. Once a quarter, open GA4's Traffic acquisition report and scan Session source / medium for near-duplicates and Unassigned rows. Fix the source at the link level; you can't retroactively merge them in GA4.

GA4 Traffic acquisition report grouped by Session source / medium, used to spot inconsistent UTM values and Unassigned traffic
Audit Session source / medium in GA4 to catch near-duplicate sources and Unassigned traffic

How UTMs feed attribution

UTMs aren't just for a source report — they're the raw material for attribution. Every multi-touch attribution model (first-click, last-click, linear, time-decay, position-based) reconstructs the path a customer took to convert, and each touch on that path is identified by its source/medium/campaign. If those values are inconsistent, the model can't tell that two touches came from the same channel, and credit gets scattered across phantom sources.

In other words, clean UTMs are a prerequisite for trustworthy attribution, not just tidy reports. The discipline you apply at link-creation time is what makes cross-channel journey analysis possible later.

Common mistakes to avoid

  • Inconsistent casing → duplicate sources in GA4
  • Spaces in values → broken, %20-laden URLs
  • Different source/medium for the same channel → fragmented channel reports
  • Freeform campaign names → impossible to group or filter
  • Tagging internal links → overwritten attribution and inflated session counts

Frequently asked questions