Skip to main content
Terminus
Contents
Going DeeperChapter 11 · ~6 min read

UTM Tracking in Google Analytics 4

Event-based tracking, scoping, channel groupings, and BigQuery.

On this page

GA4 renames all five UTM dimensions, answers “where did this traffic come from?” at three different scopes, and files any source/medium pair it can’t match to a channel rule under “Unassigned”.

Every one of those is a defensible design choice with sharp edges. This page is the map of the edges: which scope a report is showing you, how to keep your traffic out of “Unassigned”, and when to leave the interface for BigQuery.

The Event-Based Model and UTM Processing

GA4 treats every interaction as an event. UTM parameters ride in on the URL of the session’s first tagged pageview and propagate as session-scoped dimensions to every event in that session. That buys you real flexibility in how traffic source data can be queried. It also means GA4 holds several versions of “the source” for the same user, and hands you whichever one your report happens to ask for. Knowing which one you asked for is the skill this chapter teaches.

How UTM Parameters Map to GA4 Dimensions

GA4 maps the standard UTM parameters to renamed dimensions:

UTM ParameterGA4 DimensionAPI Field
utm_sourceSession sourcesessionSource
utm_mediumSession mediumsessionMedium
utm_campaignSession campaignsessionCampaignName
utm_termSession manual termsessionManualTerm
utm_contentSession manual ad contentsessionManualAdContent

GA4 also recognizes utm_id, utm_source_platform, utm_creative_format, and utm_marketing_tactic as additional parameters, extending the original five-parameter model, though the last two aren’t currently reported in GA4 properties.

Traffic Source Scoping: Session, User, and Event

GA4 introduces multiple scopes for traffic source dimensions, and this is its most consequential feature for anyone reading campaign reports:

  • Session-scoped (e.g., Session source, Session medium) reflect the traffic source that initiated a specific session. These are the direct successors to traditional source/medium dimensions.
  • User-scoped (e.g., First user source, First user medium) capture the traffic source from the user’s very first session. These are immutable and valuable for understanding initial acquisition channels.
  • Event-scoped (e.g., Source, Medium) reflect the traffic source attributed to a specific key event (GA4’s name for a conversion since 2024) based on the active attribution model.
ScopeSession 1 (google/cpc)Session 2 (linkedin/social)Session 3 (google/organic)
User-scoped: "First user source"google/cpc(unchanged)(unchanged)
Session-scoped: "Session source"google/cpclinkedin/socialgoogle/organic
Event-scoped: "Source"Depends on attribution model applied to each key eventDepends on attribution model applied to each key eventDepends on attribution model applied to each key event
GA4 Traffic Source Scopes

The same conversion can report three different source values, every one of them technically correct. When a stakeholder swears two GA4 reports disagree about the same campaign, check the scopes before you check anything else. It is almost always the scopes.

Here’s when each scope “locks in” its value:

Timeline: User's relationship with your site
═══════════════════════════════════════════════════════════════════

Day 1              Day 14               Day 30
Google Ad click    LinkedIn post click  Direct visit → CONVERTS
(google/cpc)       (linkedin/social)    (direct/none)
     │                   │                    │
     │                   │                    │
     ▼                   │                    │
 ┌──────────┐            │                    │
 │ USER     │ Locked on Day 1. Never changes. │
 │ SCOPE    │ = google / cpc                  │
 └──────────┘            │                    │
                         ▼                    │
                    ┌──────────┐              │
                    │ SESSION  │ Changes each session.
                    │ SCOPE    │ Session 1: google/cpc
                    └──────────┘ Session 2: linkedin/social
                                  Session 3: direct/none


                                         ┌──────────┐
                                         │ EVENT    │ Depends on
                                         │ SCOPE    │ attribution
                                         └──────────┘ model applied
                                           to this
                                           key event

Match the scope to the question. “Where do our users come from?” is user-scoped. “What drove traffic this week?” is session-scoped. “What gets credit for key events?” is event-scoped. Mix them in the same report and the numbers stop making sense.

Default Channel Grouping and UTM Values

GA4 classifies traffic into Default Channel Groups by testing your source and medium together against a fixed set of rules. The matching itself is case-insensitive (Google’s own wording: “Channel definitions aren’t case sensitive and can’t be edited”), but the dimension values stay case-sensitive in your reports, so Paid_Social classifies fine and still fragments your medium reports per Chapter 5. The rules:

Channel GroupGA4’s rule
Emailsource or medium is email, e-mail, e_mail, or e mail
Paid Searchsource is a known search site (google, bing, …) and medium matches ^(.*cp.*|ppc|retargeting|paid.*)$
Paid Socialsource is a known social site (facebook, linkedin, …) and medium matches the same paid pattern
Paid Videosource is a known video site (youtube, …) and medium matches the same paid pattern
Displaymedium is display, banner, expandable, interstitial, or cpm
Organic Socialsource is a known social site, or medium is social, social-network, social-media, sm, social network, or social media
Organic Videosource is a known video site, or medium matches ^(.*video.*)$
Affiliatesmedium is affiliate
Referralmedium is referral, app, or link

