Pricing

How to Connect GA4 to Excel

Google AnalyticsSaved SearchDateDocumentAmount07/01INV-40214,280.0007/02INV-40221,860.5007/05INV-40239,140.0007/08INV-40242,375.2507/09INV-40256,902.7507/12INV-40263,118.40BrookedABCDateDocumentAmount123456707/01INV-40214,280.0007/02INV-40221,860.5007/05INV-40239,140.0007/08INV-40242,375.2507/09INV-40256,902.7507/12INV-40263,118.40ExcelGoogle Analytics report
JW
James Whitfield

GA4 has no official Excel add-in and exports differ from the UI due to sampling and thresholding. Every method and why the numbers diverge.

Google does not publish an official Excel add-in for GA4. There is an official add-in for Google Sheets, but nothing equivalent for Excel. The practical options are: export a CSV from the GA4 interface (a frozen snapshot of whatever report is on screen), build a custom Power Query connection to the GA4 Data API (possible but requires OAuth and JSON POST bodies that most analysts find fiddly), route through BigQuery for event-level data, or use a connector add-in. Before picking a method, the most important thing to understand is that GA4 numbers can differ between methods due to sampling and thresholding, which means different sources will sometimes disagree on the same metric.

Why GA4 numbers differ between exports and the UI

Two GA4 behaviours cause number discrepancies that trip up every analyst working with exports.

Sampling applies when a query covers a large dataset. GA4 processes a sample of sessions and extrapolates the totals rather than scanning every row. The interface shows a yellow warning icon when a report is sampled. Exports from the UI inherit the same sampling. The BigQuery export is unsampled because it contains raw event data before any aggregation.

Thresholding is a privacy measure. GA4 suppresses rows where small user counts could identify individuals. A dimension combination (for example, a specific landing page in a narrow geographic area) may appear in one view and be hidden in another depending on the threshold. If your exported totals do not add up to the interface total, thresholded rows are a common cause.

These two behaviours mean that the "same" metric can return different numbers depending on whether you are reading the UI, exporting a report, querying the Data API, or querying BigQuery. There is no single number that is definitively correct; the choice of method determines what you get. If consistency and completeness matter, BigQuery is the authoritative source.

Method 1: GA4 UI report export (CSV)

For a quick one-off: navigate to the report you want in the GA4 interface, set the date range and dimensions, then use the share or download icon and choose Download CSV (or Export to CSV depending on the report type). Open the file in Excel.

The catch: the export is a snapshot of the current report view, including any sampling that applied to it. Standard reports cap at 500 rows. The exported file includes header rows with the property name and date range above the data, which you need to delete before the table is usable in a pivot. Exploration reports (Explore section) can export more rows but are limited in dimensions and metrics combinations compared to the full Data API.

Method 2: GA4 Data API via Power Query

The GA4 Data API accepts authenticated POST requests and returns JSON with the dimensions and metrics you specify. Power Query can call this API using the Web connector with custom headers and a JSON request body. The steps are: set up a Google Cloud service account or OAuth client for authentication, write the API request body in Power Query M as a record with dateRanges, dimensions, and metrics fields, post it to the runReport endpoint, then parse the JSON response and expand the rows.

This works on Windows and Mac desktop Excel. It does not work in Excel on the web because the Web connector there does not support custom POST requests with authentication in the same way.

The catch: OAuth token management in Power Query is the main source of difficulty. Access tokens expire after one hour. Keeping the connection working requires either a refresh token flow coded in M (complex) or re-authenticating each session. Many tutorials skip this part. For teams without someone comfortable writing Power Query M code, maintaining this connection becomes a recurring task. If a connector add-in exists that covers GA4, it is typically far less maintenance.

Method 3: BigQuery export for event-level data

GA4 can export raw event data to BigQuery daily. Each day's table contains one row per event with all event parameters, user pseudonymous IDs, session IDs, and device and geo data. This is the only path to unsampled, complete event-level data from GA4.

To get the data into Excel: write a SQL query in the BigQuery console, aggregate the events into the shape you want (sessions per day by channel, for example), then export the query result as CSV and open it in Excel. The BigQuery free tier covers the first 1 TB of query processing per month; for typical analytics queries this is usually sufficient.

The catch: BigQuery export must be enabled before data starts flowing; it is not retroactive for most setups. The export also requires a Google Cloud project and billing to be configured even if you stay under the free tier. This is a developer-level setup, not something an analyst typically does solo.

Method 4: Brooked for Excel (scheduled, Mac and web Excel)

Brooked for Excel connects to GA4 via OAuth, pulls the dimensions and metrics you choose into the worksheet, and keeps it current. It runs inside Excel's ribbon and works in desktop Excel on Windows, desktop Excel on Mac, and Excel on the web. The GA4 connector uses the Data API, so numbers reflect the same sampling and thresholding rules as the API. For unsampled totals, BigQuery remains the reference source.

Honest framing: Excel support is in beta. Manual imports and the AI analyst work today; scheduled refresh is rolling out through the beta. The Google Sheets connector for GA4 is fully live if your team uses Sheets.

Setting up the GA4 connection in Brooked

