Linking Google Analytics as a source
This source is currently in alpha. The interface and available tables may change.
The Google Analytics connector syncs daily report data from a Google Analytics 4 property – users, sessions, page views, devices, locations, traffic sources, and events – into PostHog.
Prerequisites
You need a Google account with read access to the GA4 property you want to sync, and the numeric property ID for that property.
Adding a data source
- In PostHog, go to the Sources tab of the data pipeline section.
- Click + New source and click Link next to this source.
- Enter your credentials (see Configuration below) and click Next.
- Select the tables you want to sync, choose a sync method and frequency, then click Import.
Once the syncs are complete, you can start querying this data in PostHog.
When linking Google Analytics, you'll need:
- Google Analytics account – connect a Google account that has read access to the property. PostHog requests the
analytics.readonlyscope when you authorize. - Property ID – the numeric GA4 property ID, found in Google Analytics under Admin → Property settings → Property details (for example,
123456789).
Sync modes
Each table can be synced in one of several modes, depending on what the source supports:
- Webhook (when available) – the source pushes changes to PostHog in real time. Fastest freshness, lowest ongoing cost, and the only mode that reliably captures updates and deletes.
- Incremental – only new or updated rows are synced on each run, using a cursor field (such as an
updated_attimestamp). Cheaper than a full refresh, but deletes aren't captured. - Append only – new rows are appended using a cursor field; existing rows are never updated. Ideal for immutable, append-only tables like event logs.
- Full refresh – the whole table is reloaded on every sync. Use it when a table has no reliable cursor or when you need deletions reflected.
See sync methods for a full explanation of how each mode works and how to choose between them.
Configuration
| Option | Description |
|---|---|
Google Analytics accountType: oauth Required: True | |
Property IDType: text Required: True | The numeric GA4 property ID, found in Google Analytics under Admin → Property settings → Property details. |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
website_overview | Daily totals for users, sessions, page views, session duration, and bounce rate. | Incremental, Full refresh | date | — |
daily_active_users | 1-day active users per day (DAU). | Incremental, Full refresh | date | — |
weekly_active_users | Rolling 7-day active users per day (WAU). | Incremental, Full refresh | date | — |
four_weekly_active_users | Rolling 28-day active users per day. | Incremental, Full refresh | date | — |
devices | Daily usage broken out by device category, operating system, and browser. | Incremental, Full refresh | date | — |
locations | Daily usage broken out by country, region, and city. | Incremental, Full refresh | date | — |
pages | Daily page performance broken out by host name and page path (including query string). | Incremental, Full refresh | date | — |
traffic_sources | Daily traffic broken out by session source and medium. | Incremental, Full refresh | date | — |
user_acquisition | Daily acquisition broken out by the source and medium that first acquired each user. | Incremental, Full refresh | date | — |
events | Daily event counts broken out by event name. | Incremental, Full refresh | date | — |
Troubleshooting
If your sync is failing or data looks wrong, see the Data warehouse troubleshooting guide. If that doesn't help, contact support – we're happy to help.