GA4 Campaign Reporting: Setup, Reports and Metrics

GA4 campaign reporting works when three things are in place: consistent UTM parameters on every non-Google link, a Google Ads link plus cost imports for paid spend, and a short list of reports and metrics your team reads the same way every time. Most reporting problems trace back to one of those three. Google collects and processes campaign values by fixed rules, so the data you see is only as clean as the data you send.
This guide walks through that chain in order: how GA4 collects campaign data, where the reports live, which dimensions and metrics matter, and what has to be configured before cost, conversions and ROAS appear. It also covers how to turn the standard reports into a repeatable routine, which is where multi-brand teams lose the most time.
TL;DR
- GA4 moves campaign data through three stages, collection, processing and reporting, so errors in your tagged URLs surface in every report downstream.
- Always tag links with utm_source, utm_medium and utm_campaign. Add utm_id when you plan to import cost data from non-Google platforms.
- Use the Traffic acquisition report with the Session campaign dimension for traffic, and the Advertising section for key event performance and attribution.
- GA4 has no built-in ROAS metric. Link Google Ads, import cost for other platforms, then build a calculated metric.
- Teams running many brands need a fixed reporting routine. A platform that connects GA4 to ad accounts removes the manual assembly.
Table of Contents
- 1. How GA4 collects and processes campaign data
- 2. Tag every link with UTM parameters
- 3. Where campaign performance lives in GA4
- 4. Choosing dimensions and metrics that hold up
- 5. Setting up GA4 so advertising reports show cost and ROAS
- 6. Customizing campaign reports
- 7. Turning reports into a routine
- Putting the workflow in one place
- Our perspective
- FAQ
- Sources
1. How GA4 collects and processes campaign data
Google’s documentation describes campaign and traffic-source data as moving through three steps: collection, processing and reporting. Collection is the values your site or app sends through tracking code or SDKs. Processing is where those collected values populate the final report dimensions according to Google’s logic. Reporting is when dimensions and metrics become available in the interface and the Reporting API.

The practical consequence is that you cannot fix a campaign name in a report after the fact. If a link went out as “Spring_Sale” in one channel and “spring-sale” in another, GA4 will show two campaigns. The fix is upstream, at the point where the link is built.
A hypothetical example: an agency runs a property launch across email, paid social and a partner newsletter. Three people build links by hand. A month later the campaign report shows five rows for what should be one campaign, and the client asks which channel produced the enquiries. The answer is buried under spelling differences.
2. Tag every link with UTM parameters
Google states that you can add utm_id, utm_source, utm_medium, utm_campaign, utm_source_platform, utm_term, utm_content, utm_creative_format and utm_marketing_tactic to destination URLs. The last two are not currently reported in Google Analytics. Google’s guidance is to always use utm_source, utm_medium and utm_campaign.
Two details save debugging time:
- Landing page reports hide UTMs. UTM parameters are omitted from the Landing page + query string and Page path + query string dimensions. The UTM information is populated in the Page location dimension instead, so do not conclude your tags are missing because they are absent from a landing page report.
- utm_id matters for imports. To combine imported cost data with collected session data, Google says you must add utm_id, utm_source, utm_medium and utm_campaign to all destination URLs in non-Google campaigns.
Write the naming rules down once
A convention only works if it is short enough to follow under deadline. Decide the allowed values for source and medium, choose one case (lowercase is the usual choice), pick a separator, and define how campaign names encode the brand, the objective and the period. Our guide to a UTM naming convention your team will actually use lays out a template you can adapt.
For agencies, add the client or brand to the campaign name. Otherwise reports pulled across properties cannot be grouped later.
3. Where campaign performance lives in GA4
There are two places to look, and they answer different questions.
Traffic acquisition answers: which sources, mediums and campaigns brought sessions, and what did those sessions do? Google lists its dimensions as Session campaign, Session default channel grouping, Session medium, Session source, Session source/medium and Session source platform. Session default channel grouping is the report’s default dimension, so you will see channels first. To see campaigns, change the primary dimension to Session campaign.
Its metrics include sessions, users, engaged sessions, engagement rate, average engagement time per session, key events, event count, events per session and total revenue.

