Where UTM data lands in GA4
Google Analytics 4 translates your UTM parameters into its own dimensions. The mapping is the first thing to learn, because GA4 rarely shows the raw parameter names:
| Your UTM parameter | GA4 dimension | Example |
|---|---|---|
utm_source | Session source | newsletter, google, instagram |
utm_medium | Session medium | email, cpc, social |
utm_campaign | Session campaign | spring-launch |
utm_term | Session manual term | running shoes |
utm_content | Session manual ad content | hero-button |
The "Session" prefix matters: these dimensions describe the session's first attributed source. GA4 also offers "first user" variants (the very first source that ever brought the user) — useful for lifetime analysis, confusing if you mix them with session-scoped numbers in one report.
The traffic acquisition report
Start at Reports → Acquisition → Traffic acquisition. This is GA4's home base for UTM reading. The default table groups by "Session default channel group" — GA4's own categorization, driven mostly by your utm_medium. To read your actual tags, change the primary dimension: click the dimension dropdown and switch to Session source, Session medium, or Session campaign. Add a secondary dimension (the "+" button) to cross-tabulate — source by campaign is the classic view for judging which efforts delivered.
Pay attention to the metrics beyond sessions: engaged sessions, engagement rate, and conversions per source tell you about quality, not just volume. A source sending thousands of sessions with near-zero engagement is a targeting problem wearing a traffic costume.
Building a custom exploration
When the standard report cannot answer the question, use Explore → Free form. A practical setup for campaign analysis:
- Rows: Session campaign, then Session source / medium as nested rows.
- Columns: leave empty or add device category for a split.
- Values: Sessions, engaged sessions, engagement rate, key events (conversions).
- Filters: Session campaign contains your campaign prefix, to isolate the test.
Explorations also let you use the manual term and ad content dimensions that the standard reports hide — this is where utm_term and utm_content finally become visible for creative-level analysis. For Google Ads traffic, the bigger question is whether to tag manually at all: GA4's auto-tagging can replace utm_term entirely — this manual vs. auto-tagging comparison lays out the trade-offs.
Source vs. medium vs. campaign: reading the hierarchy
Read the three dimensions as a hierarchy, not as rivals. Medium answers "which channel type works" (email vs. paid social). Source answers "which property within the channel" (newsletter vs. partner email). Campaign answers "which specific effort" (spring-launch vs. webinar). A healthy analysis moves down the hierarchy: medium shows email outperforming social, source shows the newsletter driving it, campaign shows which send. Each level suggests a different action — reallocate budget, double down on a partner, or repeat a winning creative. If the medium vocabulary itself is unfamiliar, this guide to the UTM parameters explained breaks down what each parameter identifies and how they combine.
Common "why is my data weird" fixes
| Symptom | Likely cause | Fix |
|---|---|---|
Traffic shows as (direct) | Links shared without tags, or tags stripped by redirects | Tag at the source; test the full redirect chain |
(not set) in campaign rows | Sessions with no campaign parameter — normal for untagged traffic | Filter it out of campaign analysis; tag more links |
Email and email as separate rows | Case inconsistency in tagging | Standardize on lowercase; document the vocabulary |
| Self-referrals from your own domain | Missing domain in data stream settings, or untagged subdomains | Configure unwanted referrals and cross-domain tracking |
| One campaign, wildly different results by week | Value reuse — same campaign name for different efforts | Give each effort a unique, dated campaign value |
(unassigned) and other mysteries
GA4's (unassigned) channel group collects sessions its rules cannot categorize — often from unusual medium values or missing parameters. It is not broken data; it is uncategorized data. Reduce it by keeping your medium vocabulary to standard values (email, social, cpc, referral, organic) and creating custom channel groups under Admin → Channel groups for the oddballs you genuinely need. Some unassigned will always remain — apps and dark social do not always pass referrers — so treat it as a known unknown, not a crisis.
Tagging correctly in the first place prevents most of these mysteries. Build clean, consistent URLs with our UTM source generator, and review the naming conventions in our UTM naming conventions guide.
Frequently asked questions
Why does GA4 show "Session source" instead of utm_source?
GA4 renames UTM parameters into its dimension system. Session source is the session-scoped version of utm_source; "first user source" is the user-scoped equivalent. They answer different questions, so check which one your report uses.
How long until tagged traffic appears in GA4?
Real-time reports show it within seconds — always verify new campaigns there first. Standard reports typically reflect the data within a day.
Can I see utm_content in standard reports?
Not directly — use Explore with the "Session manual ad content" dimension. Standard reports expose source, medium and campaign; the optional parameters live in explorations.
What is the difference between traffic acquisition and user acquisition?
Traffic acquisition attributes by session (what brought this visit); user acquisition attributes by first touch (what brought this user ever). For campaign analysis, traffic acquisition is usually the right one.
Do UTMs work if the visitor uses an ad blocker?
UTMs are just URL parameters — blockers do not strip them. But if the blocker prevents GA4 itself from loading, the session is never recorded at all, tagged or not.