budget-optimizer
Analyze impression share by day and recommend budget adjustments. Pulls impression share data via GAQL, identifies the dominant constraint (budget vs rank), spots patterns, calculates a recommended increase, and applies it on confirmation. Use when: "/budget-optimizer", "budget optimization", "impression share", "lost to budget", "increase budget", "budget analysis", "am I losing impressions".
Budget Optimizer
You are running a budget optimization analysis. Based on Austin Lau's Dispatch (mobile) workflow where he pulls impression share by day and applies budget changes from his phone.
Before you start, read the ads-playbook skill to load business context and CPA targets.
Step 1: Identify the Campaign
Ask the user which campaign to analyze. If they already specified one, use that.
Step 2: Pull Impression Share Data by Day
Run this GAQL query through the Google Ads MCP server:
SELECT
segments.date,
campaign.name,
campaign.campaign_budget,
metrics.search_impression_share,
metrics.search_budget_lost_impression_share,
metrics.search_rank_lost_impression_share,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
AND campaign.name = '{campaign_name}'
AND campaign.status = 'ENABLED'
ORDER BY segments.date ASC
Also pull the current budget:
SELECT
campaign.name,
campaign_budget.amount_micros
FROM campaign_budget
WHERE campaign.name = '{campaign_name}'
Cost conversion: Divide cost_micros, cost_per_conversion, and amount_micros by 1,000,000 for dollars.
Step 3: Present the Data
Show a table:
| Date | Imp. Share | Lost to Budget | Lost to Rank | Spend | Conversions | CPA |
|---|---|---|---|---|---|---|
| 2025-01-20 | 45.2% | 32.1% | 22.7% | $142.50 | 3 | $47.50 |
| ... | ... | ... | ... | ... | ... | ... |
Current daily budget: $XXX.XX
Step 4: Analyze and Identify the Dominant Constraint
Calculate averages across the period:
- Avg. impression share: X%
- Avg. lost to budget: X%
- Avg. lost to rank: X%
Identify the dominant constraint:
- If lost-to-budget > lost-to-rank: Budget is the bottleneck. More money = more impressions. This is the easier fix.
- If lost-to-rank > lost-to-budget: Ad rank is the bottleneck. Need better Quality Scores, bids, or ad relevance. Throwing more budget at it won't help much.
- If both are significant (>15% each): Mixed constraint. Budget increase helps, but rank improvements needed too.
Step 5: Spot Patterns
Look for:
- Weekday vs weekend differences. "Weekends look better since search volume drops while the $X daily budget stays flat."
- Trending direction. Is impression share improving or declining over the period?
- Spend consistency. Is the daily budget being hit every day, or only some days?
- CPA stability. Is CPA consistent or volatile?
Report 1-3 observations. Be specific with numbers.
Step 6: Calculate Recommendation
If budget is the dominant constraint:
- Calculate the theoretical full-coverage spend:
current_spend / impression_share - That's usually too aggressive. Recommend a 15-25% increase as a first step.
- Pick the percentage based on how much is lost to budget:
- Lost to budget < 20%: recommend 15% increase
- Lost to budget 20-35%: recommend 20% increase
- Lost to budget > 35%: recommend 25% increase
Present it like this:
A 20% increase would take the budget from $150/day to $180/day.
Based on current impression share (45%), this should recover approximately X% of the impressions you're losing to budget, adding an estimated X more clicks/day at your current CTR.
Want me to apply that?
If rank is the dominant constraint, say so and recommend focusing on Quality Score, bid strategy, and ad relevance instead of increasing budget. Still offer the budget increase as a secondary option if the user wants it.
Step 7: Apply the Change
Only if the user says yes.
Use the MCP write tools to update the campaign budget. If using read-only MCP, tell the user to apply manually and give them the exact new budget amount.
After applying, confirm:
"Done. [Campaign Name] daily budget updated from $150 to $180."
Edge Cases
- No MCP connected: Show the analysis and recommendation. The user applies the change manually in Google Ads.
- Campaign isn't budget-constrained: "Your impression share is already strong (X%) and you're losing more to rank than budget. Increasing budget won't help much. Focus on ad quality and bid optimization instead."
- Multiple campaigns requested: Run the analysis for each one separately. Present side by side if useful.
- Meta Ads: Meta doesn't have impression share the same way. For Meta, analyze delivery metrics (reach, frequency, cost per result) and budget utilization percentage. The recommendation logic is similar but the data differs.
- Apple Search Ads: Apple provides "share of voice" which is similar to impression share. Use the Campaign Report API to pull this data.