The Advertising section answers: how did paid activity contribute to conversions? Google’s overview says it includes the Advertising snapshot, Key event performance, Key event attribution models, Key event attribution paths, Conversion performance, Conversion attribution models, and planning reports including All channels performance. The Key event performance report lets you toggle between all Google Analytics channels and Google Ads.
A simple reading order
- Start in Traffic acquisition, switched to Session campaign, to confirm every campaign appears once and with the expected name.
- Compare engagement rate and key events per session across campaigns, not only sessions.
- Move to the Advertising section to see how credit is assigned across touchpoints.
- Check Total revenue last, because it depends on ecommerce events being configured correctly.
4. Choosing dimensions and metrics that hold up
A campaign report with twenty columns is rarely read. Pick a small set and keep it fixed so month-over-month comparison means something.
| Question | Dimension | Metrics to read |
|---|---|---|
| Which campaigns bring traffic? | Session campaign | Sessions, engaged sessions, engagement rate |
| Which channel mix is working? | Session default channel grouping | Key events, total revenue |
| Which source and medium pair performs? | Session source / medium | Engagement rate, key events |
| Which Google Ads campaigns drive outcomes? | Campaign, ad group name, keyword text | Sessions, key events, total revenue |
The Google Ads campaigns report adds dimensions such as Session Google Ads account name, ad group name, ad network type, campaign, keyword text and query, alongside metrics such as average engagement time per session, key events, engaged sessions, engagement rate, sessions, total revenue and active users.
Revenue only counts if the event is complete
Google’s documentation states that the purchase event needs both value and currency parameters. Without them, purchase data does not appear in the Total revenue metric. Total revenue is the sum of purchase, in_app_purchase, app_store_subscription_renew and app_store_subscription_convert events, plus ad revenue from Google AdMob or Google Ad Manager integrations.
If a campaign shows sessions and key events but zero revenue, check the event payload before you question the campaign. Our conversion tracking checklist walks through the verification steps in the order they usually fail. For stores on Shopify, the Shopify Google Ads tracking guide covers setup and server-side options.
5. Setting up GA4 so advertising reports show cost and ROAS
Advertising reports stay empty or partial when the account plumbing is incomplete. Three conditions apply to the Google Ads campaigns performance report: the property must be collecting data, at least one event must be marked as a key event, and the Google Ads account must be linked to the property. The report sits under Advertising > Key event performance, and Google notes the Advertising section is available only on the desktop version of Google Analytics.
Step 1: Mark your key events
Decide which events represent business outcomes: a purchase, a lead form submission, a booked inspection. Mark them as key events in the property. Without this step, the advertising reports have nothing to attribute.
Step 2: Link Google Ads
The route is Admin > Product links > Google Ads linking. Select the Google Ads account, choose the GA4 property and set the data sharing options. This link brings in Google Ads cost data, as described by Heatmap. For a fuller walkthrough with fixes for common link errors, see our guide to GA4 Google Ads reporting.
Step 3: Import cost for other platforms
For platforms other than Google Ads, GA4’s cost data import has to be used to bring in spend. This is where the UTM discipline from section 2 pays off: the imported rows can only be matched to sessions if the tags line up.
Step 4: Build ROAS yourself
GA4 has no built-in ROAS metric. The same Heatmap guide describes the route: import cost, create a calculated metric using purchase revenue divided by cost, and use it in an Exploration. Name the metric the same way across every property so reports can be compared.
Before you act on any ROAS figure, read how to read CPA and ROAS without fooling yourself. Platform-reported and GA4-reported numbers will rarely match, and the reasons are usually definitional, not errors.
6. Customizing campaign reports
The standard reports are a starting point. Three customizations cover most needs.
- Edit the report columns and primary dimension. In Traffic acquisition, you can switch the dimension to Session campaign or Session source / medium and add or remove metrics. Keep a saved view for each audience.
- Use Explorations for combinations the standard reports do not offer. Free-form explorations let you pair a campaign dimension with a calculated metric such as ROAS, or segment by landing page.
- Group campaigns consistently. If your naming convention encodes brand, objective and period, you can filter and group by those parts of the name without extra setup.
One caution on interpretation. Reports in the same property can differ without either being broken, because attribution settings and session-scoped dimensions do not always line up. Decide in advance which report is the source of truth for each question, and write it in your reporting standard. Our piece on cross-channel attribution explains how teams compare models when signals are partial.
Performance Max needs its own check
Campaign types that bundle placements across channels do not always map neatly onto GA4’s source and medium columns. The Performance Max reporting guide shows what to check and in what order.
7. Turning reports into a routine
A report is only useful if it is produced the same way each period and reaches the people who decide. A workable monthly routine looks like this:
- Audit campaign names in Traffic acquisition and correct tagging at the source.
- Confirm key events fired and revenue values are present.
- Pull spend from each platform and reconcile with imported cost.
- Record one headline KPI and three supporting checks. The marketing performance reporting framework uses one KPI with three ROI checks.
- Summarize decisions and budget moves on a single page. Our template for an end of month marketing report fits on one page, and the budget reallocation basics show how to act on what it says.
For a Google Ads-specific view, the practical framework for Google Ads reporting pairs well with the steps above.
The work multiplies with every brand. An in-house team with one property can maintain this by hand. An agency with a dozen brands, each with its own GA4 property, ad accounts and approvers, spends hours each month copying numbers between tabs. If that is your situation, our guide to running marketing for many clients without losing the thread covers the operating model.
Putting the workflow in one place
OppRise is a marketing operations and advertising automation platform that brings campaign planning, ad execution, performance reporting and collaboration into one workflow. It integrates with Google Analytics, Search Console, Meta, Google Ads, TikTok and Shopify, and it supports multi-brand workspaces and approval workflows, so a team handling several brands can keep each brand’s reporting separate and consistent.
Plans are published at opprise.io/pricing: Solo at $102.99 per month, Growth at $258.99 per month and Agency at $622.99 per month, with Agency Plus available without a published price. AI credits are sold separately as one-off packs: 500 credits for $76.99, 1,500 credits for $206.99 and 5,000 credits for $622.99.

