GA4 does not function like Universal Analytics. Event-level exports now play a central role in analytics and reporting workflows.
There are three common ways to move GA4 data into a data warehouse:
- Native GA4 to BigQuery export
- No-code ETL platforms like Hevo Data
- Manual extraction using the Google Analytics Data API
Teams following modern data warehouse best practices increasingly centralize marketing and product analytics data into cloud warehouses for unified reporting.
Native BigQuery export is free for standard GA4 properties, but it is limited to the Google Cloud ecosystem.
ETL platforms simplify schema handling, transformation, monitoring, and multi-destination loading.
API-based pipelines offer flexibility but require engineering effort, maintenance, and quota management.
Are you looking for an easy way to move your data from Google Analytics to a data warehouse? If yes, then you are in the right place. This blog post aims to show you steps that can help you load your data from Google Analytics to a data warehouse. The blog will also highlight any limitations that you may encounter. This will enable you to make an informed decision after evaluating the methods.
Your GA4 reports show you what happened. Your data warehouse shows you why, and what to do next.
GA4’s built-in interface is fine for surface-level metrics. But the moment you need to join your analytics data with CRM records, ad spend, or product usage data, you’ve hit its ceiling. The answer is to move that data into a warehouse where you can query it with SQL, model it with dbt, and feed it into every downstream tool your team uses.
According to Google Analytics Stats, GA4 is now active on over 14.2 million websites, and a growing number of those teams are moving their analytics data into warehouses for deeper analysis.
This post covers three practical ways to move GA4 data into a warehouse. Each one involves a different trade-off between cost, control, and engineering effort.
If your warehouse is Snowflake, Redshift, or Databricks, the native GA4 export is not an option. Hevo connects GA4 to any major warehouse in under 5 minutes, with automated schema mapping, incremental syncs, and zero ETL scripts to maintain.
- Supports all major warehouses, not just BigQuery
- Automatic schema mapping and incremental syncs out of the box
- Full pipeline visibility with row-level logs and anomaly alerts
Trusted by 2,000+ data teams. Rated 4.4/5 on G2.
Table of Contents
Methods to Move Data From Google Analytics 4 to Data Warehouse
There are three widely used approaches for moving GA4 data into a cloud data warehouse. The right option depends on your infrastructure, engineering bandwidth, reporting requirements, and long-term scalability goals.
Here is a quick comparison before we dive into each method.
| Method | Best For | Setup Complexity | Maintenance | Main Limitation |
| Native GA4 to BigQuery export | Teams already using Google Cloud | Low | Low | Limited to BigQuery |
| Hevo no-code Pipeline | Multi-warehouse and production analytics pipelines | Very Low | Very Low | Paid platform |
| Google Analytics Data API | Custom engineering workflows | High | High | Requires ongoing maintenance |
As more organizations centralize analytics data, pipelines are increasingly expected to support identity stitching, attribution modeling, and downstream BI tools alongside raw event storage.
That is why many teams treat GA4 export as part of a broader Google Analytics ETL strategy rather than a one-time integration setup.
A practical rule of thumb:
- Use native export if BigQuery is already your warehouse.
- Use Hevo if you want automated pipelines, transformations, monitoring, and support for multiple destinations.
- Use the API only when you need full custom extraction logic or highly specialized workflows.
| Already using BigQuery but running into export limitations? Hevo connects GA4 to any warehouse, handles schema changes automatically, and keeps your pipelines running without manual fixes. Start your free trial. |
Method 1: Native Integration: GA4 to BigQuery (Free)
GA4 includes a built-in BigQuery export that requires no third-party tools, no code, and no cost beyond standard BigQuery storage charges. It is the fastest path to raw, unsampled event-level data for teams already operating in the Google Cloud ecosystem.
Google officially recommends BigQuery export for advanced analysis and long-term event storage beyond the GA4 interface.
A few things to know before you start:
- You can connect one Google Cloud project to one GA4 property, though multiple GA4 properties can point to the same project.
- The export is not retroactive. GA4 only sends data from the moment you enable it, so set this up as early as possible.
- The free tier supports up to 1 million events per day. Streaming exports (near real-time) require billing information to be added to your Google Cloud project.
Prerequisites:
- Editor or Administrator access to your GA4 property
- A Google Cloud project with the BigQuery API enabled
- Owner or BigQuery Admin permissions on that Google Cloud project
Step 1: Set Up Your Google Cloud Project
If you do not already have a Google Cloud project, go to the Google Cloud Console and create one. Once inside the project, navigate to APIs & Services > Library, search for BigQuery API, and enable it.
Step 2: Link GA4 to BigQuery
- Open your GA4 property and go to Admin.
- Under the Product Links section, select BigQuery Links.
- Click Link and choose your Google Cloud project from the list.
Step 3: Choose Your Data Streams
Select which GA4 data streams (web, iOS, Android) you want to include in the export. You can include all streams or limit to specific ones.
Step 4: Configure Export Frequency
Choose between:
- Daily export — Free. Data lands in BigQuery once per day in date-partitioned tables named events_YYYYMMDD.
- Streaming export — Near real-time. Creates additional events_intraday_YYYYMMDD tables. Requires billing to be enabled on your Google Cloud project.
Click Submit to activate the link.
Step 5: Verify Data in BigQuery
Once the first export runs, open BigQuery and navigate to your project. Your GA4 data will appear in a dataset named after your property ID (for example, analytics_123456789). From here you can query with SQL, connect to Looker Studio, or feed data into dbt models.
Limitations of the Native Method
- BigQuery only: No direct export to Snowflake, Redshift, or Databricks.
- No backfill: Historical data before the setup date is not included.
- 1M events/day cap: High-traffic properties may hit the daily limit on the free tier.
- Limited schema control: The export schema is fixed by Google. You cannot filter columns or restructure tables at export time.
- Streaming costs money: Near real-time data requires billing to be enabled on your GCP project.
| Want GA4 data in Snowflake, Redshift, or Databricks without building around BigQuery? Try Hevo free for 14 days and connect GA4 to any warehouse in minutes. |
Method 2: Migrate GA4 Data to Your Data Warehouse with Hevo
The native BigQuery integration works well initially, but limitations appear as data volume and reporting complexity grow.
Hevo removes all of that. It is a no-code ELT platform that connects GA4 to any major data warehouse, like BigQuery, Snowflake, Redshift, and Databricks, in minutes. It handles schema mapping automatically, recovers from source failures without manual intervention, and gives you full pipeline visibility through a unified dashboard. No scripts. No infrastructure. No surprises.
This method works best if your warehouse is not BigQuery, your traffic exceeds 1 million daily events, or you need a production-grade pipeline with minimal maintenance overhead.
Prerequisites
- An active GA4 account with the data you want to move. If you don’t have access, ask your GA4 account administrator.
- A Hevo account with the Pipeline Administrator, Team Collaborator, or Team Administrator role assigned to you.
- A configured destination — BigQuery, Snowflake, Redshift, Databricks, or another supported data warehouse.
Step 1: Configure GA4 as the Source
Log in to Hevo and open the Pipelines view.
- Click +CREATE PIPELINE
- On the Select Source Type page, choose Google Analytics 4
- On the Configure your Google Analytics 4 account page:
- If you have already linked a Google account, select it and click CONTINUE
- If not, click +ADD GOOGLE ANALYTICS 4 ACCOUNT, choose your linked Google account, and click Allow to grant Hevo access
On the Configure your Google Analytics 4 Source page, fill in the following:
- Pipeline Name: A unique name, up to 255 characters
- Authorized User/Service Account: Pre-filled based on the Google account you connected. Not editable.
- GA4 Account Name: The GA4 account you want to replicate data from. One Google account can contain multiple analytics accounts.
- Property Name: The website or app you want Hevo to read data from. Appears after you select a GA4 account.
- Historical Sync Duration: How far back you want Hevo to pull existing data. Default is 6 months. This cannot be changed after the pipeline is created, so set it carefully.
In the Report section, configure the following:
- Report Name: A unique name, up to 30 characters
- Dimensions: The attributes you want to see in your report (for example, city, device category, or session source)
- Metrics: The numerical measurements tied to those dimensions (for example, sessions, conversions, or engaged sessions)
- Pivot Report (optional): Enable this if you want Hevo to create additional reports by rearranging the data from the parent report
- Advanced Options: Use these to apply filters and restrict data to specific segments if needed
You can add up to five reports by clicking +ADD ANOTHER REPORT. Click TEST & CONTINUE when done.
Note: Hevo retrieves incremental data in batches rather than making a separate API call per report. This keeps your GA4 API quota consumption low and your pipeline efficient.
Step 2: Configure Your Destination
Once your source is set, connect your destination warehouse. The configuration fields will vary depending on which warehouse you choose. The steps below use BigQuery as an example.
- In the Navigation Bar, click DESTINATIONS
- Click +CREATE DESTINATION and select your warehouse type
- For BigQuery, fill in the following on the Configure your Google BigQuery Destination page:
Specify the details:
- Destination Name: A unique name, up to 255 characters
- Account: The account type for authenticating and connecting to BigQuery
- Project ID: The BigQuery project where your data will land
- Dataset: Let Hevo create one automatically, or select an existing dataset from your project
- GCS Bucket: Let Hevo create one, or choose an existing bucket
- Advanced Settings:
- Populate Loaded Timestamp: Enable to add a ___hevo_loaded_at column showing when each event was loaded
- Sanitize Table/Column Names: Enable to replace non-alphanumeric characters with underscores for cleaner table names
Click TEST CONNECTION, then SAVE & CONTINUE.
For Snowflake, Redshift, or Databricks, the field set will differ. Refer to Hevo’s destination documentation for warehouse-specific setup instructions.
Once saved, Hevo starts ingesting your GA4 data and loading it into your destination warehouse. From this point, the pipeline runs automatically. If your GA4 schema changes — a new dimension, a renamed field — Hevo detects it and adjusts without breaking the pipeline.
For a deeper look at moving GA4 data specifically into BigQuery via Hevo, see our dedicated guide on Google Analytics to BigQuery ELT.
| Need a step-by-step walkthrough for a specific destination? The Google Analytics to BigQuery ETL guide and the Google Analytics to Redshift guide cover those paths in detail.Not on Hevo yet? Start a free 14-day trial. No credit card required. |
Method 3: Migrate GA4 Data to Your Data Warehouse Manually with the Google Analytics Data API
The Google Analytics Data API v1 gives engineering teams programmatic access to GA4 report data. It works with any warehouse and any language, but it requires your team to own the full pipeline, including authentication, extraction logic, error handling, scheduling, and schema management.
This method suits teams with existing data engineering infrastructure who need custom extraction logic, non-standard schemas, or destination environments that no managed connector supports.
Prerequisites:
- GA4 property with Editor or Administrator access
- A Google Cloud project with the Google Analytics Data API enabled
- Python (or your preferred language) and the google-analytics-data library installed
Step 1: Create and Configure Your Google Cloud Project
Go to the Google Cloud Console and create a new project, or select an existing one. Navigate to APIs & Services > Library, search for Google Analytics Data API, and enable it.
Step 2: Create API Credentials
In the Cloud Console, go to APIs & Services > Credentials and create a new Service Account. Download the JSON credentials file. This file is what your script will use to authenticate against the API.
Store this file securely and do not commit it to version control.
Step 3: Authenticate Your Application
Set the path to your credentials file as an environment variable:
“`bash
export GOOGLE_APPLICATION_CREDENTIALS=”/path/to/credentials.json”
“`
Install the client library if you have not already:
bash
pip install google-analytics-data
Step 4: Write and Run the API Request
Use the runReport method to pull data from your GA4 property. Replace YOUR_PROPERTY_ID with your numeric GA4 property ID (found in GA4 Admin > Property Settings):
python
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import RunReportRequest, DateRange, Dimension, Metric
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f”properties/YOUR_PROPERTY_ID”,
dimensions=[Dimension(name=”sessionSource”), Dimension(name=”country”)],
metrics=[Metric(name=”sessions”), Metric(name=”conversions”)],
date_ranges=[DateRange(start_date=”30daysAgo”, end_date=”today”)],
)
response = client.run_report(request)
for row in response.rows:
dims = [d.value for d in row.dimension_values]
mets = [m.value for m in row.metric_values]
print(dims + mets)
Adjust dimensions, metrics, and date ranges to match your reporting requirements. The full list of supported dimensions and metrics is available in the GA4 Dimensions and Metrics Explorer.
Step 5: Load Data Into Your Warehouse
Parse the API response and write the records to your warehouse using your preferred method — a pandas DataFrame to BigQuery, a COPY command to Redshift, or a Snowflake connector. Set up a cron job or orchestration tool (Airflow, Prefect) to run the script on your required cadence.
For a broader look at how data warehouse tools fit into this kind of pipeline, that guide is a useful reference.
Limitations of the Manual Method
- Engineering overhead: Building and maintaining an API-based ETL pipeline requires ongoing engineering commitment, which can strain small teams or those without dedicated data engineers.
- API quota limits: Standard GA4 properties are capped at 200,000 tokens per day and 40,000 tokens per hour. Complex queries with high-cardinality dimensions consume tokens faster.
- No real-time support: The Data API is not designed for streaming. Achieving near real-time ingestion requires aggressive polling, which burns through quota quickly.
- Ongoing maintenance: API versions change, credentials expire, and schema updates require code changes. Each one is a maintenance event your team has to absorb.
- Error handling falls on you: Retry logic, failed run detection, and data gap recovery are your responsibility. There is no fault tolerance built in.
| If the maintenance burden of the manual approach is already a concern, Hevo handles all of this automatically, including schema mapping, incremental syncs, and error recovery, without writing a line of code. |
Conclusion
Moving GA4 data into a warehouse unlocks analysis that the GA4 interface cannot support, like cross-channel attribution, SQL-based modeling, and joins with your CRM and product data. The three methods covered here each serve a different situation: the native BigQuery export for teams already in the Google Cloud ecosystem, Hevo for teams that need a warehouse-agnostic pipeline with no engineering overhead, and the GA4 Data API for teams that require full control over extraction logic.
If you are not sure where to start, the native export gets you data in BigQuery today at no cost. If you need more destinations or more reliability, Hevo’s free trial takes under 5 minutes to set up.
FAQs
1. Which method is best for migrating GA4 data to a data warehouse?
It depends on your destination and engineering capacity. The native BigQuery export is the fastest option if BigQuery is already your warehouse and you want minimal maintenance. Hevo is the better fit if you need to load GA4 data into Snowflake, Redshift, or Databricks, or if you want automated schema mapping and incremental syncs without writing code. The GA4 Data API suits engineering teams that need custom extraction logic or non-standard schemas.
2. Is Google BigQuery a data warehouse?
Yes. Google BigQuery is a fully managed, serverless data warehouse designed for large-scale analytics. It stores and processes data in the cloud and supports standard SQL queries across datasets of any size.
3. Can Google Analytics be used for data analysis?
Yes, but only up to a point. GA4’s built-in interface covers traffic reporting, audience analysis, and conversion tracking well. For anything requiring joins with external data sources, custom SQL queries, or long-term historical storage beyond GA4’s retention limits, moving the data to a warehouse is the better approach.
4. What is the cost of exporting GA4 data?
The native GA4 to BigQuery export is free. Once data is in BigQuery, standard storage and query charges apply. For current BigQuery pricing details, refer to the Google Cloud pricing page. If you use Hevo, pricing is based on your event volume and plan. See Hevo pricing for details.
5. Can I send GA4 data to Snowflake or Redshift without using BigQuery?
Yes. The native GA4 export only supports BigQuery. To load GA4 data into Snowflake, Redshift, Databricks, or another warehouse, you need either a managed connector like Hevo or a custom pipeline built on the GA4 Data API. Hevo supports all major warehouses and requires no code to set up. Start a free trial here.
SIGN UP for a 14-day free trial and see the difference!