UTM Parameters in GA4: Where to Find Them

PC

Puru Choudhary

Last updated · published

UTM Parameters in GA4: Where to Find Them

GA4 reads your UTM parameters at three scopes. Traffic acquisition shows them per session (Session source / medium, Session campaign). User acquisition shows them once per user, from the visit that first acquired that user. The event-scoped Manual dimensions show which values earned credit for key events, in the attribution reports and explorations. Pick the scope that matches your question first, because the same link gets counted differently in each.

TL;DR

  • Session dimensions (Traffic acquisition) answer “what drove these visits?” First user dimensions (User acquisition) answer “where did these people first come from?”
  • Each standard UTM parameter has a “manual” dimension at every scope, such as Session manual source or First user manual campaign name, which Google defines as populated by that parameter.
  • Event-scoped dimensions only have values for key events. For ordinary events, analyze campaigns at session scope instead.
  • Page location keeps the full tagged URL. Page path + query string and Landing page + query string leave the UTM parameters out.
  • Campaign names containing cross-network, or matching Google’s shop / shopping pattern, can move traffic into a different default channel.
  • High-cardinality campaign values collapse into an (other) row. The BigQuery export keeps event-level values, but only from the day you link it.

Where Each UTM Parameter Lands

GA4 never shows a column called utm_source. It parses each parameter into dimensions, one per scope.

ParameterSession scopeFirst user scopeEvent scope (key events)
utm_sourceSession source, Session manual sourceFirst user source, First user manual sourceManual source
utm_mediumSession medium, Session manual mediumFirst user medium, First user manual mediumManual medium
utm_campaignSession campaign, Session manual campaign nameFirst user campaign, First user manual campaign nameManual campaign name
utm_idSession manual campaign IDFirst user manual campaign IDManual campaign ID
utm_termSession manual termFirst user manual termManual term
utm_contentSession manual ad contentFirst user manual ad contentManual ad content
utm_source_platformSession manual source platformFirst user manual source platformManual source platform

Two kinds of dimension sit in that table. They are easy to mix up.

The cross-channel ones (Session source, Session medium, Session campaign) say where the session came from, whatever the signal was: your UTMs, a referring site, organic search, or an auto-tagged Google Ads click. If a URL carries both auto-tagging and UTM parameters, Google says these dimensions use the auto-tagged values.

The manual ones are the dimensions Google defines as populated by your parameters: Session manual source by utm_source, Session manual campaign name by utm_campaign, and so on.

Use the cross-channel dimensions for the channel picture. Use the manual ones when the question is “what did our links actually send?”

GA4 also recognizes utm_creative_format and utm_marketing_tactic. Google’s campaign URL documentation says neither is currently reported in GA4 properties, so don’t build a report that depends on them. For what belongs in source, medium and campaign in the first place, see utm_campaign, utm_medium and utm_source in Google Analytics. For the platform parameter, see UTM source platform.

Page Location Keeps the Tagged URL

Sometimes you need the URL itself, to check what a link sent. Google defines Page location as the complete URL of the page someone visited, so that is the dimension to use.

GA4 leaves UTM parameters out of Page path + query string and Landing page + query string. Google’s documentation says that information is populated in Page location instead (source). For campaign analysis, read the traffic-source dimensions, which hold what GA4 parsed.

If You’re Coming from Universal Analytics

Universal Analytics read the same utm_ parameters into its Acquisition > Campaigns reports, without GA4’s separate session and first user scopes. Standard Universal Analytics properties stopped processing data on July 1, 2023, and Analytics 360 properties on July 1, 2024. If you still compare against old UA exports, GA4’s session dimensions are the closer match.

Traffic Acquisition Is the Campaign Report

Go to Reports > Acquisition > Traffic acquisition. It opens on a channel group dimension, which is a rule-based bucket, not your UTM values.

