Connect Google Analytics 4 (GA4) to your AI agents.
Connect Google Analytics 4 (GA4) data to AI agents with Combined. Explore website overview, daily active users, traffic sources, source setup, MCP access and read-only business queries.
Put Google Analytics 4 (GA4) records to work in the agent you already use. Combined syncs business data into a managed data layer and exposes scoped, read-only queries through MCP.
Start with 5 million MAR without a card; usage after the trial is $5 per million MAR, with no monthly minimum. Combined offers 1,125 connectors across catalog sources and connectors generated through desktop automation.
How to connect Google Analytics 4 (GA4) to Combined
- Add your source. Open Connected Apps in Combined and select Google Analytics 4 (GA4). Use the account or workspace that contains the records you want to analyze.
- Authorize access. Complete the connection flow and choose the required permissions. The setup reference below shows the upstream source's configurable fields; the Combined flow may handle some of them for you.
- Select datasets and sync. Choose the relevant data, set any available history filters, and wait for the first successful sync.
- Grant your agent access. Use the Set up or Access workspace to connect your agent through MCP and scope it to the sources it needs.
- Ask a first question. Discover the synced schema, check freshness, and run a bounded read-only query. Then add another source for a cross-app analysis.
The onboarding guide covers the workspace flow. Prepare these Google Analytics 4 (GA4) settings before connecting:
| Setting | When needed | Input |
|---|---|---|
| Convert `conversions:*` Metrics to Float | Optional | boolean |
| Credentials | Optional | Authenticate via Google (Oauth) / Service Account Key Authentication |
| Access Token | Depends on selected setup option | Credential entered in the connection flow |
| Client ID | Depends on selected setup option | string |
| Client Secret | Depends on selected setup option | Credential entered in the connection flow |
| Refresh Token | Depends on selected setup option | Credential entered in the connection flow |
| Service Account JSON Key | Depends on selected setup option | Credential entered in the connection flow |
| Custom Reports | Optional | array |
| Cohort Reports | Depends on selected setup option | Disabled / Enabled |
| Cohort Report Settings | Depends on selected setup option | object |
| Accumulate | Depends on selected setup option | boolean |
| Cohorts | Depends on selected setup option | array |
| Daterange | Depends on selected setup option | object |
| End Date | Depends on selected setup option | string |
| Start Date | Depends on selected setup option | string |
| Dimension | Depends on selected setup option | string |
| Name | Depends on selected setup option | string |
| Cohortsrange | Depends on selected setup option | object |
| End Offset | Depends on selected setup option | integer |
| Granularity | Depends on selected setup option | string |
| Start Offset | Depends on selected setup option | integer |
| Dimensions filter | Depends on selected setup option | andGroup / orGroup / notExpression / filter |
| Expressions | Depends on selected setup option | array |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Expressions | Depends on selected setup option | array |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Expression | Depends on selected setup option | object |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Dimensions | Depends on selected setup option | array |
| Metrics filter | Depends on selected setup option | andGroup / orGroup / notExpression / filter |
| Expressions | Depends on selected setup option | array |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Expressions | Depends on selected setup option | array |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Expression | Depends on selected setup option | object |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| fieldName | Depends on selected setup option | string |
| filter | Depends on selected setup option | stringFilter / inListFilter / numericFilter / betweenFilter |
| Casesensitive | Depends on selected setup option | boolean |
| matchType | Depends on selected setup option | array |
| Value | Depends on selected setup option | string |
| Casesensitive | Depends on selected setup option | boolean |
| Values | Depends on selected setup option | array |
| operation | Depends on selected setup option | array |
| Value | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Fromvalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Tovalue | Depends on selected setup option | int64Value / doubleValue |
| Value | Depends on selected setup option | string |
| Value | Depends on selected setup option | number |
| Metrics | Depends on selected setup option | array |
| Name | Depends on selected setup option | string |
| End Date | Optional | string |
| Start Date | Optional | string |
| Keep Empty Rows | Optional | boolean |
| Lookback window (Days) | Optional | integer |
| Property IDs | Required by source schema | array |
| Subscription Plan/Tier | Optional | string |
| Data Request Interval (Days) | Optional | integer |
Authentication choices are alternatives. Supply the settings for your selected method; enter credentials in the connection flow, rather than in an agent prompt.
Google Analytics 4 (GA4) datasets you can evaluate
This reference comes from the upstream source catalog and connector definition, version 2.10.1. Your account permissions, selected streams and successful sync determine what your agent can query. Discover the actual table and field names in Combined before writing SQL.
| Dataset | Record key | Update field | Example fields |
|---|---|---|---|
website_overview | Inspect schema | Inspect sync configuration | Discover in your workspace |
daily_active_users | Inspect schema | Inspect sync configuration | Discover in your workspace |
traffic_sources | Inspect schema | Inspect sync configuration | Discover in your workspace |
pages | Inspect schema | Inspect sync configuration | Discover in your workspace |
weekly_active_users | Inspect schema | Inspect sync configuration | Discover in your workspace |
devices | Inspect schema | Inspect sync configuration | Discover in your workspace |
locations | Inspect schema | Inspect sync configuration | Discover in your workspace |
four_weekly_active_users | Inspect schema | Inspect sync configuration | Discover in your workspace |
sessions | Inspect schema | Inspect sync configuration | Discover in your workspace |
property_metadata | property_id | Inspect sync configuration | name, propertyType, parent, createTime, updateTime (14 fields in reference) |
A cursor tracks changes for a source stream. It is not automatically the right date for a business metric: invoice date, close date and record-update date can answer different questions.
Useful Google Analytics 4 (GA4) questions for your AI agent
Start with the datasets you have granted. These prompts turn the referenced schema into checks and summaries; the agent should verify each field against your synced data.
- Describe the website overview fields, then count the available records and identify a useful grouping field.
- Describe the daily active users fields, then count the available records and identify a useful grouping field.
- Describe the traffic sources fields, then count the available records and identify a useful grouping field.
- Describe the pages fields, then count the available records and identify a useful grouping field.
Combine Google Analytics 4 (GA4) with another business app
Connect the second source, identify a maintained customer, account or project mapping, and aggregate each dataset before joining. Keep unmatched records visible and define the reporting window. The CRM-and-billing worked example includes runnable SQL demonstrating how a many-to-many join can double the result.
Use Google Analytics 4 (GA4) data in Claude Code, Cursor or another MCP client
Once the source is synced, the agent connects to Combined's MCP interface. Use the generated account-specific configuration from your workspace, keep credentials local, and grant only the sources needed for the task. Follow the Claude Code walkthrough or the MCP setup reference.
Use Combined to analyze my Google Analytics 4 (GA4) data.
List my granted sources, discover the datasets and describe their fields.
Look for datasets corresponding to website_overview, daily_active_users, traffic_sources, pages, weekly_active_users, devices.
Check the last successful sync and report the available date coverage.
Propose three useful questions based on the fields actually available.
For the question I choose, run read-only SQL over the complete matching dataset.
Use a bounded result; include source names, time window and query receipt.
Ask for a missing join key or metric definition instead of inventing one.Download this Google Analytics 4 (GA4) guide as Markdown to use alongside your agent instructions.
Which Google Analytics 4 (GA4) connection fits the task?
Managed data for complete questions across apps
Choose Combined when you want to analyze synced records, calculate totals, or join Google Analytics 4 (GA4) with other business data without operating a separate ingestion and query stack. The agent works with your source grants and read-only SQL access.
Application tools for live operations
For a task that must change Google Analytics 4 (GA4) immediately, evaluate its available API, native agent tools or desktop workflow. Keep application-action permissions separate from read-only analytics access. A live lookup and an aggregate over synced history solve different jobs.
Desktop-generated connectors for workflows beyond the catalog
Combined's 1,125-connector coverage includes connections generated through computer use. Choose this route when the workflow depends on an application's desktop or browser interface, and establish the fields, access and refresh behavior for that connection.
Read the direct MCP versus managed data comparison and compare business-data MCP options.
Troubleshoot your Google Analytics 4 (GA4) connection
- Authorization fails: check the selected authentication method, credential validity, source permissions and target account.
- History is missing: check the source's start-date or history filter and allow the initial sync to finish before comparing totals.
- A dataset is absent: check whether it is enabled and permitted for your account, then inspect discovery and sync status.
- The agent cannot query it: confirm the source is included in the agent's grant and that its sync succeeded.
- A total looks wrong: inspect record keys, duplicate rows, time zones, currencies and join fanout before changing the prompt.
Source details reviewed September 10, 2026. Google Analytics 4 (GA4) upstream connector documentation · Versioned connector definition. See also Combined Sources and data freshness for AI agents.