Skip to content
How to Track Campaigns in GA4 with UTMs
SEO & Marketing14 min read

How to Track Campaigns in GA4 with UTMs

Scult Team
14 min read

Build UTM links and find your campaign data in GA4 — traffic acquisition, source/medium, and custom reports. Step-by-step.

To track campaigns in GA4: tag your links with UTM parameters, then view the results under Reports → Acquisition → Traffic acquisition, using the Session source/medium and Session campaign dimensions to break results down properly. That's the short version — here's the complete, detailed process, including exactly where each individual UTM value shows up within GA4's interface and how to build a genuinely dedicated campaign comparison report from scratch.

Why GA4 Specifically (and How It Differs From Universal Analytics)

If you're coming from Universal Analytics (Google's previous analytics product, sunset in 2023), it's worth knowing GA4 handles campaign data meaningfully differently — Universal Analytics organized data around sessions and pageviews as the primary unit; GA4 organizes around events, with a session itself modeled as a specific type of event. Practically, this means UTM parameters still map to source/medium/campaign the same conceptual way, but the underlying report structure (Explore, the event-based data model, key events instead of "goals") looks and behaves differently enough that muscle memory from Universal Analytics can point you toward the wrong menu path in GA4's interface.

Step 1: Build Tagged Links for Every Single Campaign

Add UTM parameters to every single campaign URL before you actually launch it — an ad, an email send, a social post, a partner link. Use the free UTM Builder rather than typing parameters by hand, and follow a consistent naming convention (see UTM best practices) so your GA4 reports stay clean rather than fragmenting into near-duplicate rows from inconsistent casing or spelling.

Why GA4 Requires This Extra Step Compared to Platform-Native Reporting

It's fair to ask why you'd bother with UTM tagging and GA4 reporting at all when Google Ads or Meta already show you campaign performance natively within their own platforms. The answer is unification: each ad platform only ever shows you its own slice of traffic, with no visibility into how that traffic behaves once it reaches your site relative to traffic from other channels, or how it compares to email and organic social in the same funnel. GA4, fed by consistent UTM tagging across every channel, is the one place that shows Google Ads traffic, Meta ads traffic, email traffic, and organic traffic side by side, using the same metrics and the same conversion definitions — a comparison no single ad platform's own dashboard can give you on its own.

Step 2: Understand Where UTMs Show Up in GA4

Once someone clicks your tagged link, GA4 automatically maps the UTM values you set to specific dimensions in its reports:

  • utm_source and utm_medium together populate the Session source / medium dimension (shown as source / medium, e.g. facebook / paid-social).
  • utm_campaign populates the Session campaign dimension.
  • utm_content and utm_term are available as dimensions specifically inside GA4's Explore section, for more granular analysis when you need to distinguish between two links or keywords within the same campaign.

Documenting Your GA4 Setup for Future Reference

Beyond the UTM naming convention itself, it's worth separately documenting the GA4-specific choices behind your reporting: which key events you've configured as conversions and why, which attribution model and lookback window your property uses, and which saved explorations exist for recurring campaign analysis. This is a short, one-time write-up that saves considerable confusion the next time someone new needs to interpret your campaign data correctly, without having to reverse-engineer settings that were configured months or years earlier by someone no longer on the team.

Understanding GA4's Attribution Windows

Before diving into the reports, it helps to know GA4 doesn't attribute a session to a campaign forever — it uses a lookback window (commonly 30 or 90 days, configurable in your property's attribution settings) to decide how far back to credit a conversion to an earlier campaign click. A visitor who clicked a UTM-tagged ad two months ago and converts today may or may not still be credited to that original campaign, depending on your configured window and whatever other touchpoints happened in between — worth checking your attribution settings directly rather than assuming a default that may not match how your actual sales cycle behaves.

Step 3: Find Your Campaign Data in the Traffic Acquisition Report

