SEO/Marketing

How to Track UTM Campaigns in GA4

How to Track UTM Campaigns in GA4

Your UTM data lands in Reports → Acquisition → Traffic acquisition, where you switch the dimension dropdown to Session source, Session medium, or Session campaign to see the values you tagged.

If it isn't there, the two most likely reasons are that not enough time has passed standard reports can take 24 to 48 hours to process  or that your URL was missing one of the three core parameters.

This page covers where campaign data appears, how to verify tagging is working before you wait a day, and how to diagnose it when the numbers don't arrive.

What Happens After Someone Clicks a UTM Link

The sequence is short, and knowing it makes troubleshooting far faster.

  1. A visitor clicks your tagged URL.
  2. They land on your site, and if no session is currently active, GA4 begins one.
  3. GA4 fires a session_start event. This event carries the information that determines the session's attribution the UTM parameters, the GCLID if present, and the referrer.
  4. Those values populate the traffic-source dimensions for that session.
  5. After processing, they appear in your acquisition reports.

The critical detail is step 3. Attribution is decided at session start. Whatever parameters are on the URL at that moment become the session's source, medium, and campaign, and parameters that arrive later in the same session generally don't replace them.

That single fact explains several symptoms further down this page.

Where to Find UTM Campaigns in GA4

Reports → Acquisition → Traffic acquisition

The report opens on Session default channel grouping. To see your tagged values, change the dimension using the dropdown above the first column. The options available there are:

  • Session default channel grouping
  • Session source
  • Session medium
  • Session source / medium
  • Session campaign
  • Session source platform

Session source / medium is usually the most useful single view, because it shows both halves of the pair together and makes mismatches obvious immediately.

One honest caveat. GA4 properties can be customised, and Google notes that if you can't find a report, it may have been removed or may not be in your default view an Editor or Administrator can add it back to the navigation. If the path above doesn't match what you see, your property has been configured differently. That is not a tracking problem.

If you set utm_id, it isn't in that dropdown

utm_id populates the Manual campaign ID dimension, which is not among the dimensions offered in the standard Traffic acquisition report.

To see it, build an Exploration (Explore → Blank) and add the Session manual campaign ID dimension there. This catches people out regularly, because the advice to set utm_id is common and the advice on where to find it afterwards is not. 

Session Scope vs First User Scope

This is the most common reason two people look at the same GA4 property and disagree about whether campaigns are working.

GA4 records traffic source at three scopes, and the prefix tells you which one you're looking at:

ScopePrefixAnswersReport
UserFirst user…How was this user originally acquired?User acquisition
SessionSession…How was this session acquired?Traffic acquisition
Eventno prefixWhich source gets credit for this key event?Attribution reports

Google states the distinction plainly: the User acquisition report is scoped to new users, while the Traffic acquisition report is scoped to new sessions.

The practical consequence. A visitor who first found you through organic search in March and then clicks your tagged email campaign in August is counted as organic search in User acquisition permanently and as your email campaign in Traffic acquisition. Both are correct. They answer different questions.

If you're checking whether a campaign is delivering traffic, use Traffic acquisition. User acquisition will under-report every campaign that reaches people who already knew you, which is most campaigns.

Google also warns against comparing metric values between the two reports, precisely because the scopes differ. Numbers that don't match across those reports are not evidence of a problem.

How Each UTM Parameter Maps to GA4

ParameterManual dimensionSession-scoped dimensionAvailable in Traffic acquisition?
utm_sourceManual sourceSession sourceYes
utm_mediumManual mediumSession mediumYes
utm_campaignManual campaign nameSession campaignYes
utm_idManual campaign IDSession manual campaign IDNo use an Exploration
utm_source_platformManual source platformSession source platformYes
utm_termManual termNo use an Exploration
utm_contentManual ad contentNo use an Exploration
utm_creative_formatNot currently reported
utm_marketing_tacticNot currently reported

Two parameters are collected but not currently surfaced in standard Google Analytics reporting. If you tagged them and can't find them, nothing is broken.

A Worked Example

You send a newsletter promoting a webinar, using this link:

https://onlinetoolpot.com/tool/campaign-url-builder

       ?utm_source=newsletter

       &utm_medium=email

      &utm_campaign=summer_webinar_2026

      &utm_content=hero_cta

After processing, here is where each value appears:

Where you lookWhat you see
Traffic acquisition, Session source / mediumnewsletter / email
Traffic acquisition, Session campaignsummer_webinar_2026
Traffic acquisition, Session default channel groupingEmail
Exploration with Manual ad contenthero_cta
User acquisitionWhatever originally acquired each user often not this campaign

