---
name: google-ads-wasted-spend
description: Finds Google Ads spend that isn't paying back - search terms, devices, locations, hours and campaigns that cost money against the account's CPA or ROAS goal - using live data from the Caybl.ai connector, and ranks it by estimated reducible spend. Use when asked to "find wasted spend", "why is CPA up", "where are we leaking budget", "what should we cut before scaling", or for a monthly Google Ads cleanup. For search-term negatives specifically, see google-ads-negative-keywords.
license: MIT
compatibility: Requires the Caybl.ai MCP connector (https://api.caybl.ai/mcp) with Google Ads connected.
metadata:
  author: Caybl.ai
  version: "1.0"
  adapted-from: mardab96/google-ads-skills (wasted-spend-finder-google-ads), MIT
---

# Google Ads wasted spend

## Requires

The Caybl.ai MCP connector with a Google Ads account connected.

- claude.ai / Claude Desktop: add Caybl.ai from the connector directory: https://claude.ai/directory/caybl-ai
- Claude Code: `claude mcp add --transport http caybl https://api.caybl.ai/mcp`
- ChatGPT, Cursor and other clients: add the remote MCP server `https://api.caybl.ai/mcp`

If the Google Ads tools aren't available, say Google Ads isn't connected and point to https://caybl.ai/login?from=start. Don't invent numbers or fall back to estimates.

## Before analysis

1. **Pick the account.** `list_accessible_customers`. If there are several, use the one the user named; ask only when it's ambiguous.
2. **Confirm the goal.** Target CPA, target ROAS, or conversion volume. If the user doesn't know, use the account's own 90-day CPA as the benchmark and say so.
3. **Check bidding.** `get_campaigns`. If campaigns use Smart Bidding (Maximize Conversions, tCPA, tROAS), don't recommend manual bid adjustments as the default fix.
4. **Check the conversion setup.** `run_gaql_report` on `conversion_action` (name, status, primary_for_goal, category). If several primary actions double-count one journey, say so - it distorts every CPA below.
5. **Mind conversion lag.** Exclude the last 7 days (longer for lead gen with long sales cycles) unless the user says the data is mature.

## Workflow

1. **Baseline.** `get_campaign_performance` for the last 90 days (or 30-60 for high-volume accounts): spend, clicks, conversions, CPA/ROAS per campaign.
2. **Search terms.** `get_search_terms` for the same window.
3. **Segments.** `run_gaql_report` for device, geo, hour of day and day of week, e.g.
   `SELECT campaign.name, segments.device, metrics.cost_micros, metrics.clicks, metrics.conversions FROM campaign WHERE segments.date BETWEEN '<start>' AND '<end>'`
   (cost_micros / 1,000,000 = cost in account currency).
4. **For every segment compute** spend, CTR, CPC, conversions, conversion rate, CPA (or ROAS), spend share, and **expected conversions** = clicks x the campaign's baseline conversion rate.
5. **Classify** each segment: clear waste / likely waste / review / strategic / insufficient data, using the rules below.
6. **Rank by estimated reducible spend**, not by raw spend.

## Decision rules (defaults, not laws)

- **Waste candidate:** spend at least 1.5-2x target CPA, and 3+ expected conversions with 0 actual. Fewer than 3 expected conversions = `insufficient data`.
- **Review, don't cut:** meaningful spend but thin data, ambiguous intent, delayed attribution, weak-but-nonzero CPA, or a brand/competitor/research role.
- **Never cut:** profitable segments, deliberate brand or competitor tests, anything inside the conversion lag window, or when tracking looks broken (fix measurement first).
- **Reducible spend:** zero-conversion waste = 100% of its spend; weak segments = spend - (conversions x target CPA), floored at zero. Report the two tiers separately, never as one sum.
- **Multiple comparisons:** device x hour x geo makes hundreds of cells, so some zero-conversion cells appear by chance. A cell only enters the waste table if it clears the spend floor *and* shows up in two consecutive periods (e.g. last 45 days and the 45 before).
- **Least disruptive fix first:** negative keyword -> location exclusion -> ad schedule -> budget shift -> structure change -> pause (only with high confidence).

## Output

### Executive summary
Total spend analysed, estimated reducible spend (by tier), the top 3-5 waste sources, and the main caveat.

### Ranked waste table
| Rank | Segment type | Segment | Campaign / ad group | Spend | Clicks | Conv. | CPA | Benchmark | Est. reducible | Confidence (safe / review / experimental) | Action | Risk |

### Action plan
Grouped by action type: negatives, location, device, schedule, budget, tracking. For negatives, offer to add them with `add_negative_keywords` - **always run it with `validateOnly: true` first, show the preview, and apply only after the user says yes.**

### Monitoring
What to re-check after 7, 14 and 30 days, the rollback condition for each change, and the expected trade-off between spend and conversion volume.

### Data gaps
Anything missing (offline conversions, CRM quality, value data) and which verdict it would firm up.

## Guardrails
- Say "estimated reducible spend", never "savings". Show the assumptions.
- Be conservative when conversion volume is low.
- If a threshold doesn't fit the account's volume or vertical, say which one you changed and why.
- Never apply a change without an explicit yes after the dry-run preview.