Navigate to Reports → Acquisition → Traffic acquisition. By default, this report groups sessions by a broader channel grouping — change the primary dimension (using the dropdown at the top of the table) to Session source / medium or Session campaign to see the exact values your UTM tags produced, along with sessions, engagement rate, and conversions attributed to each one.

Segmenting Campaign Data by Additional Dimensions

Beyond source, medium, and campaign alone, GA4's Explore section lets you layer in further dimensions for richer analysis — device category (to see if a campaign performs differently on mobile versus desktop), landing page (to see which specific page a campaign's traffic arrived on, useful when one campaign links to multiple different pages), or geography (useful for regionally targeted campaigns). Adding these secondary dimensions turns a flat "which campaign performed best" question into a much more actionable "which campaign, on which device, landing on which page, performed best" — the level of detail that actually informs specific optimization decisions rather than just a high-level ranking.

Step 4: Build a Dedicated Campaign Comparison Report

For deeper analysis than the standard report offers, use GA4's Explore section to build a custom exploration: add Session campaign and Session source/medium as dimensions, and Sessions, Conversions, and Total revenue (if you track e-commerce or lead value) as metrics. This lets you compare campaigns side by side in one table — which specific campaign, not just which channel, actually drove the most valuable traffic — something the default acquisition report doesn't surface as directly.

Working With Sampled vs. Unsampled Campaign Data

At very high traffic volumes, some GA4 reports (particularly complex Explore reports) can apply data sampling — estimating results from a subset of your data rather than processing every single event, which can introduce minor variance into campaign-level numbers. For most businesses' campaign volumes this is rarely a practical concern, but if you're comparing very close campaign performance numbers and something looks slightly inconsistent between two reports, checking whether sampling was applied (GA4 flags this in the report interface) is worth ruling out before assuming a genuine tracking discrepancy.

Step 5: Mark Your Key Actions as Conversions

UTM tracking tells you where traffic came from; it's only useful for judging campaign performance once you can also see what that traffic did. Make sure your meaningful actions — a form submission, a purchase, a signup — are configured as key events (GA4's term for conversions) in your property settings. Once that's set up, every acquisition report can be filtered or sorted by conversions per campaign, turning a raw traffic count into an actual performance comparison.

Connecting GA4 Campaign Data to Ad Spend for True ROI

GA4 on its own shows sessions and conversions per campaign, but not what you actually spent to acquire them unless you connect ad spend data separately — either through Google Ads' native integration with GA4 (which brings cost data in automatically for Google Ads campaigns specifically) or by manually combining GA4 exports with spend data from other platforms in a spreadsheet or BI tool. Without this connection, you can see which campaign drove the most conversions, but not which one delivered the best return relative to what it cost — a meaningfully different, and usually more important, question for budget decisions.

Step 6: Set Up a Recurring Check-In

Campaign tracking only pays off if someone actually looks at it regularly. A simple weekly or monthly habit — checking the Traffic acquisition report by Session campaign, comparing this period's top campaigns to last period's — catches tagging mistakes early (a campaign showing zero sessions when you know it launched is a tagging problem, not a performance problem) and keeps the data genuinely informing decisions rather than sitting unused in a dashboard.

Setting Up Automated Alerts for Campaign Anomalies

Beyond manually checking reports on a schedule, GA4 supports custom Insights and alerts that can notify you automatically when a metric moves outside an expected range — a campaign's sessions dropping unexpectedly, or conversions spiking beyond a normal pattern. Setting up even one or two alerts around your most important campaigns means you find out about a tracking break or a genuine performance shift within a day, rather than discovering it weeks later during a routine review when the opportunity to react has largely passed.

Exporting Campaign Data for Deeper Analysis

For analysis beyond what GA4's interface supports natively — blending campaign data with ad spend from multiple platforms to calculate true ROI, for instance — GA4 supports exporting to BigQuery (available even on the free tier, with some data limitations) or connecting directly to Looker Studio for custom dashboards and calculated fields GA4's own reports don't offer out of the box. This becomes worth setting up once you're running enough simultaneous campaigns that manually cross-referencing GA4 with your ad platforms' native dashboards becomes a genuine time sink rather than a quick check.

