Google Sheets Tips

GA4 reports in Google Sheets: two ways to automate them

Google Sheets TipsAlyona Samovar6 min read

GA4 reports in Google Sheets: two ways to automate them

There are two ways to get Google Analytics 4 data into Google Sheets so that it refreshes without copy and paste. Google’s own add-on, GA4 Reports Builder, pulls report data from GA4 into a sheet. The second way reads the GA4 BigQuery export through a published Data Mart and delivers it to the sheet on a schedule.

The first is quick and fits a small, fixed report. The second takes setup and fits a team whose weekly report mixes GA4 with ad spend and orders, and has to show the same numbers every time. This guide covers both, with what each can and cannot do.

What an automated GA4 report in Sheets has to do

What an automated GA4 report in Sheets has to do

Most marketers who search for this are doing the same thing every Monday: open GA4, set the date range, export a CSV, paste it into the reporting sheet, fix the columns, repeat for the next report. An automated report removes those steps. To be worth setting up it needs to:

  • refresh on a schedule, without anyone opening GA4
  • return the same number when two people ask the same question
  • survive a long date range without sampling
  • sit next to the other numbers of the report, such as spend and orders

Keep that list in mind. The two methods differ on the last three points.

Method 1. GA4 Reports Builder, Google’s add-on for Sheets

Method 1. GA4 Reports Builder, Google’s add-on for Sheets

Google publishes an add-on for this: GA4 Reports Builder for Google Analytics. Its Marketplace listing describes it in one sentence: Google Analytics users can use it “to create and run reports for GA4 properties using Google Sheets” (checked October 2026).

To set it up:

  1. Open a Google Sheet, go to Extensions, Add-ons, Get add-ons, find GA4 Reports Builder for Google Analytics and install it.
  2. Grant it access to your Google Analytics account when asked.
  3. Open Extensions, GA4 Reports Builder for Google Analytics, Create new report, and choose the GA4 property, the dimensions, the metrics and the date range.
  4. Choose Run reports from the same menu. The data is written to a tab of the sheet.
  5. Choose Schedule reports and set a frequency, so the report runs again by itself.

Use GA4’s own names for the fields: dimensions such as date, sessionDefaultChannelGroup and sessionSourceMedium, metrics such as sessions, totalUsers and keyEvents. Guides that tell you to enter ga:sessions describe the Universal Analytics add-on, which does not work with GA4 properties.

What the add-on does well, and where it stops

It is free, it is Google’s, and a first report takes ten minutes. For one property and a handful of standard metrics, it is enough.

Its limits come from where it reads. The add-on requests report data from GA4, so the rules of GA4 reporting come with it:

  • Quotas. A standard property gets 200,000 tokens per day and 40,000 per hour for report requests. Several scheduled reports with long date ranges and page-level dimensions use them up. The numbers are in the guide to GA4 Data API limits.
  • Sampling, thresholds and the (other) row apply as they do in the interface, as described in data sampling in GA4.
  • Only GA4 data. Ad spend from Meta or Microsoft Ads, and orders from the shop system, have to reach the sheet some other way and be matched by formulas.
  • Every sheet has its own definitions. Two people who build “sessions by channel” with different dimensions get two answers, and nothing tells them.

The Turning Point

OWOX Data Marts

See your first report built in real time. 15 minutes.

  1. Connect your data warehouse
  2. Pick your metrics
  3. Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

Book a Demo

We'll use your actual use case

Method 2. The GA4 BigQuery export, delivered to Sheets through a Data Mart

Method 2. The GA4 BigQuery export, delivered to Sheets through a Data Mart

The second method changes the source. Instead of asking GA4 for report rows, it uses the raw events GA4 exports to BigQuery, and an analyst decides once, in SQL, what the report means.

It has three parts.

GA4 has a native BigQuery export, available to standard properties. You turn it on in GA4 Admin; from that day every event lands in your BigQuery project. The steps and the limits are in connecting GA4 to BigQuery.

Part 2. The analyst writes the report as SQL

This is the step that makes the numbers stable. The query below runs as written on Google’s public GA4 sample and returns a daily table of sessions, users, purchases and revenue by medium:

