How to connect GA4 to Google Sheets
Export a report and import it, run Google's free Reports Builder add-on, or connect GA4 to Google Sheets with Fresh Sheets so a report refreshes in a tab on a schedule.
Ways to get Google Analytics 4 data into Google Sheets
| Method | Refreshes | Cost | Limit |
|---|---|---|---|
| Export a report | No | Free | Up to 100,000 rows; Viewer role or above |
| Export an exploration | No | Free | Large explorations are sampled |
| Reports Builder add-on | When you run it, or on a schedule | Free | Each report gets its own new sheet |
| Data API with Apps Script | On your trigger's schedule | Free | 200,000 tokens a day per standard property |
| Fresh Sheets | On your schedule | Free for 30 days, then one weekly report free. Paid plans from £12 a month, billed annually. | Up to 30,000 rows a run |
Export a report
- Open a report in GA4.
- Click Share this report, at the top right.
- Click Download File, then Export to Google Sheets.
Exports go up to 100,000 rows, and you need at least the Viewer role on the property. GA4 can also email a report on a schedule, as a PDF or CSV file.
Source: Share and export reports, Google Analytics Help; Scheduled emails, Google Analytics Help
Export an exploration
- Open the exploration.
- Click Export data, at the upper right, and choose Google Sheets.
Explorations over 10 million events are based on a sample rather than every event.
Google's Reports Builder add-on
- In Google Sheets, click Extensions, then Add-ons, then Get add-ons.
- Search for Reports Builder for Google Analytics, and install it.
- From Extensions, open the add-on and create a report: pick the property, date range, dimensions and metrics.
- Run the report from the same menu whenever you want fresh figures.
Source: Reports Builder for Google Analytics, Google Workspace Marketplace; Reports Builder, Google Analytics developer documentation
The Data API, with Apps Script
To pull Google Analytics data into Google Sheets with your own code, Apps Script's Analytics Data service calls the GA4 Data API. Standard properties get 200,000 tokens a day and 40,000 an hour.
Source: Analytics Data service, Apps Script documentation; Quotas, Google Analytics Data API
Set it up with Fresh Sheets
- Click Start free, sign in with the Google account that can see your GA4 property, then choose Connect Google and approve access.
- Under Source, pick Google Analytics 4 and the property.
- Under Data, pick the fields and dates.
- Under Destination, choose Connect Google if it asks, then pick a spreadsheet from your Google Drive or create a new one, and name the tab.
- Under Schedule, pick how often, then Save and run.
Prefer to work inside Google Sheets? Install the add-on from the Google Workspace Marketplace and build the same report from Extensions, then Fresh Sheets, then Open sidebar.
Fresh Sheets writes a Google Analytics 4 report into a tab of its own and refreshes it on the schedule you choose. Fresh Sheets replaces that tab's contents on every refresh, so keep your own formulas on another tab.
Every column it can write is listed on the Google Analytics 4 connector page.
Want it in Excel instead? See GA4 to Excel.
Worked example: Conversion rate by day
A report with Key events and Sessions writes these columns, in this order, into a tab called Conversion rate by day:
| A | B | C |
|---|---|---|
| Date | Sessions | Key events |
On another tab, each row's conversion rate is:
='Conversion rate by day'!C2/'Conversion rate by day'!B2
And the conversion rate across every row:
=SUM('Conversion rate by day'!C2:C)/SUM('Conversion rate by day'!B2:B)Use the totals, not the average of the row figures.
More on the formula: Conversion rate from GA4 in Google Sheets.
Questions
Is there a free Google Analytics to Google Sheets add-on?
Yes. Google publishes Reports Builder for Google Analytics, a free add-on that runs GA4 reports in a spreadsheet and can schedule them.
Source: Reports Builder for Google Analytics, Google Workspace Marketplace
Why don't the numbers match GA4 reports?
Usually one of four things: data thresholds, sampling, the (other) row, or data still being processed, which can take 24 to 48 hours. Fresh Sheets says on your Reports page when Google sampled a report or grouped rows into (other).
Source: Data thresholds, Google Analytics Help; Data sampling, Google Analytics Help; The (other) row, Google Analytics Help; Data freshness, Google Analytics Help
What if my data outgrows a spreadsheet?
A report holds up to 30,000 rows a run. On a paid plan a report can also send to BigQuery, where a report with Date keeps each run's days, so history builds up beyond one tab.
Can I use custom dimensions and metrics?
Yes. Fresh Sheets reads the fields your own property defines, including custom dimensions, custom metrics and key events.