Home/ Guides/ Reading UTM data in GA4

Guide · Campaigns

One campaign, five rows in GA4.

You tagged a campaign, opened GA4, and the same campaign is scattered across half a dozen rows — or filed under the wrong channel. Here's where UTMs actually live in GA4, which report to open, and why the rows split.

Updated June 5, 2026 · by slsh.me

The short answer

GA4 reads UTMs as exact, case-sensitive strings.

report Traffic acquisition dimension Session source / medium split by casing & spelling

UTMs appear under Reports → Acquisition → Traffic acquisition; switch the dimension to Session source / medium or Session campaign. Rows split because GA4 stores each value verbatim — Newsletter, newsletter and NEWSLETTER are three rows. And traffic lands in the wrong channel when utm_medium isn't a value GA4's Default Channel Grouping recognises. Both are fixed by tagging consistently at the source.

Stop the split before it reaches GA4: build clean, consistent links with the free slsh.me UTM builder, or let a slsh.me campaign stamp the same UTMs on every link automatically. Links already live? Paste one into the UTM parser to catch the casing splits before GA4 does.

Where each UTM lands in GA4.

GA4 renames the five UTM parameters into its own dimensions. This is the map.

UTM parameter GA4 dimension Where to find it
utm_sourceSession sourceTraffic acquisition → Session source / medium
utm_mediumSession mediumTraffic acquisition → Session source / medium
utm_campaignSession campaignTraffic acquisition → Session campaign
utm_termManual termExplore, or a custom report dimension
utm_contentManual ad contentExplore, or a custom report dimension

Start in Traffic acquisition. Reports → Acquisition → Traffic acquisition, then click the primary-dimension dropdown and pick Session source / medium for source+medium together, or Session campaign to roll everything up by campaign. The "Session" versions attribute to the source of the visit; there are matching "First user" versions that attribute to first-ever acquisition — pick Session for campaign reporting.

utm_term and utm_content don't appear in the standard reports' dropdown. To see them, open Explore, start a blank exploration, and add Session manual term and Session manual ad content as dimensions alongside your metric.

Why one campaign becomes many rows.

Three causes, in order of how often they're the culprit.

1

Inconsistent casing

GA4 values are case-sensitive. Newsletter, newsletter and NEWSLETTER are three distinct rows that never add up. Pick one case — lowercase is the convention — and never deviate.

2

Spelling & synonym drift

The same channel tagged different ways fragments instantly: email vs e-mail vs mail, or facebook vs fb vs meta. GA4 has no idea these are the same thing — each spelling is its own row.

3

Stray spaces & encoding

A trailing space or an encoded space (spring%20sale) reads as a different value from spring-sale. Use hyphens, never spaces, and trim whitespace. One scheme applied everywhere is the only durable fix.

Notice the theme: GA4 won't reconcile any of this for you — it reports exactly what arrives in the URL. So the fix lives upstream, at link-creation time, not in the reports. Lock in a convention (see the UTM naming convention guide) and what goes in each field (the source vs medium vs campaign guide).

Why traffic lands in the wrong channel.

Separate from row-splitting, GA4 also buckets every session into a Default Channel Grouping (Email, Paid Search, Organic Social, Referral…). It decides the bucket largely from utm_medium, matched against a fixed rulebook.

Use a medium GA4 recognises — email, cpc/ppc/paid, organic, social, affiliate, referral — and the session lands in the right channel. Use a creative one like newsletter, blast or qr and GA4 can't classify it, so it falls into Unassigned or gets mis-bucketed. Put the channel type in utm_medium (email) and the specific platform in utm_source (newsletter) — that's exactly the split GA4's grouping expects.

Fix it before it reaches GA4.

Cleaning split rows after the fact means filters, regex and custom channel groups — work you redo every campaign. Far easier to never emit an inconsistent tag in the first place. Build links from a single template so the casing and spelling are identical every time.

The free slsh.me UTM builder lays out all five parameters, lowercases and hyphenates as you type, and shows the finished URL — so every link you ship carries identical, GA4-friendly tags. No more reconciling rows after the campaign's already live.

Build a clean UTM link, free

Or go further: a slsh.me campaign stamps the same source/medium/campaign on every link in it automatically — consistency by construction.

Questions

Where do I see UTM parameters in GA4? +
Open Reports → Acquisition → Traffic acquisition, then change the primary dimension to Session source / medium or Session campaign. utm_source/utm_medium map to those values, utm_campaign to Session campaign, and utm_term/utm_content are available as Manual term and Manual ad content in an Explore report.
Why is one campaign split into multiple rows in GA4? +
GA4 treats UTM values as case-sensitive exact strings, so Newsletter, newsletter and NEWSLETTER become three rows. The same happens with inconsistent spelling — email vs e-mail, facebook vs fb. Every variation is a distinct row. The fix is one strict naming convention applied to every link before it ships.
How long does UTM data take to appear in GA4? +
Realtime shows sessions within minutes, but standard reports like Traffic acquisition usually finalize within 24–48 hours. If a new campaign looks empty, check Realtime first to confirm the tags fire, then wait a day for the standard reports to fill in.
Why does my UTM traffic show as (not set) or the wrong channel? +
(not set) usually means the parameter was missing or empty on the link. Wrong-channel grouping happens because GA4's Default Channel Grouping reads utm_medium against fixed rules: email → Email, cpc/ppc → Paid, known social values → Social. A non-standard medium like newsletter lands in Unassigned. Use standard medium values so GA4 buckets traffic correctly.

Clean tags, clean reports.

slsh.me campaigns stamp the same UTMs on every link, so GA4 sees one row per campaign — not five. Shorten, tag and track in one place, with live click analytics, free.

Start a campaign with slsh.me

Free forever · see pricing