GA4 UTM Campaign Report: Source, Medium and Campaign Results

Report on UTM-tagged campaigns in GA4 by session source, medium and campaign name: sessions, key events and revenue, plus how to catch broken tagging.

Summary

A GA4 UTM campaign report groups sessions by the utm_source, utm_medium and utm_campaign values on your links (sessionSource, sessionMedium and sessionCampaignName in the API) and shows sessions, key events and revenue for each. It is how you compare newsletters, partner links and paid campaigns on one scale, and it quickly exposes inconsistent tagging.

On this page
  1. Who this report is for
  2. What the report includes
  3. How to build it in Better Analyst from Google Analytics
  4. Questions to ask
  5. Sample output
  6. Charts to use
  7. Keep it up to date
  8. Further reading
  9. FAQ

Who this report is for

Campaign and lifecycle marketers, and agencies, who tag links with UTM parameters and need to see which campaigns produced engaged traffic and conversions.

What the report includes

Metrics and dimensions in this report
MetricSource fieldWhy it matters
Source / mediumsessionSourceMediumCombined utm_source and utm_medium, the quickest way to spot inconsistent tags like 'Email' vs 'email'.
CampaignsessionCampaignNameThe utm_campaign value, grouping all links from one campaign.
SessionssessionsTraffic each campaign delivered.
Engagement rateengagementRateFilters campaigns that send many but uninterested visitors.
Key eventskeyEventsGoal completions credited to the campaign's sessions.
RevenuetotalRevenueRevenue from those sessions, for ecommerce or paid products.

How to build it in Better Analyst from Google Analytics

  1. In Better Analyst, open Connectors, choose Add Connector, then Google Analytics.
  2. Click Connect with Google and sign in with an account that has Viewer or Admin access to the GA4 property. Better Analyst requests read-only access.
  3. Pick the GA4 account and property from the dropdowns and click Connect. Universal Analytics properties are not supported.
  4. Ask for sessions, engagement rate, key events and revenue by session source / medium and campaign for the campaign window.
  5. Ask Better Analyst to list source and medium values that differ only by capitalisation or spelling, so you can fix your tagging convention.

Questions to ask

  • “Show sessions, key events and revenue by campaign name for October, sorted by revenue.”
  • “Which newsletter campaigns had the highest key event rate this quarter?”
  • “List source/medium pairs that look like the same thing tagged differently.”
  • “Compare the spring-sale campaign's revenue across email, social and partner sources.”

Sample output

Sample data for illustration, not real account data.

Sample data: October campaigns (illustrative)
CampaignSource / mediumSessionsKey eventsRevenue
oct-newsletternewsletter / email3,820214$18,450
fall-salepartner-blog / referral1,46061$7,320
fall-saleinstagram / social5,93089$9,870
webinar-novlinkedin / social1,120176$0

Charts to use

  • Revenue by campaign and source (Stacked bar chart): Each campaign's revenue split by the source that delivered it.
  • Key events per 1,000 sessions (Bar chart): Normalised conversion efficiency so small campaigns can be compared with big ones.

Keep it up to date

Schedule a weekly campaign summary during active launches, delivered to the marketing Slack channel, and set an alert when a running campaign's sessions fall to zero, which usually means a broken link or removed tag.

Further reading

Try Better Analyst free

Frequently asked questions

Which GA4 dimension holds utm_campaign?
sessionCampaignName holds the campaign for each session; sessionSource and sessionMedium hold utm_source and utm_medium, and sessionSourceMedium combines them. First-user versions (for example firstUserCampaignName) show the campaign that first acquired the user.
Why are my campaign sessions showing as (direct) or (not set)?
Common causes are redirects that strip query parameters, links opened in apps that drop UTMs, or tags with typos. Test the final landing URL to confirm the parameters survive.
Are UTM values case-sensitive in GA4?
Yes. 'Email' and 'email' become separate rows, and non-standard mediums can fall out of the default channel groups. Agree on lowercase values and a fixed list of mediums.