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.
Tools used in this guide
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-2026Everything 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-bannervssidebar)
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/cpc→ Paid Search - Microsoft Ads →
bing/cpc→ Paid Search - Facebook/Instagram Ads →
facebook/paid-social→ Paid Social - Organic social post →
facebook/social→ Organic Social - Email newsletter →
newsletter/email→ Email - Affiliate →
partner-name/affiliate→ Referral
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 GA4 | utm_medium values that match | Typical utm_source |
|---|---|---|
| Paid Search | cpc, ppc, paidsearch | google, bing |
| Paid Social | paid-social, paidsocial, social-paid | facebook, instagram, linkedin |
| Organic Social | social, social-network, sm | facebook, x, linkedin |
email, e-mail, newsletter | newsletter, crm | |
| Affiliates | affiliate | partner-name |
| Referral | referral | referring domain |
| Display | display, banner, cpm | ad network |
| Organic Video | organic-video | youtube |
| Paid Video | video, cpv | youtube |
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-setupA 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.
Rule 5: Don't UTM-tag internal links
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-1Document 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_sourceandutm_mediumdropdown lists restricted to your approved values. This alone kills most fragmentation, because no one can typeFacebookwhen the list only offersfacebook. - 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 / mediumfor near-duplicates and Unassigned rows. Fix the source at the link level; you can't retroactively merge them in GA4.

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