Change it:

  1. Open the primary dimension dropdown and pick Session source / medium or Session campaign.
  2. Click the plus icon next to it to add a secondary dimension, such as Session manual ad content to split one campaign by creative.
  3. Filter to one campaign before comparing creatives, or the table mixes every campaign’s content values together.

Every row here describes sessions. A person who arrives through three different tagged links on three separate visits shows up in three rows, one per session. That is the right answer when the question is which campaign drove traffic this week.

Untagged return visits keep the campaign. GA4 attributes sessions on a non-direct last click basis, so if that person comes back by typing your URL, the session stays under their last campaign as long as that campaign visit falls inside the key event lookback window (90 days by default).

User Acquisition Is the First Touch

Go to Reports > Acquisition > User acquisition. Its dimensions carry the First user prefix, and they are set by the visit that first acquired the user.

They don’t change afterwards. Google’s scopes documentation says the value of each user-scoped dimension stays the same as users return.

Here is how one person splits across the two reports. The values are hypothetical.

  • Visit 1: they click your newsletter, tagged newsletter / email / 2026-09_product-update.
  • Visit 2, nine days later: they click a LinkedIn ad, tagged linkedin / paid_social / 2026-q3_webinar.

Traffic acquisition shows two sessions, one under each campaign. User acquisition shows one user, under the newsletter, and keeps them there on every later visit.

Neither report is wrong. They answer different questions.

When a stakeholder says two GA4 reports disagree about the same campaign, compare the dimension prefixes first. Session, First user and no prefix are three separate scopes. The GA4 chapter of the Marketing Taxonomy Guide walks through all three scopes on a single timeline.

Key Events Use the Manual Dimensions

Mark the events that matter as key events (GA4’s name for conversions since 2024): Admin > Data display > Events, then click the star next to the event. The event-scoped dimensions, the ones with no prefix, then show which UTM values earned credit for each key event: Manual source, Manual medium, Manual campaign name, and the rest of the table above. Google shows them in the attribution reports under Advertising (Model comparison and key event paths), and you can use them in explorations.

Credit follows your property’s attribution model, data-driven by default. Traffic acquisition credits each key event to the session it happened in. So the two won’t agree on key events per campaign. That is expected, not a tracking fault.

Event-scoped dimensions only exist for key events. For any other event, Source and Medium read (not set). To see which campaigns drove an ordinary event, stay at session scope: switch Traffic acquisition’s Event count column to that event, or put it next to Session manual campaign name in an exploration.

Explorations for Everything Else

The standard reports cover the common questions. For the rest, go to Explore and build a free-form exploration:

  • Rows: Session manual campaign name, then Session manual ad content.
  • Values: Sessions, Engaged sessions, Key events.
  • Filter: Session manual medium exactly matches email, for example.

Build each exploration from one scope unless the cross-tab is the point. Put Session manual source next to First user manual source and each row counts sessions from one source by users first acquired through another, which is rarely the question you meant to ask.

When Values Show as (not set) or (direct) / (none)

Two failure labels. They mean different things.

(direct) / (none) means GA4 found no source for the session: no parameters, no click identifier, no usable referrer, and no earlier non-direct visit from the same user inside the lookback window to carry forward. For paid traffic the cause is usually upstream, like a redirect that dropped the query string. The paid-as-direct diagnostic walks through the triage.

(not set) means GA4 received the data but couldn’t resolve that particular dimension. For campaign dimensions the usual cause is an incomplete link: Google says missing UTM parameters produce (not set), so a link with source and medium but no utm_campaign reports Session campaign as (not set). Other causes include a session with no session_start event and consent mode setup errors. The GA4 UTM data diagnostic ranks them in the order worth checking.

Campaign Names Can Change the Channel

