Google Analytics Reader
The Google Analytics Reader node fetches GA4 analytics data — sessions, users, page views, conversions, and revenue — using a curated list of metrics, dimensions, and date ranges.
What does the Google Analytics node do?
The Google Analytics Reader node connects to Google Analytics 4 and pulls report data on demand. You pick an account and a property, choose metrics and dimensions from a curated GA4 list, set a date range, and the node returns the rows as a JSON string ready to be processed by downstream nodes.
Common use cases:
- Building automated weekly or monthly traffic reports without logging into GA4.
- Tracking conversion funnels by combining event metrics (
conversions,eventCount) with traffic source dimensions. - Comparing year-over-year performance for a specific property and pushing the result into an LLM for narrative commentary.
- Running multi-property batch reports — feed properties from a list and let one node iterate.
Quick setup
Connect a Google Analytics integration
In Builder > Integrations > Google, authenticate with the Google account that owns access to your GA4 properties. The same integration is reused by every Google Analytics Reader node in the workspace.
Add the node to the canvas
Open the Node Library, go to Integrations > Google > Analytics, and drop the Google Analytics Reader node onto your workflow.
Pick account, property, metrics, and dimensions
In the node settings, select the Account and Property from the autocomplete dropdowns (populated from your integration). Choose one or more Metrics (e.g. sessions, activeUsers) and optional Dimensions (e.g. date, country).
Configure the date range
Pick a predefined Date Range (Last 7/28/30/90 days, This month, Last year, etc.) or choose Custom Date Range and fill in start_date and end_date in YYYY-MM-DD format.
Connect the output
Wire the node’s output to the next step — an LLM, a JSON Path Extractor, or a Google Sheets Writer. Define the receiving variable name on that next node to access the analytics JSON.
Configuration parameters
Required fields
integration_id integration required Google Analytics integration — The OAuth connection used to query the GA4 Data API. Selected inline by default; can be externalized via the Use Integration Variable toggle so an upstream node feeds it at runtime.
account_id string required GA Account — The GA account that owns the property (e.g. accounts/123456). Picked from the autocomplete dropdown after the integration is connected.
property_id string required GA4 Property — The GA4 property to query (e.g. properties/456789). The dropdown is filtered to properties belonging to the selected account.
metrics string required default: sessions,activeUsers Metrics — Comma-separated list of GA4 metric names. Available metrics include user metrics (activeUsers, newUsers, totalUsers), session metrics (sessions, engagedSessions, averageSessionDuration), engagement (engagementRate, bounceRate), page views (screenPageViews), events (eventCount, conversions), and e-commerce (totalRevenue, ecommercePurchases, transactions, purchaseRevenue).
date_range_type string required default: last_28_days Date Range — Predefined range or custom. Allowed values: today, yesterday, last_7_days, last_28_days, last_30_days, last_90_days, last_12_months, this_month, last_month, this_year, last_year, personalized. Choose personalized to provide explicit start_date and end_date.
Optional fields
dimensions string Dimensions — Comma-separated list of GA4 dimension names. Common values: time (date, month, dayOfWeek, hour), geography (country, city, region), device (deviceCategory, browser, operatingSystem), pages (pagePath, pageTitle, landingPage), traffic source (sessionSource, sessionMedium, sessionCampaignName, sessionDefaultChannelGroup), and events (eventName).
start_date string Start date — Used only when date_range_type is personalized. Format: YYYY-MM-DD. Can also be supplied at runtime via the {{startDate}} template variable.
end_date string End date — Used only when date_range_type is personalized. Format: YYYY-MM-DD. Can also be supplied at runtime via the {{endDate}} template variable.
row_limit number default: 10000 Row limit — Maximum number of rows returned by the GA4 Data API (1 to 100,000). Lower this for high-cardinality dimensions to keep payloads manageable.
use_variables boolean default: false Use Variables — When enabled, both account ID and property ID are exposed as input handles and fed by upstream nodes (typically a Google Analytics Property input). The toggle is atomic — mixing a static account with a variable property would risk picking a property the static account does not own.
use_integration_variable boolean default: false Use Integration Variable — Exposes the integration as an input handle. Enabling this forces use_variables to ON, since without a concrete integration the settings panel cannot load accounts and properties.
For batch runs over many properties, wire a Google Analytics Property input node into the Reader’s account_id, property_id, and integration_id handles. One workflow run, N reports.
What does the node output?
The node outputs a JSON string containing the rows returned by the GA4 Data API. Each row mixes the dimensions you selected with the metrics, flattened into a single object.
Example output:
{
"rows": [
{
"date": "20260115",
"country": "France",
"sessions": 1500,
"activeUsers": 1200,
"engagementRate": 0.62
},
{
"date": "20260115",
"country": "United States",
"sessions": 4200,
"activeUsers": 3100,
"engagementRate": 0.58
}
]
}
analytics_data string A JSON string containing the GA4 report rows. Each row is an object combining the requested dimensions and metrics. Pipe it into a JSON Path Extractor or an LLM for downstream processing.
Usage examples
Example 1: Weekly traffic report into Google Sheets
You want an automated weekly snapshot of sessions and active users by country, written to a shared Google Sheet.
Configuration:
- Account / Property: picked inline.
- Metrics:
sessions,activeUsers,engagementRate - Dimensions:
date,country - Date Range:
last_7_days - Row limit:
10000
Connect the output to a Google Sheets Writer node and append the rows to a Weekly Traffic tab.
Example 2: Multi-property batch report
You manage 30 GA4 properties for different clients and want one report per property, on demand.
Configuration:
- Add a Google Analytics Property input node, in batch mode, fed from a CSV listing all 30 properties.
- On the Reader, enable Use Integration Variable (which auto-enables Use Variables).
- Wire
integration_id,account_id, andproperty_idfrom the input node to the Reader. - Metrics:
sessions,totalRevenue,conversions - Dimensions:
sessionDefaultChannelGroup - Date Range:
last_28_days
Each row of the CSV triggers one Reader call; pipe the output into an LLM to generate a per-client narrative.
Example 3: Year-over-year comparison
Compare this March against last March for one property.
Configuration A (this March):
- Date Range:
personalized - Start date:
2026-03-01, End date:2026-03-31 - Metrics:
sessions,totalUsers,totalRevenue
Configuration B (last March): same node duplicated, with start_date=2025-03-01 and end_date=2025-03-31.
Merge both outputs in an LLM node and ask for a delta commentary.
Common issues
The Account or Property dropdown is empty
Cause: The Google account behind the integration does not have access to any GA4 properties, or the integration was just created and the property cache has not refreshed.
Solution: In Google Analytics, confirm the account has the Viewer role at minimum on the target property. Then reopen the node settings — autocomplete is fetched live from the GA Admin API on focus.
The node returns no rows even though the property has traffic
Cause: The selected date range falls outside the property’s data retention window, or the metric/dimension combination is invalid for GA4 (some pairs are not allowed by the Data API).
Solution: First widen the date range to last_28_days and remove all dimensions to confirm the property responds. Then re-add dimensions one by one — the GA4 Data API rejects some combinations (for example, certain user-scoped metrics with event-scoped dimensions).
Custom date range error: invalid format
Cause: start_date or end_date is not in YYYY-MM-DD format, or end_date is earlier than start_date.
Solution: Use ISO date strings such as 2026-03-01. When feeding dates from upstream nodes, format them upstream rather than relying on locale defaults.
Authorization or permission error from GA4
Cause: The OAuth token behind the integration was revoked, expired, or the user no longer has access to the property.
Solution: Open Settings > Integrations, locate the Google Analytics integration, and reconnect it. If the underlying Google account lost property access, regrant the Viewer role in GA4 Admin.
Mixing static account with variable property is blocked
Cause: The Use Variables toggle is atomic — both account and property switch together. The runner would otherwise let an upstream property override the static account, leading to mismatched account/property pairs.
Solution: Either keep both account and property static, or enable Use Variables and feed both from upstream input handles.
Best practices and pitfalls
Keep row_limit aligned with the cardinality of your dimensions. With pagePath on a high-traffic site, even 28 days easily exceeds 10,000 rows — bump the limit or tighten the date window.
Pair this node with a Google Analytics Property input whenever you want a workflow that runs across multiple properties without duplicating nodes. Externalize once, reuse forever.
Watch dimension/metric compatibility. GA4 rejects some combinations (e.g. session-scoped metrics with user-scoped dimensions). When troubleshooting, strip dimensions back to date and add them back one at a time.
Date format matters. GA returns date dimension values as YYYYMMDD (no separators), while custom range inputs use YYYY-MM-DD. If you parse the output downstream, account for the difference.
How does it fit into a workflow?
Google Analytics Reader is typically a data-source node placed near the start of a workflow, feeding either a transformation step or a writer.
graph LR
Trigger[Schedule trigger] --> GA[Google Analytics Reader]
GA --> Extract[JSON Path Extractor]
Extract --> LLM[LLM commentary]
LLM --> Sheets[Google Sheets Writer]
Related nodes
Runtime selector for the GA4 account, property, and integration to feed this node — essential for multi-property batch runs.
Pull specific fields out of the analytics JSON before passing them to an LLM or a writer.
Turn raw GA4 numbers into a narrative commentary, a summary email, or a slide deck blurb.
Pair organic search performance with GA4 engagement metrics for a complete SEO picture.