Skip to content
EN
BOOK A CALL
Analytics and Measurement

GA4 BigQuery Export and Marketing Data Warehouse

The GA4 interface offers an aggregated, thresholded view limited by data retention. The BigQuery export gives every event as its own row. The real value appears when this raw data meets other data you already have: returns, leads that turned into sales in the CRM, marketplace orders and ad cost from every channel. That is what turns GA4 in BigQuery into a marketing data warehouse.

datechannelcampaignsessionrevenueJoin with SQL
Illustrative view: illustrative view of a joined table in a data warehouse.
Purpose and appearance

What do we use this service for?

We use BigQuery to see outcomes that ad platforms and GA4 cannot: net revenue after returns, leads that became sales and customers who buy again. By joining raw event data with order, CRM and cost data, we aim to shift budget to campaigns that bring profit and track customer value over the long term.

Funnel stages it serves

  1. Awareness
  2. Consideration
  3. Conversion
  4. Loyalty

Why we turn on the GA4 BigQuery link on day one

The BigQuery export does not work backward; data flows from the day the link is created. A link not opened today makes next year's year-on-year comparison impossible. So even if raw data analysis is not needed right away, we set up the link in the first week of measurement work. Storage cost stays low for a small site, while lost history can never be recovered.

We choose two settings carefully during setup. Data location cannot be changed later; changing it means deleting the link and creating a new dataset, leaving a gap. On standard properties, the export pauses if the daily limit of 1 million events is exceeded; for high-traffic sites we filter out unnecessary events with export filters from the start. We use the free sandbox only for trials, because it deletes tables after 60 days and does not support the Data Transfer Service.

Joining GA4 data with orders, CRM and ad cost

The join key depends on where data comes from: transaction_id on the order side, a lead ID carried in the form submission on the CRM side. We also track the share of unmatched records; if it rises, the ID field is getting lost somewhere in the flow. We keep matching rules in writing so an analyst on your team can reproduce the same result. The joins we build most often:

  • Order and return data, via transaction_id in GA4: returned orders are deducted from campaign revenue
  • CRM records, via the lead ID carried in form submissions: which campaign's leads turned into sales
  • Google Ads cost, daily via the BigQuery Data Transfer Service
  • Cost from Meta, TikTok and other platforms, via connectors such as Supermetrics
  • Sales on Turkish marketplaces, via exports from each marketplace's own seller dashboard

Keeping BigQuery query cost and report speed under control

GA4 tables arrive split by day, and each query is billed by the data it scans. We limit queries to a date range with _TABLE_SUFFIX and avoid SELECT *. Instead of scanning the raw table every time a report opens, we build small summary tables refreshed every night with scheduled queries. We also set a budget alert at project level.

When a Data Studio report reads from these summary tables, it opens fast and does not hit the GA4 connector's quota errors. The same tables also serve as base data for seasonal behavior analysis and budget planning; past years' demand curve comes out of a single query, and we build the campaign calendar around it.

BigQuery: when do we recommend it?

We recommend it

  • B2B and service brands where part of the sales close through a CRM, phone or dealers
  • E-commerce brands with high return rates that want to see campaign revenue as net revenue
  • Performance teams that want to compare Meta and TikTok cost with GA4 revenue in one query
  • Analyses that hit thresholding and retention limits in GA4 explorations

We don't recommend it

  • Setups where nobody knows SQL and no reporting layer will be built to read the data
  • New sites with a few hundred sessions a month; the GA4 interface is enough at that scale

How we manage BigQuery

  1. Project and locationWe set up the Google Cloud project, billing and the data location that will stay fixed.
  2. GA4 linkWe turn on the daily export and define event filters if needed.
  3. External sourcesWe connect ad cost, CRM and order data to a regular flow.
  4. Matching rulesWe write the join logic using transaction_id, lead ID and UTM fields.
  5. Summary tablesWe produce the daily tables that reports read from with scheduled queries.

BigQuery: metrics and requirements

Metrics we track

  • Net revenue (after returns)
  • Profit by campaign
  • Lead-to-sale rate
  • Customer acquisition cost
  • Data scanned per query

What you need to get started

  • A Google Cloud project with billing enabled
  • Editor access in GA4 and Owner access to the BigQuery project
  • Regular data exports or API access from the CRM or order system
  • A unique ID field carried in forms and orders
The Brand Move Measurement Team

To learn more about BigQuery or other measurement services, contact The Brand Move Measurement team today.

Contact us now
Explore further

Other Analytics and Measurement services

Analytics and Measurement overview

Google Analytics 4

A GA4 audit and setup: event plan, key events, ecommerce tracking and attribution settings, checked against real orders.

Explore

Google Tag Manager

Google Tag Manager setup with a data layer, an organized container, Consent Mode v2 and, where it pays off, server-side tagging.

Explore

Data Studio (Looker Studio)

A fast-loading Looker Studio (Data Studio) marketing dashboard with written metric definitions, so management and marketing read the same numbers.

Explore
Frequently asked questions

BigQuery: frequently asked questions

How do we export GA4 data to BigQuery?

By linking the GA4 property to a Google Cloud project in GA4's admin settings and choosing daily and, optionally, streaming export. Data flows only from the day the link is created, so we set it up early, choose the data location carefully and add event filters for high-traffic sites.

Do we need the streaming export?

For most brands, no. Streaming tables update within minutes, but Google does not guarantee completeness for this flow, and fields such as new user attribution are missing. We report from daily tables and turn on streaming only for special cases such as monitoring a campaign day.

What questions does joining ad data with GA4 in BigQuery answer?

The most common one is which campaign really brings profit. For example, only with this join can we see how many forms from Meta lead ads turned into sales, or how much Performance Max revenue remains after returns.

Will our data be stored outside Türkiye?

We choose the location region when creating the BigQuery dataset, and that choice cannot be changed later. We decide which region to use with your legal team, depending on whether the data contains personal information; we do not keep direct identifiers in raw GA4 data.

Can we get historical GA4 data into BigQuery?

No. The export starts from the day the link is created and does not backfill earlier days. That is why we recommend turning it on as early as possible, even if raw data analysis is not needed yet.

Let's run a first BigQuery review together.

In a free call we review your analytics property and tag setup, then show you in writing where data is missing or double-counted.

Book a growth call No sales pressure. Just findings.