Troubleshooting: Why Isn't My Campaign Showing Up?

  • Data delay. GA4 doesn't process traffic instantly — recent sessions can take a few hours to appear in standard reports.
  • Inconsistent casing or spelling. Diwali-Sale and diwali-sale create two separate rows rather than combining into one — check your tags against the UTM builder output and review common UTM mistakes.
  • The link was never actually clicked with the tags intact. Some platforms or link shorteners strip query parameters — always test a tagged link yourself before distributing it widely.
  • Internal traffic filtering. If your GA4 property filters out internal traffic (correctly, for data quality), make sure you're testing links from outside that filtered network, or your own test clicks won't appear.
  • The report's date range doesn't cover when the campaign ran. An easy oversight — double-check the report's date filter matches your campaign's actual live dates.

Comparing GA4 Campaign Tracking to Platform-Specific Dashboards, Directly

It's worth running a direct comparison once, early on: pull the same campaign's numbers from GA4 and from the ad platform's native dashboard side by side, and understand exactly where and why they diverge for your specific setup (attribution window differences, click-versus-session counting, ad blockers). Doing this comparison once, deliberately, builds the calibrated intuition to interpret both numbers correctly going forward — rather than being surprised by a discrepancy every time you happen to notice one during a routine check.

Understanding GA4's Default Channel Grouping vs. Your Own UTM Values

GA4 automatically buckets traffic into a "Default channel grouping" (Organic Search, Paid Social, Email, Direct, and so on) using a combination of your UTM values and some built-in heuristics — but this grouping is a layer of interpretation on top of your raw source/medium data, not a replacement for it. It's worth checking both: the Default channel grouping for a quick, high-level view, and the raw Session source/medium dimension when you need the exact, granular value you actually tagged. Relying only on the channel grouping can occasionally mask a tagging inconsistency that the raw source/medium dimension would immediately reveal.

Setting Up a Custom Dashboard for Campaign Tracking

Rather than navigating to the Traffic acquisition report every time, it's worth building a saved custom report or a Looker Studio dashboard pulling directly from GA4, showing your key campaigns, their sessions, and their conversions in one persistent view. This is a one-time setup cost that pays off every time you or a stakeholder wants a quick read on campaign performance, instead of rebuilding the same Explore report from scratch each time someone asks "how's the campaign doing."

Comparing Campaign Performance Across Time Periods

Beyond a single snapshot, GA4's Explore section supports comparing the same campaign or channel across two date ranges directly — useful for answering "is this campaign performing better or worse than last month's equivalent push" rather than only seeing an isolated number with no context. Add a date-range comparison to your campaign exploration, and you get a genuine trend rather than a single data point that's hard to judge in isolation.

Building Institutional Knowledge Around Your GA4 Setup

As team members change over time, undocumented knowledge about how your specific GA4 property is configured — which key events matter, what attribution window you're using, which custom explorations exist and why — tends to get lost with whoever originally set it up. Writing a short internal reference covering these specifics, alongside your UTM naming convention, means a new team member can actually understand and correctly interpret your campaign reports without needing to reverse-engineer the setup or, worse, misinterpret the numbers because they're missing context nobody wrote down.

Common GA4 Reporting Pitfalls Specific to Campaign Tracking

  • Comparing sessions across differently-sized date ranges without normalizing, which makes a longer period look artificially stronger than a shorter one regardless of actual performance.
  • Ignoring engagement metrics in favor of raw session count — a campaign driving many low-engagement sessions may perform worse than one driving fewer, highly engaged sessions, even though the raw session count looks more impressive.
  • Not accounting for GA4's data-driven attribution model when comparing campaign-level conversions, since credit for a conversion can be split across multiple touchpoints rather than assigned entirely to the last campaign clicked.

Frequently Asked Questions

Where do I see UTM data in GA4?

