Google Analytics 4 to BigQuery
Google gives every GA4 property a free BigQuery export of raw events, and for many teams that is the right place to start. Weld syncs something different: daily GA4 report tables, such as traffic by channel, campaign and page, next to your ad, CRM and revenue data, with lookbacks that keep recent days in line with GA4.
Checked against Weld and vendor docs on
- channel_traffic15 cols
- campaign_performance15 cols
- page_path13 cols
- events_overview10 cols
- audience_overview11 cols
- social_media_acquisitions15 cols
- Extract
- Load
- Keep in sync
- google_analytics_4.channel_trafficSynced
- google_analytics_4.campaign_performanceSyncing
- google_analytics_4.page_pathSynced
- google_analytics_4.events_overviewSynced
- google_analytics_4.audience_overviewSynced
- google_analytics_4.social_media_acquisitionsSynced
- Google Analytics 4 tables
- 7
- fields, typed
- 93
- agent context included
- MCP
Trusted by data and AI teams
Three ways to get GA4 data into BigQuery
Google has two native paths, and both are worth checking first. The GA4 export gives you event-level data; the BigQuery Data Transfer Service and Weld both load aggregated reports. Which one fits depends on whether you need raw events or report numbers that match the GA4 interface.
GA4 BigQuery export (native link)
- Best for
- Raw, unsampled event and user-level data
- Effort
- Low: link the property to a Google Cloud project
- Freshness
- Daily, or streaming within minutes
- Good to know
- No fee for the link itself; BigQuery storage and query costs apply. Standard properties are capped at 1 million events a day for the daily export, and Google pauses the export if a property keeps exceeding it. Streaming has no event limit and costs $0.05 per GB.
BigQuery Data Transfer Service for GA4
- Best for
- Report-level GA4 tables inside Google Cloud
- Effort
- Low: configure a transfer in the console
- Freshness
- Daily, refresh window of 4 days by default
- Good to know
- Google lists GA4 among the connectors with no transfer charge. One custom report per transfer, at most 9 dimensions and 10 metrics, and custom dimensions and metrics are not supported.
Weld
- Best for
- GA4 reports alongside ads, CRM and revenue data
- Effort
- Low: authorise, pick reports, choose a schedule
- Freshness
- Incremental syncs on your schedule, with lookbacks
- Good to know
- 7 pre-built report tables plus up to 20 custom reports. Each sync re-fetches recent days so figures GA4 revises later are overwritten.
How to sync Google Analytics 4 to Google BigQuery with Weld.
In the app, with the API or an agent.
What lands in Google BigQuery
Every Google Analytics 4 table, keys intact.
Weld's GA4 schema has 7 daily report tables. Each row is one property, one day and one value of the report's dimension, so they work as building blocks for marketing reporting rather than as raw events.
- channel_traffic15 columns
- property_idstring
- session_default_channel_groupingstring
- datedate
- total_usersdouble
- sessionsdouble
Users, sessions, engaged sessions, conversions and revenue per day by default channel grouping. The usual starting point for channel reporting.
- campaign_performance15 columns
- property_idstring
- session_campaign_namestring
- datedate
- total_usersdouble
- sessionsdouble
The same metrics split by session campaign name. Join to ad platform spend on campaign name and date to compare cost with GA4 outcomes.
- page_path13 columns
- property_idstring
- page_pathstring
- datedate
- screen_page_viewsdouble
- total_usersdouble
Views, users, new users, conversions and revenue per page path per day. Useful for content and landing page reporting.
- events_overview10 columns
- property_idstring
- event_namestring
- datedate
- event_countdouble
- total_usersdouble
Event counts, users and revenue per event name per day. A daily summary of events, not the event-level rows the native export gives you.
- audience_overview11 columns
- property_idstring
- datedate
- total_usersdouble
- new_usersdouble
- sessionsdouble
Daily totals for users, new users, sessions, sessions per user and page views for the property.
- campaign_performance
- channel_traffic
- social_media_acquisitions
- browser_and_operating_system_overview
- page_path
- audience_overview
- events_overview
Monthly sessions, engagement rate and revenue by channel.
In Google BigQuery SQL.
Runs in BigQuery against the channel_traffic table Weld lands, here in a dataset named ga4. Engagement rate is recomputed from sums rather than averaged, and users are left out because daily user counts cannot be added up across days.
1select2 date_trunc(c.date, month) as month,3 c.session_default_channel_grouping as channel,4 sum(c.sessions) as sessions,5 round(safe_divide(sum(c.engaged_sessions), sum(c.sessions)), 3) as engagement_rate,6 sum(c.conversions) as conversions,7 round(sum(c.total_revenue), 2) as revenue8from ga4.channel_traffic as c9group by month, channel10order by month desc, sessions descAsk your agent.
It queries Google BigQuery for you.
Connect Claude, Cursor, ChatGPT or your own agent to Weld over MCP. It reads the Google Analytics 4 context, finds the tables it needs and runs the query in Google BigQuery.
How many campaign_performance rows do we have in Google BigQuery?
Reading the Google Analytics 4 context first, so the query uses the right tables and keys.
Things to know.
Before you sync Google Analytics 4.
- Report tables and the native export answer different questions
- Weld syncs GA4 through the Analytics Data API, which returns aggregated reports. If you need individual events, user journeys or event parameters, use Google's native BigQuery export; you can run both and keep them in separate datasets.
- GA4 revises recent days
- Google Analytics keeps processing data after the day ends. By default each Weld sync also overwrites the past 24 hours and the full days 7 and 30 days ago. Custom lookbacks replace those defaults with the day offsets you pick.
- User counts do not add up across days
- total_users is a distinct count for each row's day and dimension value, so summing it over a month counts returning users more than once. Sum sessions, events and revenue freely; treat user totals over longer periods with care.
- Not every dimension and metric combination is valid
- Custom reports must include date and can only use combinations the GA4 Data API accepts. Check a combination in Google's GA4 Dimensions and Metrics Explorer or Query Explorer before you build the report.
- Rate limits are shared across your Google account
- Google Analytics applies global rate limits across your account. If other tools use the same limits, syncs can slow down; Weld throttles its GA4 syncs once usage reaches 80% of the limit, and the initial sync can be slower than later ones.
Common questions.
About Google Analytics 4 to Google BigQuery.
Start syncing Google Analytics 4 to Google BigQuery.
Set up your Google Analytics 4 data pipeline in minutes. No credit card required. Free for 14 days.