Getting data into Google Sheets

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

MethodRefreshesCostLimit
Export a reportNoFreeUp to 100,000 rows; Viewer role or above
Export an explorationNoFreeLarge explorations are sampled
Reports Builder add-onWhen you run it, or on a scheduleFreeEach report gets its own new sheet
Data API with Apps ScriptOn your trigger's scheduleFree200,000 tokens a day per standard property
Fresh SheetsOn your scheduleFree 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

  1. Open a report in GA4.
  2. Click Share this report, at the top right.
  3. 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

  1. Open the exploration.
  2. 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.

Source: Export explorations, Google Analytics Help

Google's Reports Builder add-on

  1. In Google Sheets, click Extensions, then Add-ons, then Get add-ons.
  2. Search for Reports Builder for Google Analytics, and install it.
  3. From Extensions, open the add-on and create a report: pick the property, date range, dimensions and metrics.
  4. 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

  1. Click Start free, sign in with the Google account that can see your GA4 property, then choose Connect Google and approve access.
  2. Under Source, pick Google Analytics 4 and the property.
  3. Under Data, pick the fields and dates.
  4. 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.
  5. 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:

ABC
DateSessionsKey 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.

Start free trial

30 days of Plus, free from sign-up. No card needed.

Sign in with Google or a work or school Microsoft account.

Add to Google Sheets

Prefer to stay in Google Sheets? Add the add-on and start from the Extensions menu.