The default channel group doesn’t only read source and medium. Two of Google’s rules for manually tagged traffic read the campaign name.

  • A campaign name containing cross-network goes to the Cross-network channel.
  • A campaign name matching Google’s shopping pattern goes to Paid Shopping when the medium matches the paid pattern. Otherwise it goes to Organic Shopping, which has no medium condition, unless the medium is on the Display list (display, banner, expandable, interstitial), a rule Google lists ahead of it. The pattern catches shopping anywhere, and shop at the start of the name, after a non-letter such as _, - or a digit, or after the letter e: fall_shop_launch and eshop match, workshop doesn’t.

Google lists both rules ahead of Email and Referral in its channel definitions. So an email send named fall_shop_launch lands in Organic Shopping, even with utm_medium=email.

Keep those words out of campaign names unless you mean them. The source, medium and campaign guide covers the full rule set.

The (other) Row and What BigQuery Keeps

Every GA4 report table has a row limit. When a dimension has more unique values than the table allows, GA4 shows the most common values and folds the rest into a single (other) row. Google says any dimension with more than 500 values should be considered high cardinality.

Campaign names are a classic cause. Put a date or an ad ID into every link and one campaign becomes hundreds of values. The long tail disappears into (other). Google recommends standard reports where possible, because their aggregate tables make the (other) row less likely.

The BigQuery export has no report tables to overflow. It holds events. Events that arrived with campaign parameters carry the values in the collected_traffic_source record (manual_source, manual_campaign_name and the rest), and session_traffic_source_last_click holds each session’s attributed source.

One catch: the export starts when you link it. Google’s setup guide says data starts flowing within 24 hours of linking, and the linking steps offer no option to export earlier days. Link BigQuery before you need the history.

Clean Values Make Every Scope Readable

Every report in this piece reads the same inputs. If one team types LinkedIn and another types linkedin, GA4 shows two sources at every scope, because parameter values are case sensitive.

Terminus, the marketing taxonomy governance platform, fixes this where links are made: picklists hold the allowed values for each UTM field, and every link is validated against your rules (case, spaces, patterns) before it ships. The template library has ready-made governance models to start from.

Pick one casing rule and one campaign naming pattern before your next send, then check a week of Traffic acquisition against them.

FAQ

Where do I find UTM parameters in GA4?

In Reports > Acquisition > Traffic acquisition, change the primary dimension to Session source / medium or Session campaign. For utm_term and utm_content, add Session manual term or Session manual ad content as a secondary dimension, or use an exploration.

What is the difference between Session source and Session manual source?

Session source is the cross-channel answer and also covers referrals, organic search and auto-tagged Google Ads clicks. Session manual source is the dimension Google defines as populated by utm_source.

Why does User acquisition show a different campaign than Traffic acquisition?

User acquisition uses First user dimensions, which record the visit that first acquired the user and don’t change later. Traffic acquisition uses Session dimensions, which describe each session. A returning visitor from a new campaign appears under the new campaign in one report and the original campaign in the other.

Why do my events show (not set) as the source?

Event-scoped Source and Medium only get values for key events. For other events they read (not set). Use session-scoped dimensions such as Session source / medium instead.

Can a campaign name change the channel in GA4?

Yes. A campaign name containing cross-network goes to Cross-network, and one matching Google’s shop or shopping pattern goes to Paid Shopping or Organic Shopping, depending on the medium.

Why do some of my campaigns show as (other)?

The report hit its row limit, so GA4 folded the less common values into one row. Cut the number of unique campaign values, or query the BigQuery export, which holds individual events rather than report tables.

Does the BigQuery export include data from before I linked it?

Plan as if it doesn’t. Google’s setup guide says data starts flowing within 24 hours of linking, and the linking steps offer no option to export earlier days. Link it before you need the history.

Where can I see the full tagged URL?

Use the Page location dimension, which Google defines as the complete URL of the page visited. Page path + query string and Landing page + query string won’t show it, because GA4 omits UTM parameters from both. In the BigQuery export, the page_location event parameter holds the full URL.

Terminus helps you and your team be consistent in UTM tracking

Try Terminus risk-free for 21 days. Cancel anytime with 1 click.