# Google Ads Budget

> 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. Produces budget reallocation drafts.

- Skill: `themattberman/google-ads-budget` (Agent Skill)
- Install (CLI): `npx skillmds@latest add themattberman/google-ads-budget`
- Raw SKILL.md: https://api.skillmd.com/api/skills/themattberman/google-ads-budget/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: TheMattBerman (https://skillmd.com/u/themattberman)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/themattberman/google-ads-budget

---


# Google Ads Budget

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)

---

## Data Acquisition

### Connected Mode (MCP available)

Pull via the `search` tool on `google-ads-mcp`:

**Primary: Campaign budgets and spend:**
```sql
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:**
```sql
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:**
```sql
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.

### Date Range Fallback

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.

### Export Mode (no MCP)

Ask the user for:
- Campaign budget report: Budget, Spend, Conversions, Search IS%, Budget Lost IS%
- Last 30 days preferred

---

## Process
1. **Announce mode** (connected/export).
2. **Check tracking confidence first** — from workspace findings or quick tracking check.
   - If tracking confidence is Low/Broken, flag that budget decisions are provisional.
   - Check `workspace/ads/drafts/_index.md` for pending tracking fix drafts.
3. Identify which buckets are buying clean signal vs. noisy traffic.
4. Assess impression share — where is budget the constraint vs. where is it quality?
5. Distinguish between budget constraints and structural/intent problems.
6. Recommend:
   - **Scale** — clean signal, budget-limited, good CPA
   - **Protect** — working well, don't starve it
   - **Reduce** — noisy traffic, poor signal, overfunded
   - **Hold** — needs more data or structural fix before budget decision
   - **Fix-before-scaling** — blocked by tracking, structure, or intent problems

## Draft Output

### Budget Reallocation Draft
**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`

### Blocking conditions
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."

### Always update workspace memory:
- `workspace/ads/findings.md` — budget observations
- `workspace/ads/learnings.md` — what we learned about spend efficiency

## Rules
- Do not scale ambiguous traffic just because volume is available.
- Do not mistake structure problems for budget problems.
- If tracking confidence is low, say that budget decisions are provisional.
- **Budget scaling is the highest-risk action in the system. Gate it behind tracking trust.**

