Export GA4 UTM Data to CSV for an Audit (Exact Steps)

How to export GA4 UTM data to CSV: build a Free-form Exploration with Session source/medium and Session campaign, then download the columns the audit needs.

Updated Jun 30, 2026

To grade your UTMs you first need them out of GA4 as a flat file — but GA4 has no "export UTMs" button. The data you want lives under two dimensions, Session source / medium and Session campaign, and you pull it into a CSV from either a report or a Free-form Exploration. This page walks the exact clicks and the columns the audit reads.

Pick your export path#

There are two reliable ways to get UTM data out of GA4. A Free-form Exploration lets you put source, medium, and campaign side by side in one table — the format the audit likes best. The standard Traffic acquisition report is quicker if you just want source/medium for a date range. Both end in a CSV download.

Traffic acquisition report

  • Fastest if you only need source / medium
  • Set the primary dimension to Session source / medium
  • Add Session campaign as a secondary dimension
  • Row count in the table view is capped

Free-form Exploration

  • Best when you want source, medium, and campaign together
  • Drag Session source / medium and Session campaign into Rows
  • Add the Sessions metric to weight issues by traffic
  • Exports a wider, cleaner table for the audit
Use an Exploration when you want source, medium, and campaign together; use the report for a fast source/medium pull.

Build a Free-form Exploration and export it#

This is the recommended path. You build a small table once, and you can reuse it every time you want a fresh export.

  1. 1Open ExploreLeft nav → Explore → Free-form
  2. 2Add the dimensionsSession source/medium + Session campaign
  3. 3Add SessionsDrag into Values
  4. 4DownloadExport icon → CSV
  5. 5Upload to the auditPaste or drop the file
Five steps from a blank exploration to a CSV you can drop into the audit.
  1. 1

    Open a new exploration

    In the left navigation, click Explore, then start a blank Free-form exploration.

  2. 2

    Add the campaign dimensions

    Under Dimensions, click the + and add Session source / medium and Session campaign. Drag both into the Rows slot.

  3. 3

    Add the Sessions metric

    Under Metrics, add Sessions and drag it into Values. This is the column that lets the audit rank issues by traffic impact instead of treating every typo as equal.

  4. 4

    Set a useful date range

    Use the last 28–90 days. A longer window surfaces more variants — including the one-off Email someone typed last quarter that is still splitting your channel.

  5. 5

    Export as CSV

    Click the export icon at the top-right of the exploration and choose CSV. That downloaded file is what you upload to the audit.

Or export from Traffic acquisition

If you do not want to build an exploration, the standard report works too. It is the same path used in the GA4 UTM triage, just exported instead of read on screen.

  1. Go to Reports → Acquisition → Traffic acquisition.
  2. Change the primary dimension dropdown to Session source / medium.
  3. Click the + beside it and add Session campaign as a secondary dimension.
  4. Set the date range, then use the share / download icon → Download file → CSV.

The columns the audit needs#

You do not have to reshape the file. The audit reads either the GA4-native combined column or three separate utm_* columns. At minimum it needs to know the source, the medium, and the campaign for each row.

The columns that matter. Sessions is optional but recommended so issues are ranked by traffic, not count.
Column the audit readsGA4 dimension it comes fromWhat it is used for
utm_sourceSource half of Session source / mediumWhere the click came from, e.g. newsletter, facebook
utm_mediumMedium half of Session source / mediumThe channel type GA4 maps, e.g. email, cpc, social
utm_campaignSession campaignThe campaign name that ties spend to the sessions it drove
Sessions (optional)Sessions metricRanks issue clusters by traffic impact so you fix the costly ones first

The combined "source / medium" column is fine

GA4 exports source and medium together as one value like newsletter / email. You do not need to split it — the audit reads the / separator itself. If you prefer split files (for example from a spreadsheet), name the columns utm_source, utm_medium, and utm_campaign and it works the same way.

Why the raw values matter

GA4 never normalizes what you send it: email, Email, and EMAIL are three different mediums. The export preserves those exact spellings, which is the whole point — the audit clusters the variants so you can see how much traffic each one captured before you merge them.

A minimal CSV the audit accepts. Note the two rows that are the same channel split by case — exactly what the audit catches.
Session source / medium,Session campaign,Sessions
newsletter / email,summer-sale-2026,1240
Newsletter / Email,Summer Sale 2026,310
facebook / cpc,bf-retarget,980

Keep it under about 500 rows for an instant grade#

CSV exports of up to about 500 links are scored synchronously, so you paste or drop the file and get an A–F grade in roughly a minute. There is no signup wall for the first public scan. If your export is larger, narrow the date range, group by the source/medium and campaign dimensions only, or sort by Sessions and keep the rows that actually carry traffic.

Cut the noise before you export

Sorting by Sessions and trimming the long tail of near-zero rows keeps you under the synchronous limit and focuses the grade on the channels that move your numbers. The handful of variants behind 10–20% of sessions in Unassigned are usually near the top of that list.

Once the file is ready, the next step is the grade itself — see how the audit works for what the A–F score measures, or recovering Unassigned GA4 traffic if a large share of your sessions is landing there.

A one-tap GA4 connection is on the roadmap

Direct GA4 OAuth — connect once, skip the export — is a Phase 2 feature behind a waitlist. CSV is the day-1 path and does the same job today.

Does GA4 have a direct UTM export?

No. GA4 has no single "export my UTMs" button. You export the underlying dimensions instead: build a report or Free-form Exploration with Session source / medium and Session campaign, add Sessions as a metric, and download it as CSV. That CSV is exactly what the audit reads.

Which GA4 report shows utm_source and utm_medium?

Reports → Acquisition → Traffic acquisition shows them when you set the primary dimension to Session source / medium. GA4 stores utm_source and utm_medium together in that one combined dimension, with values like facebook / cpc. Add Session campaign as a secondary dimension to see utm_campaign alongside it.

How do I export more than 500 rows of UTM data from GA4?

You can still export a larger file from an Exploration, but only the first ~500 rows are scored synchronously for the instant grade. To stay under that and keep the grade meaningful, shorten the date range, limit the table to the source/medium and campaign dimensions, and sort by Sessions so the rows that carry real traffic are the ones included.

What format should the CSV be in for the audit?

A plain CSV with one row per source/medium and campaign combination. The audit accepts the GA4-native combined column (Session source / medium) or three split columns named utm_source, utm_medium, and utm_campaign. A Sessions column is optional but recommended, because it lets issues be ranked by traffic impact.

Do I need to split the Session source / medium column into two columns?

No. Leave it as GA4 exports it. The audit reads the / separator and splits source from medium for you. Splitting it yourself is fine too, but it is extra work that changes nothing about the grade.

Grade your GA4 export in about a minute

Drop the CSV you just exported and get an A–F UTM health grade — every variant clustered and ranked by traffic impact. No signup for the first scan.

Run a free audit