New: Supaflow Claude Code Plugin -- let AI agents create, edit, and monitor your data pipelines. See how the plugin works
Google Analytics 4 logo

Google Analytics 4 Connector

Sync standard Google Analytics 4 reports across acquisition, traffic, events, ecommerce, demographics, and technology into your data warehouse.

SourceCommunity

Evaluating against Fivetran? See how Supaflow handles Google Analytics 4 pricing, connector quality, and Snowflake deployment side-by-side.

Supaflow vs Fivetran

Why Supaflow

All connectors included

Every connector is available on every plan. Pricing does not increase with connector count.

Pay for compute, not rows

Credit-based pricing. Usage scales with your pipelines, not with row counts.

One platform

Ingestion, dbt Core transformation, reverse ETL, and orchestration in a single workspace.

Capabilities

OAuth or Service Account Authentication

Connect with Google sign-in (OAuth) or upload a Google Cloud service account JSON key. OAuth is the recommended path: some Google Workspace tenants reject the service-account email when you try to add it as a Viewer on the GA4 property, and OAuth avoids that workflow entirely. The connector requests a single read-only scope (analytics.readonly) and never writes back to GA4.

Daily Incremental Sync, 50 Standard Reports

All 50 standard GA4 reports sync incrementally on a date cursor. After the initial backfill, each scheduled run fetches the new date range plus the prior cursor day (because GA4 Data API date ranges are inclusive), with the upper bound capped at yesterday so Supaflow does not land unstable intraday data.

Configurable Lookback for Late-Arriving Data

GA4 reprocesses sessions and key-event attribution after a day closes. Set Lookback Period (in seconds) to re-fetch a trailing window on each sync so late-arriving hits and attribution remodelling are picked up. Common values are 1 day, 7 days, or 90 days; the default is 0 for deterministic incremental runs.

Rolling 2-Year Backfill by Default

Leave Start Date blank and the initial sync defaults to a rolling 2-year window from today, which avoids burning API quota on years of empty days for properties created after GA4 launched. Set Start Date explicitly when you want a different starting point.

Custom Reports for Property-Specific Dimensions

Declare additional reports beyond the 50 standard ones via the Custom Reports JSON field. Each custom report becomes its own destination table and is validated against your property at save time so missing dimensions or metrics fail loud, not silent. Up to 20 custom reports per source.

One Property per Source

Each Supaflow source connects to a single GA4 property. Run multiple GA4 properties by creating one source per property, which keeps quota and access scoping clean.

Supported Objects

Standard reports (incremental)

User acquisition (8 reports)

First-user breakdowns by default channel group, medium, source, source/medium, source platform, campaign, Google Ads ad-network type, and Google Ads ad-group name.

Traffic acquisition (6 reports)

Session breakdowns by source/medium, medium, source, campaign, default channel group, and source platform.

Events and conversions (2 reports)

Event counts and key-event counts by event name.

Pages and screens (4 reports)

Page views and engagement broken down by page title + screen class, page path + screen class, page title + screen name, and content group.

Ecommerce purchases (9 reports)

Purchase metrics broken down by item name, item ID, item category levels 1 through 5, item brand, and in-app purchases.

Publisher ads (4 reports)

Ad-revenue metrics broken down by ad unit, page path, ad format, and ad source.

Demographics (7 reports)

User counts and engagement by country, region, city, language, age bracket, gender, and brand affinity interest.

Technology (10 reports)

User counts and engagement by browser, device category, device model, screen resolution, app version, platform, OS version, platform + device category, operating system, and operating system with version.

Custom reports

Up to 20 custom reports per source

Declare additional GA4 Data API reports via the Custom Reports JSON field. Each custom report becomes its own destination table on top of the 50 standard ones.

Not yet supported

Realtime Reporting API, BigQuery Export, audience export, funnel reports, cohort reports, pivot reports, raw event-level / user-level data, Admin API resources, multi-property syncs in one source

Not exposed by the connector today. Email support@supa-flow.io with the surface you need -- expansion is prioritized by customer demand.

How It Works

1

Find your GA4 property ID

In Google Analytics, open Admin and select the property you want to sync. The numeric property ID is the value after properties/ in the URL (for example 123456789). It is not the Measurement ID that starts with G- and not the stream ID.

