Google Ads recipes

Common Google Ads reporting questions, each with the exact GAQL fields to use - and the plain-English version you can ask Caybl.ai directly. Looking for Google Analytics instead? See the GA4 recipes.

Which Google Ads campaigns are losing impression share to budget?

Pull campaign.name with metrics.search_impression_share, metrics.search_budget_lost_impression_share, and metrics.search_rank_lost_impression_share from the campaign resource. A high budget-lost share means raising the budget would win more impressions; a high rank-lost share means the budget isn't the problem.

How do I find Google Ads search terms wasting spend?

Pull search_term_view.search_term with metrics.cost_micros and metrics.conversions from search_term_view, then filter for terms with real spend and zero conversions. Those are candidates for a negative keyword.

Which Google Ads ad groups have the worst cost per conversion?

There's no single built-in tool for ad-group-level cost per conversion, so this one runs as a custom GAQL query: select ad_group.name, campaign.name, metrics.cost_micros, and metrics.conversions from the ad_group resource, then divide cost by conversions per row. Caybl.ai's run_gaql_report tool handles arbitrary read-only GAQL like this directly.

What's my average CPC by campaign in Google Ads?

Pull campaign.name with metrics.average_cpc and metrics.clicks from the campaign resource over your chosen date range. Sorting by average_cpc descending surfaces the campaigns paying the most per click, which is worth cross-checking against their conversion rate.

Which Google Ads campaigns have the best and worst CTR?

Pull campaign.name with metrics.ctr, metrics.impressions, and metrics.clicks from the campaign resource. Impressions matter alongside CTR - a campaign with a great CTR on a handful of impressions is a different situation from one with the same CTR at scale.

How is my Google Ads spend trending day by day?

Segmenting by segments.date turns a date-range total into a day-by-day series: select campaign.name, metrics.cost_micros, and segments.date from campaign, grouped by date. This is a custom GAQL query rather than a fixed tool, so it runs through run_gaql_report.

Which Google Ads campaigns are active vs. paused, and what's their budget?

Pull campaign.name, campaign.status, and campaign_budget.amount_micros from campaign (and its linked campaign_budget). Grouping by status gives a quick view of how much daily budget is sitting on paused campaigns versus live ones.