If your team is ready to replace manual report assembly, you can sign in to OppRise or compare plans on the pricing page. To estimate what the change is worth, measure time saved by marketing automation before and after.
Our perspective
We treat GA4 as the measurement layer, not the reporting workflow. It is accurate about what happened on your site, but it will not enforce your naming rules, collect approvals, or reconcile spend across platforms. Those jobs fall to people, and people under deadline cut corners.
That is why OppRise is built around one connected loop: live business data, ranked opportunities, brand-safe creative, and team delivery with human approval. Reporting is one part of that loop, not a separate chore at the end of the month. When campaign requirements, ad execution and performance data sit in the same workspace, the campaign name that was approved is the campaign name that appears in the report.
For agencies, the multi-brand workspace is the practical point. Each brand keeps its own reporting, and the team keeps one way of working. We designed our pricing for small and mid-sized teams, so the discipline that large organizations buy with headcount is available without it.
Brittany
FAQ
What is the difference between GA4 campaign reporting and advertising reports?
Campaign reporting, mainly the Traffic acquisition report with the Session campaign dimension, shows how all tagged traffic behaves. The Advertising section focuses on key events, attribution models and paths, and conversion performance across channels or Google Ads. Use the first to see traffic quality by campaign and the second to see how paid touchpoints contribute to outcomes.
Why are my campaigns showing under the wrong name or split into duplicates?
GA4 reports the values it receives, so differences in spelling, case or separators create separate rows. Fix the tagging at the source, apply one naming convention, and always include utm_source, utm_medium and utm_campaign. Historical rows cannot be merged in the standard reports, so start a clean convention going forward.
Does GA4 have a ROAS metric?
No. GA4 has no built-in ROAS metric. After linking Google Ads and importing cost for other platforms, you can create a calculated metric using purchase revenue divided by cost and use it in an Exploration. Purchase events must include value and currency or revenue will not populate.
Why do I not see the Advertising section?
Google states the Advertising section is available only on the desktop version of Google Analytics. For the Google Ads campaigns performance report, the property must be collecting data, at least one event must be a key event, and the Google Ads account must be linked to the property.
Sources
- Campaigns and traffic sources - Analytics Help
- URL builders: Collect campaign data with custom URLs - Analytics Help
- Import campaign data - Analytics Help
- Get started with advertising - Analytics Help
- Traffic acquisition report - Analytics Help
- Google Ads campaigns report - Analytics Help
- Google Ads campaigns performance report - Analytics Help
- ROAS Tracking in GA4: A Step-by-Step Guide
