Google Analytics 4

Analytics

Ready to use

Traffic and engagement data from Google Analytics 4: visits, traffic sources, pages, locations, devices and events, broken down by day. Ingest delivers this data to a data warehouse you own as 7 tables, and updates it on the schedule you choose. There is no code to write and nothing to install.

What people use it for

  • See where visitors come fromBreak sessions down by channel, source, medium and campaign, day by day.
  • Find your best pagesCompare landing pages and page views to see what draws visitors in.
  • Understand your audienceSee visits by country, region, city, device and browser.
  • Track specific eventsFollow how often key events happen, day by day.

What you get

TableEach row is
Daily overview
daily_overview
One day of site activity
Devices
devices
One day and device combination
Events
events
One day and event
Landing pages
landing_pages
One day and landing page
Locations
locations
One day and location
Pages
pages
One day and page
Traffic sources
traffic_sources
One day and traffic source

Good to know

  • Daily overview: The first run loads the last 30 days. After that, each run keeps the last 30 days current, re-reading a day once its copy is at least a day old. Older records keep the values they had when last read.
  • Devices: The first run loads the last 30 days. After that, each run keeps the last 30 days current, re-reading a day once its copy is at least a day old. Older records keep the values they had when last read.
  • Events: The first run loads the last 30 days. After that, each run keeps the last 30 days current, re-reading a day once its copy is at least a day old. Older records keep the values they had when last read.
  • Landing pages: The first run loads the last 30 days. After that, each run keeps the last 30 days current, re-reading a day once its copy is at least a day old. Older records keep the values they had when last read.
  • Locations: The first run loads the last 30 days. After that, each run keeps the last 30 days current, re-reading a day once its copy is at least a day old. Older records keep the values they had when last read.
  • Pages: The first run loads the last 30 days. After that, each run keeps the last 30 days current, re-reading a day once its copy is at least a day old. Older records keep the values they had when last read.
  • Traffic sources: The first run loads the last 30 days. After that, each run keeps the last 30 days current, re-reading a day once its copy is at least a day old. Older records keep the values they had when last read.

How it works

  1. Choose Google Analytics 4. Connect your Google Analytics 4 account once, from Ingest.
  2. Pick where it goes. BigQuery, Snowflake, Databricks, Redshift and 10 more, in an account you own.
  3. Pick a schedule. Daily is the default, and weekly and monthly are there too.
  4. Ingest runs it from then on. If a run fails, your dashboard shows which table and why.

Questions

What does the Google Analytics 4 data include?
7 tables: daily overview (one row per day of site activity), devices (one row per day and device combination), events (one row per day and event), landing pages (one row per day and landing page), locations (one row per day and location), pages (one row per day and page) and traffic sources (one row per day and traffic source).
Do I need an account with Google Analytics 4?
Yes. You connect your own Google Analytics 4 account once, from Ingest, and the data comes from what that account can see.
Which warehouses can Google Analytics 4 data go to?
Amazon S3, Google Cloud Storage, Azure Blob Storage, Apache Iceberg, Ingest Managed Lakehouse, MotherDuck, Postgres, Amazon Athena, Databricks, Redshift, BigQuery, ClickHouse, MySQL / generic SQL and Snowflake, in an account you own.
How fresh is the data?
As fresh as your schedule: daily by default, or weekly or monthly. Schedules as often as every 15 minutes are on the Enterprise plan.
Will running it again create duplicate rows?
No. Each row is stored once, by its key: when a run reads a row that is already there, it replaces that copy instead of adding a second one.
Do I need to write code?
No. Ingest builds, runs and maintains the connector. Someone with access to your warehouse connects it once, following a short guide.
For your data team: technical reference

Connector google_analytics, version 0.1.0, a REST source, status beta, authentication oauth2.

Vendor documentation: https://developers.google.com/analytics/devguides/reporting/data/v1

Configuration

KeyLabelTypeRequired
property_idGA4 property IDstringyes

Resources

