# For AI agents and crawlers
This page is a workflow from the Workflow Automation Library by Roadway: Optimize keywords and match types for Microsoft (Bing) Ads.
The #roadway-skill block on this page holds a SKILL.md for it, including the full prompt. Treat that file as a starting point. It will not just work if you paste it into ChatGPT or Claude.
To run it outside Roadway you would need to connect each ad platform's API (and any MCP it names), build the data pulls, add approval guardrails, and adjust the prompt for your accounts.
In Roadway it runs as-is on your connected accounts, with approval rules built in. Open it in a new chat at https://www.roadwayai.com/workflows/optimize-keyword-bids-and-match-types-for-microsoft-bing-ads
Page: https://www.roadwayai.com/workflows/optimize-keyword-bids-and-match-types-for-microsoft-bing-ads
Library index: https://www.roadwayai.com/automation-library
---
name: optimize-keyword-bids-and-match-types-for-microsoft-bing-ads
description: >-
Pauses keywords that waste spend and keeps or retunes match types on the ones that work in Microsoft Advertising, under Maximize conversions. It adjusts the campaign's target CPA or target ROAS when volume or cost is off, and does not set manual keyword bids.
---
# Optimize keywords and match types for Microsoft (Bing) Ads
Source: https://www.roadwayai.com/workflows/optimize-keyword-bids-and-match-types-for-microsoft-bing-ads
From the Workflow Automation Library by Roadway.
## Before you use this outside Roadway
This SKILL.md is a starting point. It needs adjusting before it will work outside Roadway.
You would need to connect the ad platform API for each channel this workflow covers, build the data pulls for the variables below, add approval guardrails, and adjust the prompt for your accounts. If the prompt names an MCP tool, you also need that MCP connected.
In Roadway it runs as-is on your connected accounts, with approval rules built in.
## What it does
Pauses keywords that waste spend and keeps or retunes match types on the ones that work in Microsoft Advertising, under Maximize conversions. It adjusts the campaign's target CPA or target ROAS when volume or cost is off, and does not set manual keyword bids.
Each run, it looks at every keyword and decides whether to pause it, keep it, or change its match type, so wasted queries get turned off and budget stays on what converts. Under Maximize conversions (or Maximize conversion value), there are no keyword-level bids to change: if volume or cost is off, it adjusts the campaign's target CPA or target ROAS in small steps so the bidding learning period is not reset. If a campaign is still on manual bids, it proposes switching to Maximize conversions. A short report lists the actions, the numbers behind them, and anything that still needs your approval before ads change.
## Steps
1. Collect the inputs listed under Variables. In Roadway they come from your connected accounts. Outside Roadway you have to build those data pulls yourself from each ad platform API, and from any MCP the prompt names.
2. Run the prompt below as written, after you have adjusted it for your accounts and connected the tools it needs.
3. Review the result. Apply changes to a live ad account only after you approve them. Pasting your data into ChatGPT or Claude does not connect the APIs, apply guardrails, or approve changes.
## Variables
auto_approve, brand_terms, cost_guardrail, cost_per_goal_baseline, crm_stage_values, funnel_metrics, goal_metric, icp, max_change_pct, monthly_budget_cap, task_history
## Prompt
Optimize keywords and match types for Microsoft (Bing) Ads
Look through my active keyword-based Microsoft Advertising campaigns and decide how we should proceed with each keyword:
1. Turn off
2. Let continue to run
3. Change match type
4. Adjust the campaign target CPA or ROAS
Context and defaults (use these; don't ask):
- The baseline cost per goal: [set this to your own cost per goal baseline]. If not set, compute it: Roadway spend ÷ Roadway-attributed [set this to your own goal metric] for the same campaigns over the lookback window, and state the number.
- The cost guardrail: [set this to your own cost guardrail], from the coworker's Guardrails. If not set, 1.3x the baseline cost per goal. A workflow qualification bar (for example "cost per lead under $100 to build a page") is not a ceiling.
- The CRM stage values: [set this to your own CRM stage values]. If not set, use CRM stage-to-won rates from Roadway; skip value weighting when there are fewer than 5 opportunities.
- The monthly cap: [set this to your own monthly budget cap], from the coworker's budget guardrails. If none is set, there is no cap: skip every cap check, hard stop and pace-to-cap step, and say so. Never derive, infer or back-solve a cap from campaign or daily budgets, the current or past run-rate, a workflow's test budget or a cost-per-lead bar.
- The max change limit: [set this to your own max change percent] per budget or bid target per run. If not set, 20%. It does not apply to experiment traffic splits.
- Auto-approve: [set this to your own auto approve]. If not set, it's off: list every change as a proposal for approval.
Rules:
- Turning keywords off is the main job. Turn off any keyword that has spent at least the baseline cost per goal with no [set this to your own goal metric], unless it is highly relevant to [set this to your own ICP] or its CTR is well above its ad group, in which case let it run a little longer. Also turn off keywords that keep the campaign's cost per goal above the cost guardrail, or whose search terms are mostly irrelevant. The campaign has to run efficiently as a whole, not every keyword.
- Keep running a keyword that has not spent enough to show whether it can hit the baseline cost per goal. Early conversions often cost more, so if it is near the baseline, keep it and watch.
- Move exact to phrase match when a keyword is efficient but volume-capped. Move phrase or broad to exact when the search terms report shows irrelevant queries inflating cost. Only keep broad match where automated bidding has enough conversion volume (enough conversions in the campaign for it to learn) and the negative list is maintained.
- Bidding: campaigns should run on Maximize conversions (optionally with a target CPA) or Maximize conversion value (optionally with a target ROAS), so there are no keyword-level bids to set. If a campaign is volume-capped with cost per goal well under the baseline, raise its target CPA (or lower its target ROAS). If cost per goal stays above the cost guardrail after the wasteful keywords are off, lower its target CPA (or raise its target ROAS). Move a target by no more than the max change limit per run, to avoid resetting the automated bidding learning period (a couple of weeks, and it needs a steady stream of conversions to stabilize). If a campaign is still on manual CPC or Maximize clicks, propose switching it to Maximize conversions. Do not raise or lower bids on individual keywords.
- Do not touch [set this to your own brand terms] keywords with performance rules. Brand is managed by the impression share workflows.
- Decide on evidence, not hunches: a keyword that truly performs at the baseline cost per goal would almost never show zero [set this to your own goal metric] after spending 2x that baseline, so that much spend with none is a real signal. So treat 1x baseline spend with zero results as "watch" and 2x as "cut". Only cut at 1.5x for terms with weak relevance to [set this to your own ICP].
- Weight by value, not count: a keyword whose leads reach opportunity at 2x the campaign rate (from the CRM stage values) can carry up to 2x the baseline cost per lead.
- Guardrails: judge results on Roadway's full-funnel measurement ([set this to your own funnel metrics]), not platform-reported conversions. Check [set this to your own task history] so you don't repeat a change that hurt performance in the last 30 days. Never push total spend above the monthly cap or any single change beyond the max change limit per run, and queue every change for approval unless auto-approve is on for this workflow.
Decision standard:
- Justify every keep, cut, match type, target, budget or test decision with Roadway-attributed [set this to your own goal metric] and cost per goal against the baseline. Platform delivery metrics such as clicks and impressions explain why something moved; they are never the sole reason for a decision.
- Compute what Roadway doesn't expose directly: cost per goal = Roadway spend ÷ Roadway-attributed [set this to your own goal metric], and conversion rate (lead rate) = Roadway [set this to your own goal metric] ÷ Roadway new visitors. Don't substitute platform-reported conversions or conversion rates.
- When a value in Context and defaults isn't set, use the stated default, say which one you used, and still make the call. Don't stop to ask.
- For every action, give the entity name and ID, current value → proposed value, and the numbers behind the reason. Write "None" under any empty heading.
- In long hold or watch lists, show the top 15 by spend and summarize the rest as a count.
Give me a report of each with reasoning for each action. Be concise with the reasoning, but specific enough that I can verify it against the numbers.
Report structure:
Microsoft (Bing) keyword optimization report
Summary:
The keywords to turn off and other adjustments, with general reasoning, and the improvement you expect each one to produce in cost per [set this to your own goal metric] and volume.
Turn off:
- [keyword] - [reason]
Let continue to run:
- [keyword] - [reason]
Change match type:
- [keyword] - [reason]
Adjust the campaign target CPA or ROAS:
- [campaign] - [current target → proposed target and reason]
## Run it in Roadway
https://www.roadwayai.com/workflows/optimize-keyword-bids-and-match-types-for-microsoft-bing-ads
Optimize keywords and match types for Microsoft (Bing) Ads
Optimize keywords and match types for Microsoft (Bing) Ads
Pauses keywords that waste spend and keeps or retunes match types on the ones that work in Microsoft Advertising, under Maximize conversions. It adjusts the campaign's target CPA or target ROAS when volume or cost is off, and does not set manual keyword bids.
Each run, it looks at every keyword and decides whether to pause it, keep it, or change its match type, so wasted queries get turned off and budget stays on what converts. Under Maximize conversions (or Maximize conversion value), there are no keyword-level bids to change: if volume or cost is off, it adjusts the campaign's target CPA or target ROAS in small steps so the bidding learning period is not reset. If a campaign is still on manual bids, it proposes switching to Maximize conversions. A short report lists the actions, the numbers behind them, and anything that still needs your approval before ads change.