Back to Google Analytics in Google Sheets
SheetXAI logo
Google Analytics logo
Google Analytics · Google Sheets Guide

Export a GA4 Audience List Into Google Sheets for CRM Matching

2026-05-13
4 min read
See the Excel version →

The Scenario

You are a retention marketer. A customer just asked why they are getting re-acquisition emails even though they purchased last week.

You check your GA4 property. There is a "30-day purchasers" audience. Your CRM suppression list should exclude anyone in that audience from re-acquisition campaigns — but the CRM integration only runs in one direction. You need to cross-reference the GA4 audience against your CRM manually to find who is slipping through.

The problem: GA4's Audience Export feature is buried in the Admin panel, requires you to create an export, wait for it to process, and then query it separately — and the output is a set of pseudonymous user identifiers that you need to match back to your CRM records. None of that happens through a CSV export.

The bad version of the next three hours:

  • Navigate to GA4 Admin → Data Display → Audience Exports
  • Create a new export for the "30-day purchasers" audience, wait for it to complete
  • Query the export using the API — which means finding the right endpoint, authenticating, and writing a script
  • Take the resulting user rows and try to join them to your CRM by client_id or device ID
  • Realize your CRM uses email address as the primary key, not client_id, and the GA4 export does not include email
  • You cannot make the join. The suppression gap stays open.

The fast version is one prompt and SheetXAI figures out the join strategy.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent inside your Google Sheet that can run a GA4 audience export and write the results into your sheet — including whatever device and geo attributes are available alongside the user identifiers.

Open the SheetXAI sidebar and type:

Create an audience export for my "30-day purchasers" GA4 audience, wait for it to complete, then query all the user rows and write them into my Google Sheet with one user per row. Include any available attributes — device category, country, city, and app instance ID or client ID if present.

SheetXAI creates the export, polls until it is ready, queries the results, and writes the user rows into your sheet. What attributes are available depends on what GA4 collected, but SheetXAI writes whatever is there.

What You Get

A sheet with one row per audience member, including:

  • User pseudo-ID — GA4's pseudonymous identifier for the user
  • Device category — mobile, desktop, or tablet
  • Country and city — where the user was when they were added to the audience
  • App instance ID or client ID — if your implementation populates these, they land in the sheet

The sheet is the cross-reference artifact. From here, you can use SheetXAI to do a VLOOKUP against your CRM export tab, flag any client IDs that appear in both, or write a "Suppressed" column based on the join.

The audience membership is a point-in-time snapshot — it reflects who is in the "30-day purchasers" audience right now, not historically.

What If the Data Is Not Quite Ready

GA4 audience exports have real limitations. SheetXAI works around them inline.

When the export takes longer than expected

Large audiences can take minutes to process. You do not want to sit and watch.

Create an audience export for my "30-day purchasers" audience. If it is not ready within 60 seconds, write "Export pending" in cell A1 and stop. I will re-run the query when I come back.

When you want to filter the audience to a specific country before writing

You only need the US-based purchasers for this suppression check. Writing the full audience to the sheet and filtering after is slower.

Create an audience export for my "30-day purchasers" audience, wait for it to complete, then query only the user rows where country is United States. Write those rows into my Google Sheet at A1 with headers.

When you need to cross-reference against a CRM export already in the sheet

Your CRM export is already on the CRM Data tab, with a column called Client ID. You want to flag every GA4 audience member whose client ID appears in the CRM.

After writing the GA4 audience export to Sheet1, look up each row's client ID against the Client ID column in the CRM Data tab. Add a column in Sheet1 called CRM Match — write "Yes" if the client ID is found, "No" if not. Then write a count of matches into cell G1.

When you want the full suppression audit in one shot

You want the GA4 audience written to the sheet, the CRM cross-reference done, and a summary of how many purchasers are missing from the CRM suppression list — all before the team standup.

Export the "30-day purchasers" GA4 audience, write user rows to Sheet1, cross-reference client IDs against the CRM Data tab, and flag matches. Then count how many GA4 audience members are NOT found in the CRM Data tab and write that count with a one-sentence explanation into cell A2 so I can share it in standup.

The pattern: instead of building a script to query the GA4 Audience Export API and then doing the join manually, you describe the suppression audit you need and SheetXAI does the data work inline.

Try It

Get the 7-day free trial of SheetXAI and ask it to export your GA4 audience into any sheet you have open. The Google Analytics integration is included in every SheetXAI plan. See also how to export a GA4 channel breakdown for budget attribution or the Google Analytics in Google Sheets overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more