ResourceStatusPlanWritePrimary keyOverrides
daily_overview
The property's headline numbers, one row per day. It is a Google Analytics 4 Data API report (runReport) for the property in the source's settings, read one day at a time over the last 30 completed days by default (lookback_days), and merged on its dimensions, so re-reading a day replaces that day's numbers. Google keeps processing a day for 24 to 48 hours, so completed days are read again after a day, and older days wait longer, a twentieth of their age at their last read (a day read at 100 days old waits 5 days). Days are the property's reporting time zone and revenue is the property's currency. The numbers are GA4's own: where GA4 applies privacy thresholds or groups rare values into an (other) row, the table holds what the GA4 interface shows. A row that disappears from a later read of the same day keeps its last synced values.
betawindowmergedatelookback_days
devices
Users and sessions by device category, operating system and browser, one row per day and combination. It is a Google Analytics 4 Data API report (runReport) for the property in the source's settings, read one day at a time over the last 30 completed days by default (lookback_days), and merged on its dimensions, so re-reading a day replaces that day's numbers. Google keeps processing a day for 24 to 48 hours, so completed days are read again after a day, and older days wait longer, a twentieth of their age at their last read (a day read at 100 days old waits 5 days). Days are the property's reporting time zone and revenue is the property's currency. The numbers are GA4's own: where GA4 applies privacy thresholds or groups rare values into an (other) row, the table holds what the GA4 interface shows. A row that disappears from a later read of the same day keeps its last synced values.
betawindowmergedate, deviceCategory, operatingSystem, browserlookback_days
events
Event counts by event name, one row per day and event. It is a Google Analytics 4 Data API report (runReport) for the property in the source's settings, read one day at a time over the last 30 completed days by default (lookback_days), and merged on its dimensions, so re-reading a day replaces that day's numbers. Google keeps processing a day for 24 to 48 hours, so completed days are read again after a day, and older days wait longer, a twentieth of their age at their last read (a day read at 100 days old waits 5 days). Days are the property's reporting time zone and revenue is the property's currency. The numbers are GA4's own: where GA4 applies privacy thresholds or groups rare values into an (other) row, the table holds what the GA4 interface shows. A row that disappears from a later read of the same day keeps its last synced values.
betawindowmergedate, eventNamelookback_days
landing_pages
Sessions by the page they started on (path, without the query string), one row per day and page. It is a Google Analytics 4 Data API report (runReport) for the property in the source's settings, read one day at a time over the last 30 completed days by default (lookback_days), and merged on its dimensions, so re-reading a day replaces that day's numbers. Google keeps processing a day for 24 to 48 hours, so completed days are read again after a day, and older days wait longer, a twentieth of their age at their last read (a day read at 100 days old waits 5 days). Days are the property's reporting time zone and revenue is the property's currency. The numbers are GA4's own: where GA4 applies privacy thresholds or groups rare values into an (other) row, the table holds what the GA4 interface shows. A row that disappears from a later read of the same day keeps its last synced values.
betawindowmergedate, landingPagelookback_days
locations
Users and sessions by country, region and city, one row per day and place. It is a Google Analytics 4 Data API report (runReport) for the property in the source's settings, read one day at a time over the last 30 completed days by default (lookback_days), and merged on its dimensions, so re-reading a day replaces that day's numbers. Google keeps processing a day for 24 to 48 hours, so completed days are read again after a day, and older days wait longer, a twentieth of their age at their last read (a day read at 100 days old waits 5 days). Days are the property's reporting time zone and revenue is the property's currency. The numbers are GA4's own: where GA4 applies privacy thresholds or groups rare values into an (other) row, the table holds what the GA4 interface shows. A row that disappears from a later read of the same day keeps its last synced values.
betawindowmergedate, country, region, citylookback_days
pages
Views and engagement by host and page path, one row per day and page. It is a Google Analytics 4 Data API report (runReport) for the property in the source's settings, read one day at a time over the last 30 completed days by default (lookback_days), and merged on its dimensions, so re-reading a day replaces that day's numbers. Google keeps processing a day for 24 to 48 hours, so completed days are read again after a day, and older days wait longer, a twentieth of their age at their last read (a day read at 100 days old waits 5 days). Days are the property's reporting time zone and revenue is the property's currency. The numbers are GA4's own: where GA4 applies privacy thresholds or groups rare values into an (other) row, the table holds what the GA4 interface shows. A row that disappears from a later read of the same day keeps its last synced values.
betawindowmergedate, hostName, pagePathlookback_days
traffic_sources
Sessions by the channel group, source, medium and campaign that started them, one row per day and combination. It is a Google Analytics 4 Data API report (runReport) for the property in the source's settings, read one day at a time over the last 30 completed days by default (lookback_days), and merged on its dimensions, so re-reading a day replaces that day's numbers. Google keeps processing a day for 24 to 48 hours, so completed days are read again after a day, and older days wait longer, a twentieth of their age at their last read (a day read at 100 days old waits 5 days). Days are the property's reporting time zone and revenue is the property's currency. The numbers are GA4's own: where GA4 applies privacy thresholds or groups rare values into an (other) row, the table holds what the GA4 interface shows. A row that disappears from a later read of the same day keeps its last synced values.
betawindowmergedate, sessionDefaultChannelGroup, sessionSource, sessionMedium, sessionCampaignNamelookback_days

Setting up the destination is its own short guide, one per warehouse or lake: Amazon S3, Google Cloud Storage, Azure Blob Storage, Apache Iceberg, Ingest Managed Lakehouse, MotherDuck, Postgres, Amazon Athena, Databricks, Redshift, BigQuery, ClickHouse, MySQL / generic SQL, Snowflake.

Get Google Analytics 4 data into your warehouse

Last updated .