The Google Ads API doesn’t return one flat table. It splits your account’s data across separate resources, campaign performance, ad group performance, keyword criteria, conversion action metadata, and more, each queried with Google Ads Query Language (GAQL). That split is also the source of the connector’s most common error, fields from different resources refusing to combine in one request. Windsor.ai exposes the same underlying API as 2,542 flattened fields, reachable without writing GAQL or handling OAuth yourself.
The resource split, in API terms
Standard performance metrics (cost, clicks, impressions, conversions) live on the campaign and ad_group resources and combine freely with each other. Live keyword fields (Windsor’s keyword_text, keyword_match_type) sit on the same resource and join the standard metrics without issue. ad_group_criterion_* fields, by contrast, live entirely inside the ad_group_criterion resource: no metrics, no usable date segment, but campaign and ad group context are fine alongside them. Conversion action metadata (conversion_action_name, conversion_action_category, conversion_action_type) is rooted on the separate conversion_action resource, and Keyword Planner data (avg_monthly_searches, the raw keyword field) comes from an entirely different API service, not just a different resource. For the full breakdown of which fields conflict and how to split a query around each case, see the Google Ads “Fields Cannot Be Queried Together” Error: Troubleshooting Guide.
The canonical pull, API and no-code
The most common full pull, campaign, clicks, conversions, date, impressions, and spend, is a single GAQL query against the campaign resource:
SELECT campaign.id, campaign.name, metrics.clicks, metrics.conversions,
metrics.impressions, metrics.cost_micros, segments.date
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
The same pull through Windsor.ai, once Google Ads is connected, is a plain-language prompt to ChatGPT, Claude, or Copilot:
Pull campaign, clicks, conversions, date, impressions, and spend for my
Google Ads account over the last 30 days, grouped by campaign.
Most-requested fields, mapped to their resources
Beyond the canonical pull, the fields teams request most sit across a small number of resources. campaign_status, campaign_id, and campaign_primary_status_reasons come from campaign. The three impression-share fields, search_impression_share, search_budget_lost_impression_share, and search_rank_lost_impression_share, are campaign-level metrics segmented by the Search Network. conversions, all_conversions, and cost_per_conversion are standard metrics available at both the campaign and ad group level. keyword_text, keyword_match_type, and quality_score come from the ad group criterion’s keyword view, the live-keyword resource, not ad_group_criterion itself.
Authentication, without managing it yourself
A direct integration against the Google Ads API needs a developer token, OAuth client credentials, a refresh token, and a login customer ID, renewed and rotated on your own infrastructure. Connecting through Windsor.ai replaces that setup with a native one-click connection: authorize once, and the same 2,542 fields are available to an AI assistant or scheduled into Looker Studio, Power BI, or BigQuery.