The channel shows as Email because GA4 classifies a session as Email when the source or medium matches an email variant. Your utm_medium=email satisfies that.

How to Test UTM Tracking

Do this before the campaign goes out, not after.

Step 1 : Open the tagged URL yourself. Click it exactly as a recipient would. Confirm it lands on the right page and that the parameters are still in the address bar. If they've vanished, a redirect stripped them, and nothing downstream will work.

Step 2 : Check Realtime. Go to Reports → Realtime, which shows activity from the past 30 minutes. Your visit should appear with the source and medium you tagged. This is your fastest confirmation that parameters are being received.

Step 3 : Use DebugView for event-level detail. DebugView monitors events from a specific device over a longer window than Realtime's 30 minutes, which makes it the right tool when you need to see exactly what a session_start event carried.

Step 4 : Wait, then check standard reports. Many reports and explorations take 24 to 48 hours to process data. If Realtime showed the correct values, the standard reports will follow. Checking Traffic acquisition an hour after launch and finding nothing tells you nothing.

One testing trap. If you already have an active session on your own site, clicking your tagged link won't create a new session and since attribution is set at session_start, your test won't register as a new campaign visit. Test in a fresh incognito window.

Why Your UTM Parameters Aren't Showing in GA4

Work through these in order. They are sequenced by how long each takes to check, not by how likely they are to be interesting the first three resolve most cases and cost almost nothing.

1. Not enough time has passed (10 seconds to rule out)

Standard reports can take 24 to 48 hours. Check Realtime instead: if your tagged visit appears there with the right values, the tagging is working and you are simply early.

This is the single most common cause of a "UTM tracking is broken" report, and it isn't a fault.

2. You're looking at the User acquisition report (10 seconds)

User acquisition is scoped to new users and shows how each user was first acquired. Your campaign won't appear for anyone who already knew you. Switch to Traffic acquisition.

3. The dimension is still on default channel grouping (10 seconds)

The Traffic acquisition report opens on Session default channel grouping. Your campaign values only appear once you change the dimension to Session source, Session medium, or Session campaign.

4. A redirect stripped the parameters (1 minute)

Open the tagged URL and look at the address bar after it settles. If the parameters are gone, something removed them a server-side redirect, a JavaScript redirect, a URL shortener, a trailing-slash rewrite, or a marketing platform's own link handling.

This breaks tracking completely and silently. Test every tagged link end to end before launch, especially any that pass through a shortener.

5. The URL was only partially tagged (2 minutes)

This one has a specific and non-obvious mechanism.

Google documents that where a GCLID or DCLID cannot be used as intended, if any UTM parameter is present on the URL, Analytics derives all cross-channel traffic-source dimension values from the UTM parameters exclusively. Partial tagging is not treated as partial once one UTM is present, Analytics stops inferring the rest from anywhere else, and the missing ones can arrive as (not set).

Google's guidance follows from this: if you set one UTM parameter, set all the relevant ones particularly source, medium, campaign, utm_id, and utm_source_platform.

Symptom to recognise: some campaign dimensions populated, others showing (not set), on traffic you know arrived from a tagged link.

6. Types and malformed parameters (2 minutes)

Check the exact string. The failures that look fine at a glance:

  • utm_soruce or any misspelled key silently ignored
  • ? used twice, or & before the first parameter
  • A space in a value, encoding as %20 and creating a distinct value
  • Capitalisation differences creating a second value for the same thing
  • Invented keys like utm_agroup GA4 only reads the documented parameters

7. Values are fragmented across capitalisation or spelling (5 minutes)

The data is arriving, but split. Facebook and facebook are two rows; so are fb and meta. Your campaign looks like it underperformed because its traffic is divided across several rows.

This is a naming problem rather than a tracking problem  our naming conventions guide covers the fix and how to prevent it.

8. The medium value put the session in the wrong channel (5 minutes)

Your source, medium, and campaign are all recorded correctly, but the session was filed under an unexpected channel often Organic Social for traffic you paid for, or Unassigned for an offline medium.

GA4 assigns channels by testing your source and medium against published conditions. A medium that looks descriptive to a human but matches none of the paid conditions gets classified as unpaid. Again, naming conventions rather than tracking.

9. Auto-tagging is overriding your manual tags (5 minutes)

If the traffic is from Google Ads, see the next section. This is expected behaviour, not a fault.

10. Analytics isn't collecting on the landing page (10 minutes)

If the GA4 tag is missing or misfiring on the page your campaign points to, no session_start event fires and there is no attribution to record. Check that the landing page is tagged campaign destinations are often newly built pages, and newly built pages are where tags get forgotten.

A related documented cause: if your Analytics configuration tag isn't set to fire on the Initialization trigger, the session_start event can be missing, and Session source / medium shows (not set).