Read the paid rows closely: all three paid channels share one medium pattern (anything containing cp, starting with paid, or exactly ppc or retargeting), and what separates Paid Search from Paid Social from Paid Video is the source. The organic rules are the opposite kind of test: exact-match lists, where a value is either on the list or it isn’t. social-media is on the Organic Social list; social_media is not.

Miss every rule (utm_medium=social-paid instead of paid_social, say: the paid marker has to lead) and classification falls back on the source alone. From a recognized social source, the traffic lands in Organic Social and your ad spend reads as organic. From any other source, it drops to “Unassigned”. Auditing your UTM taxonomy against these rules is a critical governance task: use the starter taxonomy in Chapter 3 as a reference, as it was designed to align with them.

The simulator below runs these rules live, and it teaches the two-layer trap. Hand-type Paid Social as the medium and the channel holds: the paid pattern reads straight through the capitals. The damage lands one level down, where case-sensitive dimension values split one medium into two report rows. Then try social_media from a source GA4 doesn’t recognize, and watch an exact-match list forgive nothing.

TRY IT · How GA4 reads your link

yoursite.com/spring?utm_source=facebook&utm_medium=paid_social&utm_campaign=spring_sale-shoes-2026_03

Session sourceSession mediumDefault channel group
facebookpaid_socialPaid Social

"paid_social" matches GA4's paid pattern (case ignored: channel definitions aren't case sensitive) and facebook is a recognized social site → Paid Social.

GA4 Explorations for UTM Analysis

Explorations go deeper than the standard Traffic Acquisition reports:

  • Free-form explorations combine UTM dimensions with metrics like sessions, engaged sessions, key events, and revenue in customizable tables.
  • Funnel explorations filtered by UTM dimensions reveal how campaign traffic progresses through conversion steps.
  • Path explorations filtered by campaign parameters expose behavioral patterns of users from specific UTM-tagged links.

Build explorations from one scope at a time. Mix session-scoped traffic dimensions with user-scoped acquisition dimensions and you get a table that looks reasonable and means nothing.

Data-Driven Attribution and UTMs

GA4 defaults to a data-driven attribution model, replacing the traditional last-click default. The model uses machine learning to distribute credit for each key event across multiple touchpoints based on observed patterns, and UTM parameters are the primary mechanism by which those touchpoints are identified. Under last-click, a sloppily tagged middle touchpoint cost you little; nobody was looking at it. Under data-driven attribution, every tagged click is a node in the model, so consistent tagging matters more now than it ever did before.

For a deeper discussion of attribution models and how to use them, see Chapter 9.

Key Differences Practitioners Should Know

  • Session counting: GA4 does not start a new session when campaign parameters change mid-visit. Expect lower session counts for campaigns driving repeat clicks.
  • Processing latency: GA4 standard reports may take 24-48 hours to fully process.
  • Thresholding: When a report draws on demographic or search-query data, GA4 applies data thresholds to protect anonymity. Low-volume campaign segments may be withheld from reports entirely.
  • Cardinality limits: High-cardinality dimensions (e.g., campaigns with many unique values) may be grouped into an “(other)” row when a report’s row limit is exceeded. Explorations aren’t immune; the BigQuery export is.

BigQuery Export: UTM Data in Raw Event Tables

GA4’s BigQuery export provides unsampled, full-fidelity UTM data. Key schema fields include:

  • traffic_source.source, traffic_source.medium, traffic_source.name: user-scoped first acquisition data
  • collected_traffic_source.manual_source, collected_traffic_source.manual_medium, collected_traffic_source.manual_campaign_name: the UTM values as collected on each individual event
  • session_traffic_source_last_click: the session’s last-click traffic source, across manual and Google Ads contexts

Querying BigQuery lets analysts build custom channel groupings, perform attribution analysis, and join UTM data with CRM or cost data without the sampling, thresholding, or cardinality limitations of the GA4 interface. The interface summarizes; the export just hands you the events. For organizations with mature data infrastructure, this is the recommended approach for enterprise-grade UTM analysis.


The short version: GA4 answers “where did this come from?” at three scopes: user (first ever visit), session (this visit), event (whatever the attribution model decides). Pick the scope that matches the question, and never mix them in one report. Your source and medium either match one of GA4’s channel rules or your traffic files under “Unassigned”. Data-driven attribution makes every tagged click a node in the model, so tagging discipline pays off more than it did under last-click. And when sampling or thresholding gets between you and the numbers, BigQuery has the raw events.

Next upChapter 12: Privacy and Compliance