Resources
What the GA4 export gives you, and what it leaves to you.
Raw events rather than reports. Useful, and further from a dashboard than it looks.
- 6 minute read
- 6 sections
Part 1
What the export is
GA4 can send its raw event data to BigQuery, Google's data warehouse, once a day, and optionally through a more frequent intraday export. Each row is one event, such as a page view or a purchase, with its details attached as nested fields.
It is the closest thing to the data GA4 itself holds. It is not the same thing as GA4's reports, and most of the confusion about it starts there.
Part 2
Why the figures will not match the interface
GA4's reports are computed from events with rules applied on the way. Sessions are constructed, some user counts are estimated rather than counted exactly, small figures can be withheld to protect privacy, and where consent was declined GA4 can fill gaps with modelled data. The export holds the observed events, before most of that happens.
So a session count written in SQL and the one in the interface will differ, and both can be correct. Decide which one your reports use, write it down, and stop comparing the two expecting them to agree.
Part 3
It starts the day you link it
The export does not backfill. It carries events from the day the link is made onwards, and nothing from before. History GA4 collected before that day stays in GA4 and can only be retrieved as aggregated reports, not as events.
The practical advice follows directly: link it early, even if nobody will query it for months. A table nobody reads costs little to keep. History you never exported cannot be recovered at any price.
For an agency, that puts the link on the onboarding checklist for every new client whose property does not already have one. Ask first, because the property is the client's, and agree whose cloud project the export lands in before the first day is written.
Part 4
The shape takes work
Before the export answers a reporting question, three things have to happen to it.
Unnesting
Event details are stored as lists of keys and values inside each row. Every query has to unpack them, and doing that repeatedly across a large table is slow to write and billed on the data it reads.
Rebuilding the reports
Sessions, channel groupings and attribution are not stored as columns. Anything the interface shows ready-made has to be rebuilt in SQL, and rebuilt the same way every time.
Modelling once
The sensible end state is a modelled table that does the unnesting and the session logic once, which every report reads instead of the raw events. That table is the real product. The export is its input.
Part 5
What it still does not contain
Only GA4. No ad spend, no CRM, no orders as the client's store recorded them. The export answers questions about what people did on the site, and on its own it cannot say what that behaviour cost or what it was worth.
Those answers need the other sources in the same warehouse, reconciled to the same day boundaries, the same currency and the same names, which is a separate job from switching the export on.
In practice
Where SightShark fits
SightShark connects GA4 as one of 200+ sources and lands each client's property in your own data warehouse next to that client's ad platforms, CRM and store, modelled so that a session, a conversion and a channel mean one thing in every report.
If a client already has the export running, keep it. It is the event-level record, and there is no reason to switch it off because modelled tables sit beside it.
See how the platform worksQuestions
Questions people ask
Can you backfill the GA4 BigQuery export?
No. The export carries events from the day the link is created onwards and includes nothing collected before it. Earlier history stays in GA4 and can be retrieved as aggregated reports through the interface or its reporting API, but not as raw events, which is why the export is worth linking early.
Why does the GA4 BigQuery export not match the GA4 reports?
Because the reports are computed with rules the export does not apply. The interface constructs sessions, estimates some user counts, withholds small figures for privacy and can add modelled data where consent was declined. The export holds observed events before those steps, so figures calculated from it differ, and both can be correct.
Does the GA4 BigQuery export cost anything?
Switching it on in GA4 costs nothing for a standard property, but the warehouse it lands in bills for storage and for the data each query reads. Standard properties also have a limit on how many events the daily export carries, so check the limit for each client's property before relying on it for a large site.
Also worth reading
- 5 min read
Why AI gets your clients' marketing data wrong.
Connecting a model to a client's data does not make it right. Here is what breaks.
Read it - 6 min read
Can AI write your client reports?
The writing is the easy part. The numbers underneath decide whether it is right.
Read it - 7 min read
Why ad platform numbers never match on the same campaign.
They are not measuring the same thing. Once you know what each one counts, the gap stops being a mystery.
Read it
Pricing
Priced by the clients you report on.
Starter
$499 /month
Up to 20 clients
Growth
$999 /month
Up to 50 clients
Enterprise
Custom
No cap on clients
Get started
Want this running on your own data?
Book a call with someone who can answer the technical questions.