Ask Google Ads Questions in ChatGPT
Ask Google Ads questions in ChatGPT using OWOX Data Marts. Collect Google Ads data into a governed data mart, then get answers in ChatGPT via OWOX's MCP server — every number traces back to analyst-written SQL.
Google Ads endpoints
9 Google Ads endpoints you can import. Each lands in its own table in your warehouse.
Google Ads Ad Group Ads Stats
Daily performance for individual ads — impressions, clicks, cost, and conversions.
26 fieldsTime seriesgoogle_ads_ad_group_ads_statsGoogle Ads Ad Groups
Your ad group settings — type, status, and bid configuration within each campaign.
9 fieldsgoogle_ads_ad_groupsGoogle Ads Ad Groups Stats
Daily ad group performance — impressions, clicks, cost, and conversions.
24 fieldsTime seriesgoogle_ads_ad_groups_statsGoogle Ads Campaigns
Your campaign settings — channel type, bidding strategy, budget, and scheduling.
11 fieldsgoogle_ads_campaignsGoogle Ads Campaigns Stats
Daily campaign performance — impressions, clicks, cost, and conversions.
28 fieldsTime seriesgoogle_ads_campaigns_statsGoogle Ads Criterion
Ad group targeting criteria — keywords, placements, and negative exclusions with bid settings.
17 fieldsgoogle_ads_criterionGoogle Ads Geo Stats
Daily performance by country and targeting type — impressions, clicks, cost, and conversions.
18 fieldsTime seriesgoogle_ads_geo_statsGoogle Ads Geo Target Constants
Reference table of geographic targets — join with geo_stats on country_criterion_id to resolve country names.
7 fieldsgoogle_ads_geo_target_constantsGoogle Ads Keywords Stats
Daily keyword performance — impressions, clicks, cost, conversions, and quality score.
26 fieldsTime seriesgoogle_ads_keywords_stats
Google Ads data schema
Google Ads Ad Group Ads Stats 26 fields · google_ads_ad_group_ads_stats
| Field | Type | Description |
|---|---|---|
ad_id | STRING | Ad ID |
ad_status | STRING | Ad Status (ENABLED, PAUSED, REMOVED) |
ad_final_urls | ARRAY | Final URLs for the Ad |
ad_group_id | STRING | Ad Group ID |
campaign_id | STRING | Campaign ID |
date | STRING | Date for time series data |
impressions | NUMBER | Number of Impressions |
clicks | NUMBER | Number of Clicks |
cost_micros | NUMBER | Cost in Micros |
conversions | NUMBER | Number of Conversions |
ctr | NUMBER | Click-Through Rate |
average_cpc | NUMBER | Average Cost Per Click |
conversions_value | NUMBER | Total Conversion Value |
cost_per_conversion | NUMBER | Cost Per Conversion |
ad_type | STRING | Ad Type (TEXT_AD, EXPANDED_TEXT_AD, RESPONSIVE_SEARCH_AD, etc.) |
ad_name | STRING | Ad Name |
ad_group_name | STRING | Ad Group Name |
campaign_name | STRING | Campaign Name |
conversion_rate | NUMBER | Conversion Rate |
view_through_conversions | NUMBER | View-Through Conversions |
all_conversions | NUMBER | All Conversions |
all_conversions_value | NUMBER | All Conversions Value |
average_cost | NUMBER | Average Cost |
average_cpm | NUMBER | Average CPM |
interactions | NUMBER | Number of Interactions |
interaction_rate | NUMBER | Interaction Rate |
Google Ads Ad Groups 9 fields · google_ads_ad_groups
| Field | Type | Description |
|---|---|---|
ad_group_id | STRING | Ad Group ID |
ad_group_name | STRING | Ad Group Name |
ad_group_status | STRING | Ad Group Status (ENABLED, PAUSED, REMOVED) |
ad_group_type | STRING | Ad Group Type (SEARCH_STANDARD, DISPLAY_STANDARD, etc.) |
campaign_id | STRING | Campaign ID |
campaign_name | STRING | Campaign Name |
ad_group_cpc_bid_micros | NUMBER | Ad Group CPC Bid in Micros |
ad_group_cpm_bid_micros | NUMBER | Ad Group CPM Bid in Micros |
ad_group_target_cpa_micros | NUMBER | Ad Group Target CPA in Micros |
Google Ads Ad Groups Stats 24 fields · google_ads_ad_groups_stats
| Field | Type | Description |
|---|---|---|
ad_group_id | STRING | Ad Group ID |
ad_group_name | STRING | Ad Group Name |
ad_group_status | STRING | Ad Group Status (ENABLED, PAUSED, REMOVED) |
campaign_id | STRING | Campaign ID |
date | STRING | Date for time series data |
impressions | NUMBER | Number of Impressions |
clicks | NUMBER | Number of Clicks |
cost_micros | NUMBER | Cost in Micros |
conversions | NUMBER | Number of Conversions |
ctr | NUMBER | Click-Through Rate |
average_cpc | NUMBER | Average Cost Per Click |
conversions_value | NUMBER | Total Conversion Value |
cost_per_conversion | NUMBER | Cost Per Conversion |
conversion_rate | NUMBER | Conversion Rate |
view_through_conversions | NUMBER | View-Through Conversions |
all_conversions | NUMBER | All Conversions |
all_conversions_value | NUMBER | All Conversions Value |
cost_per_all_conversions | NUMBER | Cost Per All Conversions |
average_cost | NUMBER | Average Cost |
average_cpm | NUMBER | Average CPM |
interactions | NUMBER | Number of Interactions |
interaction_rate | NUMBER | Interaction Rate |
engagement_rate | NUMBER | Engagement Rate |
engagements | NUMBER | Number of Engagements |
Google Ads Campaigns 11 fields · google_ads_campaigns
| Field | Type | Description |
|---|---|---|
campaign_id | STRING | Campaign ID |
campaign_name | STRING | Campaign Name |
campaign_status | STRING | Campaign Status (ENABLED, PAUSED, REMOVED) |
campaign_advertising_channel_type | STRING | Advertising Channel Type (SEARCH, DISPLAY, VIDEO, etc.) |
campaign_start_date | STRING | Campaign Start Date |
campaign_end_date | STRING | Campaign End Date |
campaign_bidding_strategy_type | STRING | Bidding Strategy Type (MANUAL_CPC, TARGET_CPA, TARGET_ROAS, etc.) |
campaign_budget_amount_micros | NUMBER | Campaign Budget Amount in Micros |
campaign_target_cpa_micros | NUMBER | Target CPA in Micros (if using Target CPA bidding) |
campaign_target_roas | NUMBER | Target ROAS (if using Target ROAS bidding) |
campaign_advertising_channel_sub_type | STRING | Advertising Channel Sub Type |
Google Ads Campaigns Stats 28 fields · google_ads_campaigns_stats
| Field | Type | Description |
|---|---|---|
campaign_id | STRING | Campaign ID |
campaign_name | STRING | Campaign Name |
campaign_status | STRING | Campaign Status (ENABLED, PAUSED, REMOVED) |
date | STRING | Date for time series data |
impressions | NUMBER | Number of Impressions |
clicks | NUMBER | Number of Clicks |
cost_micros | NUMBER | Cost in Micros |
conversions | NUMBER | Number of Conversions |
ctr | NUMBER | Click-Through Rate |
average_cpc | NUMBER | Average Cost Per Click |
conversions_value | NUMBER | Total Conversion Value |
cost_per_conversion | NUMBER | Cost Per Conversion |
conversion_rate | NUMBER | Conversion Rate |
view_through_conversions | NUMBER | View-Through Conversions |
all_conversions | NUMBER | All Conversions |
all_conversions_value | NUMBER | All Conversions Value |
cost_per_all_conversions | NUMBER | Cost Per All Conversions |
average_cost | NUMBER | Average Cost |
average_cpm | NUMBER | Average CPM |
engagement_rate | NUMBER | Engagement Rate |
engagements | NUMBER | Number of Engagements |
interactions | NUMBER | Number of Interactions |
interaction_rate | NUMBER | Interaction Rate |
search_impression_share | NUMBER | Search Impression Share |
search_budget_lost_impression_share | NUMBER | Search Budget Lost Impression Share |
search_rank_lost_impression_share | NUMBER | Search Rank Lost Impression Share |
video_views | NUMBER | Video Views (for Video campaigns) |
video_view_rate | NUMBER | Video View Rate |
Google Ads Criterion 17 fields · google_ads_criterion
| Field | Type | Description |
|---|---|---|
criterion_id | STRING | Criterion ID |
criterion_type | STRING | Criterion Type (KEYWORD, PLACEMENT, etc.) |
criterion_status | STRING | Criterion Status (ENABLED, PAUSED, REMOVED) |
keyword_text | STRING | Keyword Text |
keyword_match_type | STRING | Keyword Match Type (EXACT, PHRASE, BROAD) |
ad_group_id | STRING | Ad Group ID |
campaign_id | STRING | Campaign ID |
quality_score | NUMBER | Quality Score |
final_urls | ARRAY | Final URLs |
negative | BOOLEAN | Whether to target (false) or exclude (true) the criterion |
cpc_bid_micros | NUMBER | CPC Bid in Micros |
effective_cpc_bid_micros | NUMBER | Effective CPC Bid in Micros (includes bid modifiers) |
position_estimates_first_page_cpc_micros | NUMBER | Estimated CPC Bid needed to appear on first page |
position_estimates_top_of_page_cpc_micros | NUMBER | Estimated CPC Bid needed to appear at top of page |
position_estimates_first_position_cpc_micros | NUMBER | Estimated CPC Bid needed to appear in first position |
ad_group_name | STRING | Ad Group Name |
campaign_name | STRING | Campaign Name |
Google Ads Geo Stats 18 fields · google_ads_geo_stats
| Field | Type | Description |
|---|---|---|
country_criterion_id | STRING | Criterion ID for the country (maps to geo_target_constant_id in geo_target_constants table) |
location_type | STRING | Geo targeting type: AREA_OF_INTEREST (user searched for this location) or LOCATION_OF_PRESENCE (user was physically in this location) |
date | STRING | Date for time series data |
campaign_id | STRING | Campaign ID |
campaign_name | STRING | Campaign Name |
campaign_status | STRING | Campaign Status (ENABLED, PAUSED, REMOVED) |
impressions | NUMBER | Number of Impressions |
clicks | NUMBER | Number of Clicks |
cost_micros | NUMBER | Cost in Micros |
conversions | NUMBER | Number of Conversions |
conversions_value | NUMBER | Total Conversion Value |
ctr | NUMBER | Click-Through Rate |
average_cpc | NUMBER | Average Cost Per Click |
all_conversions | NUMBER | All Conversions (includes cross-device and view-through) |
all_conversions_value | NUMBER | All Conversions Value |
view_through_conversions | NUMBER | View-Through Conversions |
cost_per_conversion | NUMBER | Cost Per Conversion |
conversion_rate | NUMBER | Conversion Rate |
Google Ads Geo Target Constants 7 fields · google_ads_geo_target_constants
| Field | Type | Description |
|---|---|---|
geo_target_constant_id | STRING | Criterion ID - join key with country_criterion_id in geo_stats |
name | STRING | English name of the geo target (e.g. United States, California, New York) |
country_code | STRING | ISO-3166-1 alpha-2 country code (e.g. US, GB, DE) |
target_type | STRING | Type of geo target (e.g. Country, Region, City, MetroArea, PostalCode) |
status | STRING | Status of the geo target constant (ENABLED or REMOVAL_PLANNED) |
canonical_name | STRING | Fully qualified name including parent targets (e.g. New York,New York,United States) |
parent_geo_target | STRING | Resource name of the parent geo target constant |
Google Ads Keywords Stats 26 fields · google_ads_keywords_stats
| Field | Type | Description |
|---|---|---|
keyword_id | STRING | Keyword Criterion ID |
keyword_text | STRING | Keyword Text |
keyword_match_type | STRING | Keyword Match Type (EXACT, PHRASE, BROAD) |
keyword_status | STRING | Criterion Status (ENABLED, PAUSED, REMOVED) |
ad_group_id | STRING | Ad Group ID |
campaign_id | STRING | Campaign ID |
date | STRING | Date for time series data |
impressions | NUMBER | Number of Impressions |
clicks | NUMBER | Number of Clicks |
cost_micros | NUMBER | Cost in Micros |
conversions | NUMBER | Number of Conversions |
ctr | NUMBER | Click-Through Rate |
average_cpc | NUMBER | Average Cost Per Click |
conversions_value | NUMBER | Total Conversion Value |
cost_per_conversion | NUMBER | Cost Per Conversion |
quality_score | NUMBER | Quality Score |
conversion_rate | NUMBER | Conversion Rate |
view_through_conversions | NUMBER | View-Through Conversions |
all_conversions | NUMBER | All Conversions (including cross-device, store visits, etc.) |
all_conversions_value | NUMBER | All Conversions Value |
average_cost | NUMBER | Average Cost Per Interaction |
average_cpm | NUMBER | Average CPM (Cost Per Thousand Impressions) |
search_impression_share | NUMBER | Search Impression Share |
search_rank_lost_impression_share | NUMBER | Search Rank Lost Impression Share |
top_impression_percentage | NUMBER | Top Impression Percentage |
absolute_top_impression_percentage | NUMBER | Absolute Top Impression Percentage |
Ask Google Ads questions in ChatGPT
- You
What did each Google Ads campaign cost per conversion yesterday?
- ChatGPT
I read yesterday's date from google_ads_campaigns_stats and returned campaign_name, conversions and cost_per_conversion for each campaign. Cost comes from cost_micros, which Google Ads stores in millionths of the account currency, so it is divided by a million before it is shown.
This comes from your governed Google Ads Data Mart through the OWOX MCP server, so it is as fresh as that Data Mart's last scheduled refresh.
- You
Which campaigns got clicks but no conversions?
- ChatGPT
Filtering the same rows to clicks above zero and conversions of zero gives that list, with impressions and ctr beside each. That helps you tell weak search intent apart from a landing page that does not convert.
Data Partner You Can Trust
users
175K
Executives and data analysts across 20+ industries
G2 rating
4.9★
“A trusted data analytics partner” — verified review
Customers
Every claim has a receipt.
Real things real customers said — each quote pinned to a specific claim, straight from the quotes database.
“AI, by the nature of the models, will hallucinate. And because of that, you need something which will create guardrails to ensure that there are no hallucinations, that you can trust your data.”
“We had six or seven different channels and no single source of truth — it was almost impossible, a lot of guesswork.”
“We regained time. And time is the one resource that never comes back.”
Turn Google Ads Data into Answers in ChatGPT
See how OWOX Data Marts helps you ask Google Ads questions in ChatGPT, blend it with other sources, and scale reporting without rebuilding logic.
Get Started Free

