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
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.
- 1Open ExploreLeft nav → Explore → Free-form
- 2Add the dimensionsSession source/medium + Session campaign
- 3Add SessionsDrag into Values
- 4DownloadExport icon → CSV
- 5Upload to the auditPaste or drop the file
- 1
Open a new exploration
In the left navigation, click Explore, then start a blank Free-form exploration.
- 2
Add the campaign dimensions
Under Dimensions, click the
+and add Session source / medium and Session campaign. Drag both into the Rows slot. - 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
Set a useful date range
Use the last 28–90 days. A longer window surfaces more variants — including the one-off
Emailsomeone typed last quarter that is still splitting your channel. - 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.
- Go to Reports → Acquisition → Traffic acquisition.
- Change the primary dimension dropdown to Session source / medium.
- Click the
+beside it and add Session campaign as a secondary dimension. - 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.
| Column the audit reads | GA4 dimension it comes from | What it is used for |
|---|---|---|
utm_source | Source half of Session source / medium | Where the click came from, e.g. newsletter, facebook |
utm_medium | Medium half of Session source / medium | The channel type GA4 maps, e.g. email, cpc, social |
utm_campaign | Session campaign | The campaign name that ties spend to the sessions it drove |
| Sessions (optional) | Sessions metric | Ranks 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.
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.