calendar Last updated: 8 September 2026
GA4 logo on a Windsor.ai branded cover graphic
Data integration
Data Pipelines
Google Analytics
How to's

GA4 Data API Guide: Field Names, Limits, and the No-Code Path

Try It Now

Connect your data in 1 min. Start free, no credit card

Got insights from this post? Give it a boost by sharing with others!

Google splits GA4’s API into two separate products: the Data API, for pulling report data, and the Admin API, for configuration and account management. Windsor’s connector uses the Data API, and most of the naming confusion that causes failed pulls traces back to one thing: the Data API’s own field names are camelCase (eventCount, totalUsers, sessionSourceMedium), while Windsor’s flattened field ids are lowercase (event_count, totalusers, session_source_medium). Guessing the wrong casing, or mixing the two, is behind more failed GA4 pulls than any other single cause. The full field-name lookup is in the GA4 “Unexpected field(s)” error guide.

The canonical pull, API and no-code

The most common full pull, date, event_count, and event_name together, is a single Data API request:

POST https://analyticsdata.googleapis.com/v1beta/properties/{propertyId}:runReport
{
  "dateRanges": [{"startDate": "30daysAgo", "endDate": "today"}],
  "dimensions": [{"name": "date"}, {"name": "eventName"}],
  "metrics": [{"name": "eventCount"}]
}

The same pull through Windsor.ai, once GA4 is connected, is a plain-language prompt to ChatGPT, Claude, or Copilot:

Pull date, event_count, and event_name for my GA4 property over the
last 30 days. Which events are trending up or down?

Most-requested fields, mapped to the API

The fields teams pull most through Windsor map directly to Data API dimensions and metrics: sessions is the sessions metric, session_default_channel_group is the sessionDefaultChannelGroup dimension, engaged_sessions and engagement_rate are engagedSessions and engagementRate. The pattern holds throughout: take Windsor’s snake_case id, convert to camelCase, and it’s the raw API field.

Limits that cause the most errors

The Data API allows at most 10 metrics per request (9 dimensions), an 11th fails the whole call rather than truncating it; see the GA4 request limits guide for the full list of caps and date-preset rules. A separate error family covers fields that can’t be requested together in one call at all, concentrated around transactions, event counts, and ecommerce fields, each needing its own request; the “fields cannot be queried together” guide walks through the fix for each case. Both limits apply identically whether you’re calling the raw API or pulling through Windsor.

Handling API quotas

The Data API enforces its own request quotas independent of Windsor’s own rate limits. For the specific quota tiers and how to work within them when the destination is Looker Studio, see Optimizing GA4 API Quotas in Looker Studio.

GA4 API without code

Everything above uses the real Data API dimensions and metrics without writing any code or handling OAuth. Connect your GA4 property to Windsor.ai once, and ChatGPT, Claude, or Copilot can query it directly through plain-language prompts.

Related reading

Tired of juggling fragmented data? Get started with Windsor.ai today to create a single source of truth

Let us help you automate data integration and AI-driven insights, so you can focus on what matters, growth strategy.
g logo
fb logo
big query data
youtube logo
power logo
looker logo