11. Consent or cookie banners are blocking collection (15 minutes)

If GA4 is blocked until a visitor accepts cookies, the session_start event may not carry the campaign parameters. Google documents several consent-related causes of (not set). This is worth investigating if (not set) is widespread rather than campaign-specific.

12. High cardinality is aggregating your rows into (other) (15 minutes)

If you generate a very large number of unique campaign values, you may be hitting GA4's cardinality limits — a dimension is considered high-cardinality above 500 unique values in a day, and data beyond a report's row limit is condensed into an (other) row.

Symptom: older or smaller campaigns disappearing into (other) rather than showing zero. The fix is fewer, more consistent campaign values, which is a naming decision.

Manual Tagging vs Auto-Tagging

This section corrects advice that is still widely circulated and is no longer accurate.

What auto-tagging does. When enabled in Google Ads, auto-tagging appends a GCLID  a Google Click Identifier to your ad's destination URL. Analytics uses it to pull in campaign, ad group, and keyword detail that manual UTM parameters cannot provide, and it underpins the Google Ads and Analytics integration.

Which one wins. Google Ads documentation states that in GA4, auto-tagging is prioritised over manual tagging, because there is no override option.

That last clause matters. Universal Analytics had a setting allowing manual tagging to take precedence. GA4 does not. Any guide telling you to enable an override so your UTMs beat auto-tagging is describing a control that no longer exists.

What this means in practice.

  • For Google Ads traffic with auto-tagging on, the traffic-classification dimensions use the auto-tagged values. Adding UTMs to those URLs will not change what GA4 reports.
  • Turning auto-tagging off to force your UTMs through is a bad trade in most cases. You lose ad group and keyword detail and weaken the Google Ads integration, in exchange for values you chose yourself.
  • If you need UTM values on Google Ads URLs for a different system an ad platform report, a CRM, an internal dashboard add them. They'll be present in the URL and available to those tools. Just don't expect them to change GA4's attribution.

The short version: leave auto-tagging on for Google Ads. Use manual UTMs everywhere Google Ads isn't email, social, partners, affiliates, offline.

Common Reporting Mistakes

Comparing metrics between User acquisition and Traffic acquisition. Google explicitly advises against this because the scopes differ. Different numbers are expected, not a discrepancy.

Reading (not set) as "GA4 is broken." It is a specific signal with documented causes most often incomplete tagging or a missing session_start event. Treat it as a symptom to diagnose, not a malfunction.

Assuming the channel report reflects tagging quality. Channel definitions aren't case sensitive, so Email and email both land in the Email channel while fragmenting your Session medium report into two rows. A clean channel report can sit on top of messy underlying data.Assuming the channel report reflects tagging quality.

Judging a campaign before processing completes. Reports can take 24 to 48 hours. Early numbers are incomplete numbers.udging a campaign before processing completes.

Tagging internal links. A UTM on a link between two of your own pages won't overwrite the current session's source, because attribution is set at session_start. The damage is slower: those tagged internal URLs get bookmarked, shared, and clicked in new sessions  and then one of your own pages is recorded as the acquisition source. Keep UTMs on inbound links only.

Build and Verify

Most of the failures on this page start at the URL rather than in GA4 a missing parameter, a stray capital, a malformed separator.

Build your campaign URL →  enter your values and get a correctly encoded tracking link, then test it in Realtime before the campaign goes out.

Where to go next:

  • Need the definition of each parameter and its GA4 dimension? → UTM parameters reference
  • Fragmented or misclassified values? → UTM naming conventions
  • Unsure which field a value belongs in? → Source vs medium vs campaign
  • Want tagged examples by channel? → UTM examples library
  • New to campaign tracking?Complete campaign URL guide
Tags:
#Marketing#SEO
Amna
About the author:

Amna

Editor

Related Articles

UTM Examples: Real Tracking URLs for Email, Social, Ads & More

UTM Examples: Real Tracking URLs for Email, Social, Ads & More

<h1>UTM Examples: Real Tracking URLs for Email, Social, Ads & More</h1><p>Thirty-two tagged URLs across eight channel ty...
Aug 25, 2026
UTM Source vs Medium vs Campaign: What's the Difference?

UTM Source vs Medium vs Campaign: What's the Difference?

<p>Three fields, three different questions:</p><ul><li><b>utm_source —</b> whose audience did the visit come from? linke...
Aug 24, 2026
UTM Naming Conventions: How to Build a Consistent Tracking System

UTM Naming Conventions: How to Build a Consistent Tracking System

<p>A UTM naming convention is a documented set of rules deciding exactly what values your team writes into utm_source, u...
Aug 24, 2026