2

Choose an authentication method

OAuth is the recommended path. Click Authorize in the Supaflow source wizard, sign in with a Google account that has at least Viewer access on the GA4 property, and Supaflow stores the resulting refresh token. Service account auth is also supported but some Google Workspace tenants block adding service accounts to GA4 properties at the workspace policy level; in that case use OAuth.

3

Grant Viewer access on the property

Open GA4 Admin > Property Access Management and add the principal (the Google account that will complete OAuth, or the service account client_email from the JSON key file) with Viewer access. The connector is read-only; Viewer is the minimum required role.

4

Configure optional sync settings

Set Start Date (YYYY-MM-DD) to override the default rolling 2-year backfill, or leave it blank. Optionally set Lookback Period (seconds) to re-fetch a trailing window of already-synced days each run. Optionally provide Custom Reports JSON to add reports beyond the 50 standard ones.

5

Test and save

Click Test & Save. Supaflow verifies access by reading the GA4 property metadata and validates any custom reports against the property. If access is denied or a custom report references a dimension or metric the property does not expose, the save fails with a specific error.

Use Cases

Marketing performance reporting in the warehouse

Land acquisition and traffic reports alongside ad-spend data from your ad platforms to compute blended CAC, channel ROI, and source-medium attribution in dbt, with all data co-located in your warehouse.

Ecommerce and publisher revenue reconciliation

Pull the ecommerce purchases and publisher ads report families into your warehouse to reconcile GA4-reported revenue against Stripe, Shopify, or your ad-network payout reports, and to model item-level margins by category and brand.

Modeled product analytics in your warehouse

Snapshot the GA4 standard report set into your warehouse so analytics teams can join GA4 outputs with CRM, billing, and product data, model engagement and acquisition trends in dbt, and own the underlying tables alongside the rest of the stack instead of querying through the GA4 UI.

Frequently Asked Questions

What does Supaflow sync from GA4?
The 50 standard GA4 reports across acquisition, traffic, events, ecommerce, publisher ads, demographics, and technology, plus any additional reports you declare in Custom Reports JSON. Each report becomes its own table in your destination, with one row per (property, day, breakdown) combination.
Does the connector support raw event-level GA4 data or BigQuery Export?
No. The connector reads the GA4 Data API standard report set, which is aggregated. Raw event-level data is delivered through Google's GA4 BigQuery Export, a separate Google product that is not exposed through the Data API. Email support@supa-flow.io if BigQuery Export integration is important for your evaluation.
Why does the connector use a date-level cursor?
GA4 Data API report dates are inclusive. Supaflow tracks a date cursor and caps the upper bound at yesterday to avoid landing unstable intraday data. Combined with the configurable Lookback Period, this gives you control over how far back each scheduled sync re-fetches.
Can one source sync more than one GA4 property?
No. Each Supaflow source connects to a single GA4 property. Create one source per property if you need to sync multiple properties.
What permissions does the authenticating account or service account need?
Viewer access on the GA4 property under GA4 Admin > Property Access Management. The connector is read-only; Viewer is the minimum role and the maximum the connector will use. Do not grant Editor or Administrator unless other tools sharing the credential need it.
Why does my service account get rejected when adding it as a Viewer?
Some Google Workspace tenants block adding service account principals to GA4 properties at the workspace policy level. The GA4 admin UI rejects the service account email client-side. Switch Authentication Method to OAuth in the Supaflow source wizard; OAuth uses a Google account that already has access to the property, so the service-account add-user step is not needed.
How does Supaflow handle GA4 API quotas?
Google applies API quotas to the GA4 Data API per property and per Google Cloud project. Supaflow handles transient rate limiting automatically with retry and backoff. Very large initial syncs or many parallel pipelines on the same property may take longer or need off-peak scheduling. See Google's GA4 Data API quotas documentation at developers.google.com/analytics/devguides/reporting/data/v1/quotas for current limits.
Can I run the GA4 pipeline natively inside Snowflake?
Yes. Supaflow runs as a Snowflake Native App via Snowpark Container Services. Your GA4 data is extracted and loaded without leaving your Snowflake account. See our Snowflake Native ETL guide for details.

Need a connector we don't support yet?

Build one with AI-powered Connector Dev Skills.

Learn More About the Connector SDK