SELECT
  PARSE_DATE('%Y%m%d', event_date) AS date,
  traffic_source.medium AS first_user_medium,
  COUNT(DISTINCT CONCAT(
    user_pseudo_id, '-',
    CAST((SELECT value.int_value
          FROM UNNEST(event_params)
          WHERE key = 'ga_session_id') AS STRING)
  )) AS sessions,
  COUNT(DISTINCT user_pseudo_id) AS users,
  COUNTIF(event_name = 'purchase') AS purchases,
  ROUND(IFNULL(
    SUM(ecommerce.purchase_revenue), 0), 2)
    AS revenue
FROM
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20210101' AND '20210107'
GROUP BY date, first_user_medium
ORDER BY date, sessions DESC

The first rows for 1 January 2021 on the sample:

date first_user_medium sessions users purchases revenue
2021-01-01 organic 815 803 3 203
2021-01-01 (none) 571 564 5 510
2021-01-01 referral 351 342 1 19

Counted from every event, with no quota and no sampling. The same query can join the ad spend and orders tables if they are in the warehouse.

Part 3. Publish it and read it in Sheets

OWOX Data Marts takes it from here. The analyst saves the SQL as a Data Mart, gives the fields names and descriptions a marketer understands, and publishes it. In Google Sheets, the OWOX Data Marts extension opens as a side panel. The person building the report picks a Data Mart, ticks the columns they want, and clicks Save & Run. The rows are written to the sheet, and a scheduled refresh keeps them current.

Google Sheets with the OWOX Data Marts side panel open on the Unified Ad Spend Data Mart: nine of fourteen columns are ticked, a Scheduled refresh section and a Save & Run button are below, and a note on cell A1 records the Data Mart and the import time.

Three things in that screenshot are the point of the method:

  • The marketer chooses columns, not logic. What “sessions” or “spend” means was decided in the Data Mart. Two people who tick the same column get the same number.
  • The cell note says where the data came from: which Data Mart, and when it was imported. A number in a sheet that can name its source is easier to defend in a meeting.
  • The tabs are different Data Marts in one spreadsheet. Ad spend, orders and sessions sit side by side, each from its governed source.

The same Data Mart can also feed a Data Studio (the former Looker Studio) report, so the dashboard and the sheet agree.

What this method does not do

OWOX Data Marts does not connect to GA4 and does not pull GA4 reports. It reads tables in your warehouse, and for GA4 those tables come from Google’s own BigQuery export. That has consequences worth knowing before you start:

  • History starts on the day you link the export. Earlier data stays in GA4.
  • A standard property exports up to 1 million events per day in the daily export.
  • Numbers differ from the GA4 interface, because the export holds raw events without GA4’s modeling. Google documents this.
  • Someone has to write the SQL. The product publishes and schedules the analyst’s query. It does not write it.

Which method to choose

Which method to choose

GA4 Reports Builder add-on BigQuery export and a Data Mart
Setup time Minutes Hours, plus a day for the first export
Who can set it up Anyone with GA4 access An analyst, once. Then anyone
Source GA4 report data Raw GA4 events in your warehouse
Quotas and sampling Apply Do not apply
Other data in the same report No Yes: ad spend, orders, CRM
One definition for everyone No Yes, in the Data Mart
History What GA4 retains From the day of linking

Choose the add-on for one property and a small standing report that only needs GA4 metrics. Choose the export and a Data Mart when the report goes to several people, mixes sources, or has been questioned once too often.

Many teams start with the first and move to the second the week two versions of the same report disagree.

Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

  • No AI hallucinations
  • Analyst-governed definitions
  • Every number traces to SQL
Get started free

Who wrote this

Alyona Samovar

Alyona Samovar · Senior Digital Analyst

Alyona Samovar is a Senior Digital Analyst who spent years at OWOX helping enterprise clients design analytics systems, build BigQuery reporting pipelines, and optimize marketing measurement. She specializes in SQL-based analytics, data modeling, and turning raw marketing data into actionable insights. Alyona writes about practical analytics workflows, BigQuery best practices, and data-driven decision-making.