Microsoft Advertising wasted spend finder
A free Claude skill. Finds Microsoft Ads search terms spending without converting, proposes negative keywords, and checks whether campaigns lose impression share to budget or rank.
Needs: the Caybl.ai connector with Microsoft Advertising connected. Try: “Find wasted spend in my Microsoft Advertising account over the last 90 days.”
What you get
- Executive summary with reducible spend by confidence tier
- Ranked waste table
- Negative keyword plan, dry-run before any change
- Impression share lost to budget vs rank
Install
claude.ai and Claude Desktop
- Download the .zip.
- In Claude, go to Settings, Capabilities, Skills, and upload it.
- Connect Caybl.ai from the connector directory if you haven’t already.
Claude Code
mkdir -p ~/.claude/skills/microsoft-ads-wasted-spend && curl -fsSL https://caybl.ai/skills/microsoft-ads-wasted-spend/SKILL.md -o ~/.claude/skills/microsoft-ads-wasted-spend/SKILL.mdclaude mcp add --transport http caybl https://api.caybl.ai/mcpThe skill
This is the full SKILL.md - the same file you download. View raw.
---
name: microsoft-ads-wasted-spend
description: Finds Microsoft Advertising (Bing Ads) spend that isn't paying back - search terms and keywords that cost money without converting - proposes negative keywords, and checks whether campaigns lose impression share to budget or to rank, using live data from the Caybl.ai connector. Only proposes changes; every change is dry-run first and applied only after an explicit yes. Use when asked to "find wasted spend in Microsoft Ads", "clean up Bing Ads search terms", "which Bing campaigns need more budget", "why is Microsoft Ads CPA up", or for a monthly Microsoft Advertising cleanup.
license: MIT
compatibility: Requires the Caybl.ai MCP connector (https://api.caybl.ai/mcp) with Microsoft Advertising connected (Pro plan).
metadata:
author: Caybl.ai
version: "1.0"
---
# Microsoft Advertising wasted spend
## Requires
The Caybl.ai MCP connector with a Microsoft Advertising account connected. Microsoft Advertising is on the Caybl.ai Pro plan and connects by signing in with a Microsoft login.
- 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 `msads_*` tools aren't available, say Microsoft Advertising 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.** `msads_list_accounts`. If there are several, use the one the user named; ask only when it's ambiguous.
2. **Confirm the goal.** Target CPA 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 tracking.** `msads_get_conversion_tracking`. If there are no conversion goals, or goals look duplicated or inactive, say so first - every CPA below depends on it.
4. **Check the setup.** `msads_get_campaigns` and `msads_get_budgets` for status, bidding strategy and daily budgets. If campaigns use automated bidding, don't recommend manual bid cuts as the default fix.
5. **Mind conversion lag.** Exclude the last 7 days (longer for long sales cycles) unless the user says the data is mature.
## Workflow
1. **Baseline.** `msads_get_campaign_performance` for the last 90 days (30-60 for high-volume accounts): spend, clicks, conversions, CPA per campaign.
2. **Search terms.** `msads_get_search_terms` for the same window. Group by the campaign and ad group that matched them.
3. **Keywords.** `msads_get_keyword_performance` for spend and conversions by keyword, plus quality score and its components (expected CTR, ad relevance, landing page experience) where reported.
4. **Existing negatives.** `msads_get_negative_keywords` so you don't propose terms that are already blocked.
5. **Impression share.** `msads_get_impression_share` per campaign: share lost to budget vs lost to rank.
6. **Classify** each search term or keyword: clear waste / likely waste / review / strategic / insufficient data, using the rules below.
7. **Rank by estimated reducible spend**, not raw spend.
## Decision rules (defaults, not laws)
- **Waste candidate:** spend at least 1.5-2x target CPA with 0 conversions, and enough clicks that a conversion would normally have shown up (roughly 3+ expected conversions at the campaign's baseline rate). Fewer = `insufficient data`.
- **Review, don't cut:** thin data, ambiguous intent, delayed attribution, or a brand, competitor or research role.
- **Never cut:** profitable terms, 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 terms = spend - (conversions x target CPA), floored at zero. Report the two tiers separately, never as one sum.
- **Budget vs rank:** a campaign losing impression share mainly to **budget** and converting at or below target CPA is a candidate for more budget. One losing mainly to **rank** needs better bids, ads or landing pages first - more budget won't help. A campaign losing share to either while above target CPA gets fixed before it is funded.
- **Least disruptive fix first:** negative keyword -> bid or budget adjustment -> 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 | Search term / keyword | Campaign / ad group | Spend | Clicks | Conv. | CPA | Benchmark | Est. reducible | Confidence (safe / review / experimental) | Proposed action |
### Negative keyword plan
Paste-ready list grouped by pattern, with match type and level (campaign or ad group) for each, skipping anything already in `msads_get_negative_keywords`.
### Impression share
| Campaign | Spend | CPA | IS lost to budget | IS lost to rank | Verdict (fund now / fix first / leave alone) |
### 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.
## Making changes
This skill proposes; it doesn't change anything on its own. Change tools (`msads_add_negative_keywords`, `msads_set_campaign_budget`, `msads_set_keyword_bid`, `msads_set_status`) only work where the user has turned changes on for the account.
- **Always dry-run first.** Run the change tool in its preview mode, show the user exactly what would change, and ask.
- **Apply only after an explicit yes** to that specific preview. Don't generalise one yes to later changes.
- If changes are off for the account, say so and give the list to apply in Microsoft Advertising manually, or after turning changes on in the Caybl.ai dashboard.
## 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.
Connect your data, then run the skill
Sign in with Google, connect your accounts and add Caybl.ai to Claude. Google Analytics is free.
Get started free →