Under Reports → Acquisition → Traffic acquisition, with the primary dimension changed to Session source/medium or Session campaign to see the specific values your UTM tags produced.

Why isn't my UTM campaign showing in GA4?

The most common causes are inconsistent casing or spelling between what you tagged and what you're looking for, a normal data-processing delay, or internal-traffic filtering excluding your own test clicks.

How do I track conversions per campaign in GA4?

Set your key actions as key events in GA4's property settings, then view the Traffic acquisition report (or a custom Explore) with Session campaign as the dimension and conversions as a metric.

Can I compare multiple campaigns side by side in GA4?

Yes — use GA4's Explore section to build a custom report with Session campaign as a dimension and sessions, conversions, and revenue as metrics, giving you a direct side-by-side comparison the standard report doesn't show as clearly.

How long does it take for UTM data to appear in GA4 after someone clicks a link?

Typically a few hours for standard reports, though GA4's real-time report can show very recent activity sooner — if data is missing after a day or more, it's more likely a tagging issue than a processing delay.

Do I need Google Ads specifically to use UTM parameters with GA4?

No — UTM parameters work with any traffic source you tag manually (email, social, partner links). Google Ads has its own auto-tagging system (via gclid) that works alongside UTMs, but UTMs themselves don't require Google Ads at all.

What's the difference between GA4's Default channel grouping and Session source/medium?

Default channel grouping is GA4's own interpreted, higher-level bucket (like "Paid Social"); Session source/medium shows the exact, raw values you actually tagged. Check both — the grouping for a quick view, the raw dimension when you need precision.

Can I compare the same campaign's performance across two different time periods in GA4?

Yes — use the Explore section's date-range comparison feature to see the same campaign or channel side by side across two periods, rather than viewing an isolated snapshot with no historical context.

Why does my campaign show sessions but no conversions in GA4?

Either your key events (conversions) aren't configured correctly for the actions you care about, or the campaign is genuinely driving traffic without driving the specific action you're tracking — worth checking your key event setup first before assuming a performance problem.

Do I need to set up GA4 differently for e-commerce versus lead-generation campaign tracking?

The UTM tagging and reporting mechanics are identical either way; what differs is which key events and metrics matter most — purchase value and product performance for e-commerce, form submissions and lead quality for lead generation.

Can I see UTM campaign data in GA4's real-time report?

Yes, to a limited degree — the real-time report shows very recent activity including active users by source, though the standard Traffic acquisition report with full source/medium/campaign breakdowns is the more reliable place for genuine analysis rather than a live pulse check.

Do I need a Google Analytics certification to use these reports correctly?

No — the reports and dimensions covered in this guide are accessible through GA4's standard interface without any formal certification. A certification can deepen broader analytics knowledge, but isn't required for the specific workflow described here.

Can I set up automated email reports for campaign performance instead of checking GA4 manually?

Yes — GA4 supports scheduled email reports for saved explorations and standard reports, which is worth setting up for your key campaigns so performance updates land in your inbox on a cadence rather than requiring a manual login and check each time.

Should I set up separate GA4 properties for different campaigns or brands?

Generally no, unless the campaigns represent genuinely distinct businesses or properties with separate stakeholders — for most single-brand marketing, one property with consistent UTM tagging across all campaigns gives you the unified, comparable view that separate properties would otherwise fragment.

Do I need any special GA4 property settings enabled to see UTM campaign data?

No special configuration is required beyond a standard GA4 property setup — UTM parameters are read and mapped to dimensions automatically as part of GA4's default behavior, with nothing extra to enable.

Is it possible to track campaigns in GA4 without using UTM parameters at all?

Not reliably for channels without their own native click-ID system — without UTM tagging, that traffic typically falls into a generic referral or direct bucket instead, losing exactly the specific campaign-level detail UTM tagging exists to reliably capture in the first place.


Want your campaigns tracked properly and optimised for real, measurable performance, not just raw click counts? Talk to Scult's performance marketing team about setting it up correctly from day one.

Want results like this?

Keep reading