Review Google Ads budget allocation and scaling decisions based on signal quality, intent clarity, tracking confidence, and structural health. Pulls live data via MCP or works with manual exports.
Library skill — the default version is maintained in GitHub; edits you make live in your own clone.
Read first:
- google-ads/references/operator-thesis.md
- google-ads/references/intent-map.md
- google-ads/references/tracking-playbook.md
- google-ads/references/structure-playbook.md
- google-ads/references/budget-playbook.md
- google-ads/references/deliverable-templates.md
Read workspace if available:
- workspace/ads/account.md
- workspace/ads/goals.md
- workspace/ads/intent-map.md
- workspace/ads/winners.md
- workspace/ads/findings.md
- workspace/ads/change-log.md
- workspace/ads/learnings.md
- workspace/ads/drafts/_index.md — check if tracking fixes are pending (gates scaling)
Pull via the search tool on google-ads-mcp:
Primary: Campaign budgets and spend:
SELECT
campaign.name,
campaign.status,
campaign_budget.amount_micros,
campaign_budget.delivery_method,
campaign.bidding_strategy_type,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion,
metrics.impressions,
metrics.search_impression_share
FROM campaign
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
Primary: Impression share and budget-limited detection:
SELECT
campaign.name,
metrics.search_impression_share,
metrics.search_budget_lost_impression_share,
metrics.search_rank_lost_impression_share,
metrics.cost_micros,
metrics.conversions
FROM campaign
WHERE campaign.status = 'ENABLED'
AND campaign.advertising_channel_type = 'SEARCH'
AND segments.date DURING LAST_7_DAYS
Supplementary: Tracking confidence check:
SELECT
conversion_action.name,
conversion_action.type,
conversion_action.counting_type,
conversion_action.include_in_conversions_metric,
metrics.conversions
FROM conversion_action
WHERE conversion_action.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.conversions DESC
See data/gaql-recipes.md for additional queries.
If LAST_30_DAYS returns 0 rows, fall back to LAST_90_DAYS. For budget analysis, older data is less useful — if 90 days is also empty, note "Account dormant: no activity to base budget decisions on" and recommend a plan or audit instead. Always state the date range used.
Ask the user for: - Campaign budget report: Budget, Spend, Conversions, Search IS%, Budget Lost IS% - Last 30 days preferred
workspace/ads/drafts/_index.md for pending tracking fix drafts.Trigger: Analysis identifies campaigns where budget is clearly misallocated (strong campaign starved while weak campaign overfunded), AND tracking confidence is at least Medium.
Create using drafts/templates/budget-draft.md:
- Write to workspace/ads/drafts/YYYY-MM-DD-[account-slug]-budget-realloc.md
- Include: current daily budget, proposed daily budget, change amount, reason, expected impact
- Show net budget change (budget-neutral reallocation vs. total spend change)
- Note tracking confidence gate
- Update workspace/ads/drafts/_index.md
Do not produce a budget draft if: - Tracking confidence is Low or Broken (recommend tracking fix instead) - A pending tracking fix draft exists that hasn't been applied
Instead, note: "Budget decisions are blocked until tracking fix draft [X] is resolved."
workspace/ads/findings.md — budget observationsworkspace/ads/learnings.md — what we learned about spend efficiency