Open Brooked in the Excel ribbon, select Google Analytics as the source, and sign in with your Google account via OAuth. Pick the GA4 property, then choose the dimensions (page path, channel, device category, and others) and metrics (sessions, users, conversions, and others) you want. Set the date range and import into the active worksheet.

BrookedBrooked AI, Google Analytics
Live
Ask anything about your Google Analytics data…

Method comparison

MethodCostWorks onRefreshBest for
GA4 UI report export (CSV)FreeAny ExcelManual re-exportOne-off report snapshots
Data API via Power QueryFree (developer effort required)Windows & Mac desktop Excel (not web)Manual refreshDevelopers comfortable with REST APIs and Power Query M
BigQuery export then CSVBigQuery costs (free tier available)Any ExcelManual re-export from BigQueryEvent-level data and large date ranges
Brooked for ExcelFree during betaDesktop, Mac & web ExcelScheduled (rolling out in beta)Regular GA4 reporting without API work

What marketing teams build with this

  • Weekly traffic report: sessions, users, and conversions by channel refreshed into a formatted workbook for stakeholders
  • Landing page audit: bounce rate and engagement time by page pulled into Excel for a content review
  • Campaign attribution: GA4 conversion data joined to spend data already in Excel for ROAS calculations
  • Month-over-month SEO tracking: organic sessions and conversion trends by landing page and keyword cluster
  • Executive dashboard: top-level traffic and conversion KPIs kept current with scheduled refresh

Troubleshooting common issues

Frequently asked questions

Why do my exported GA4 numbers not match what I see in the interface?

There are two main causes. Sampling: GA4 applies sampling to reports when the dataset is large, which means the interface shows estimated numbers rather than exact counts. Exported data may use different sampling thresholds. Thresholding: GA4 suppresses data in reports when counts are small enough to risk identifying individual users, replacing real numbers with zeroes or omitting rows. A dimension combination that shows in an unsampled export might be hidden in the UI and vice versa. If you need consistent, unsampled numbers, the BigQuery export gives you raw event-level data before any sampling is applied.

Does Google have an official GA4 Excel add-in?

No. Google does not publish an official Excel add-in for GA4. Google publishes an official Google Analytics add-in for Google Sheets, which uses the Data API. For Excel, the options are manual CSV exports, a custom Power Query connection using the GA4 Data API, BigQuery, or third-party connectors like Brooked.

Can I connect GA4 to Excel with Power Query?

Yes, but it requires meaningful developer effort. The GA4 Data API accepts HTTP POST requests with a JSON body specifying dimensions, metrics, and date ranges. Power Query's Web connector can make this request if you build the correct headers and body in M code, including OAuth 2.0 authentication. For most analysts, this is more complex than it looks in tutorials. The token refresh step in particular requires additional M code or a scheduled credential update. If you are comfortable building and maintaining Power Query M functions, it is possible; if not, a connector add-in is more practical.

What data does the BigQuery export include that the GA4 UI does not?

The GA4 BigQuery export contains raw, event-level data before any aggregation, sampling, or thresholding. Each row is an individual event with all its parameters, user pseudonymous identifiers, and session information. The UI aggregates this into sessions and user counts and applies sampling to large date ranges. The BigQuery data lets you write your own aggregations with full control over the logic, which is useful when you need exact counts or custom attribution.

How many rows can I export from the GA4 UI?

The GA4 report export downloads whatever is shown in the current report view, including all rows if you expand the table, up to the report's row limit. Standard reports show up to 500 rows. Exploration reports (in the Explore section) can show more. For full datasets across long date ranges, the BigQuery export or the Data API are the right paths.

Does GA4 data in Excel update automatically?

Not with the built-in export, which is a frozen snapshot. A Power Query connection using the Data API can be refreshed manually in Excel. Brooked can keep the data current on a schedule so the workbook reflects recent traffic when you open it. Scheduled refresh in Brooked is rolling out through the beta.

Is Google Analytics still free?

GA4 (Google Analytics 4) is free for most websites. Google also offers Google Analytics 360, which is a paid enterprise tier with higher data limits, unsampled reports, and additional features, but the standard GA4 property used by the vast majority of websites costs nothing. The BigQuery export from a standard free GA4 property is also free to enable, though BigQuery itself charges for storage and query processing beyond the free tier.

Get GA4 data into Excel without building a Power Query connection.

Brooked for Excel is in beta and free to try. Works on Mac and web Excel. Using Google Sheets instead? Read the Sheets version of this guide.

See Brooked for Excel →

Also in Excel

More Excel guides

Excel

How to Connect QuickBooks to Excel

Every way to get QuickBooks data into Excel, including the Spreadsheet Sync feature locked to the priciest plan and the report headers that break pivot tables.

JW
James Whitfield
Read
Excel

How to Connect Airtable to Excel

Export Airtable to Excel, including the view-scoped CSV download that silently drops hidden fields and the attachment links that expire after a few hours.

JW
James Whitfield
Read
Excel

How to Connect MySQL to Excel

MySQL for Excel still ranks first on Google, but Oracle archived it in 2020. The methods that work today, including which run on Mac and web Excel.

JW
James Whitfield
Read

Get your spreadsheet hours back

Brooked sets up in seconds. Your team is querying live data before lunch.