Skip to main content
Glama
GAQL_REFERENCE.md•6.15 kB
# GAQL Reference Card ## Basic Syntax ``` SELECT [fields] FROM [resource] WHERE [conditions] ORDER BY [field] ``` ## Common Resources ### Campaign Resources - `campaign` - Campaign settings - `campaign_budget` - Budget info - `campaign_criterion` - Campaign targeting (keywords, locations, etc) ### Ad Group Resources - `ad_group` - Ad group settings - `ad_group_ad` - Ads in ad groups - `ad_group_criterion` - Keywords, placements, audiences in ad groups ### Query Resources - `customer` - Account info - `asset` - Ad assets (sitelinks, callouts, etc) - `audience` - Audience lists - `label` - Custom labels - `accessible_bidding_strategy` - Bidding strategies ### Performance Data All resources support `metrics.*` fields when recent data exists: - `metrics.impressions` - `metrics.clicks` - `metrics.conversions` - `metrics.cost_micros` - `metrics.ctr` - `metrics.conversion_rate` - `metrics.quality_score` (keywords only) ### Segments Available for breakdowns: - `segments.date` - `segments.device` - `segments.geo_target_country` - `segments.geo_target_city` - `segments.age_range` - `segments.gender` - `segments.day_of_week` - `segments.hour_of_day` ## Common Queries ### Active Campaigns ```sql SELECT campaign.id, campaign.name FROM campaign WHERE campaign.status = 'ENABLED' ``` ### Campaign Performance (Last 30 Days) ```sql SELECT campaign.id, campaign.name, metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros, metrics.ctr FROM campaign WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.cost_micros DESC ``` ### Keywords by Quality Score ```sql SELECT ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type, metrics.quality_score, metrics.impressions, metrics.clicks FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' ORDER BY metrics.quality_score ASC ``` ### Ad Group Performance by Device ```sql SELECT ad_group.id, ad_group.name, segments.device, metrics.impressions, metrics.clicks, metrics.conversions FROM ad_group WHERE segments.date DURING LAST_7_DAYS ``` ### Shopping Campaign ROI ```sql SELECT campaign.id, campaign.name, metrics.conversions, metrics.cost_micros, metrics.impressions, metrics.clicks FROM campaign WHERE campaign.advertising_channel_type = 'SHOPPING' AND segments.date DURING LAST_30_DAYS ``` ### Display Placements Performance ```sql SELECT ad_group_criterion.placement.url, metrics.impressions, metrics.clicks, metrics.conversions FROM ad_group_criterion WHERE ad_group_criterion.type = 'PLACEMENT' AND segments.date DURING LAST_7_DAYS ``` ### YouTube Video Targeting ```sql SELECT ad_group_criterion.youtube_video.video_id, metrics.impressions, metrics.views, metrics.cost_micros FROM ad_group_criterion WHERE ad_group_criterion.type = 'YOUTUBE_VIDEO' ``` ### High-Cost Low-Converting Keywords ```sql SELECT ad_group_criterion.keyword.text, metrics.cost_micros, metrics.conversions, metrics.impressions FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND metrics.cost_micros > 1000000 AND metrics.conversions = 0 ``` ### Paused Items to Review ```sql SELECT campaign.id, campaign.name, ad_group.id, ad_group.name FROM ad_group WHERE ad_group.status = 'PAUSED' AND campaign.status = 'ENABLED' ``` ### Performance by Geography ```sql SELECT segments.geo_target_country, metrics.impressions, metrics.clicks, metrics.conversions FROM campaign WHERE segments.date DURING LAST_30_DAYS GROUP BY segments.geo_target_country ``` ## Operators & Filters ### Comparison Operators - `=` Equal - `!=` Not equal - `>` Greater than - `<` Less than - `>=` Greater than or equal - `<=` Less than or equal ### String Operators - `LIKE '%pattern%'` - Contains pattern - `STARTS_WITH 'prefix'` - Starts with prefix - `IN ('value1', 'value2')` - In list ### Date Operators - `DURING LAST_7_DAYS` - `DURING LAST_30_DAYS` - `DURING LAST_90_DAYS` - `DURING THIS_MONTH` - `DURING LAST_MONTH` - `DURING LAST_QUARTER` - `DURING LAST_YEAR` ### Logical Operators - `AND` Both conditions true - `OR` Either condition true - Use parentheses for complex logic: `WHERE (condition1 OR condition2) AND condition3` ## Status Values ### Campaign Status - `ENABLED` - Active - `PAUSED` - Paused - `REMOVED` - Removed/deleted ### Ad Group Status - `ENABLED` - Active - `PAUSED` - Paused ### Criterion Status (Keywords, Placements, etc) - `ENABLED` - Active - `PAUSED` - Paused - `REMOVED` - Deleted ## Cost Conversion Google Ads returns costs in **micros** (millionths of currency): ``` Actual cost = cost_micros / 1,000,000 ``` Example: ``` cost_micros = 2500000 Actual cost = 2500000 / 1,000,000 = $2.50 ``` ## Common Metrics Calculations ### Click-Through Rate (CTR) ``` ctr = metrics.clicks / metrics.impressions ``` ### Cost Per Click (CPC) ``` cpc = metrics.cost_micros / metrics.clicks / 1,000,000 ``` ### Conversion Rate ``` conversion_rate = metrics.conversions / metrics.clicks ``` ### Cost Per Conversion (CPA) ``` cpa = metrics.cost_micros / metrics.conversions / 1,000,000 ``` ### Return on Ad Spend (ROAS) - for Shopping ``` roas = revenue / (metrics.cost_micros / 1,000,000) ``` ## Examples with Multiple Conditions ### Complex Campaign Filter ```sql SELECT campaign.id, campaign.name, metrics.conversions FROM campaign WHERE campaign.status = 'ENABLED' AND campaign.advertising_channel_type = 'SEARCH' AND metrics.conversions > 0 AND segments.date DURING LAST_30_DAYS ORDER BY metrics.conversions DESC LIMIT 50 ``` ### Budget Analysis ```sql SELECT campaign.id, campaign.name, campaign_budget.amount_micros FROM campaign WHERE campaign_budget.amount_micros > 5000000 AND campaign.status = 'ENABLED' ORDER BY campaign_budget.amount_micros DESC ``` ### Multi-Criteria Performance Report ```sql SELECT campaign.name, ad_group.name, metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros FROM ad_group WHERE campaign.status = 'ENABLED' AND ad_group.status = 'ENABLED' AND segments.date DURING LAST_7_DAYS AND metrics.impressions > 100 ORDER BY metrics.cost_micros DESC LIMIT 100 ```

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/blievens89/MCPGoogleAds'

If you have feedback or need assistance with the MCP directory API, please join our Discord server