Update
Microsoft Advertising joins as a full ad platform — read it, build it, change it
TL;DR
Microsoft Advertising is the first non-Google, non-Meta search platform in the product, and it arrived as a full platform rather than a reporting connector. Campaigns, ad groups, responsive search ads, keywords, negatives, budgets, bid strategies, conversion goals, UET tags and targeting are all readable, and every one of them is writable behind the same approval gate every other platform uses. It was proven end to end against a live account before release, which is where most of what follows was learned.
What shipped
- Your own Microsoft sign-in. Connecting uses Microsoft's identity platform, not a shared key — the organization authorizes its own accounts and can revoke them the same way.
- 15 reads — accounts, campaigns, ad groups, ads, keywords, negative keywords, budgets, conversion goals, UET tags, campaign and ad-group targeting, keyword research through Ad Insight, performance reports across fourteen report types, and anomaly detection.
- 17 writes, every one approval-gated — create and edit campaigns, ad groups, responsive search ads, keywords and negatives; pause and activate at all four levels; change budgets and bids under the same magnitude cap as every sibling platform; upload offline conversions.
- A gateway for the rest.
getreaches any documented read by path andmutateany documented write, so an operation with no named tool is still reachable rather than a wall. - Four playbooks the agent loads on its own — the API's own rules, building a campaign, tracking and UTM parameters, and reading performance.
Everything created starts Paused, on purpose. A campaign built by an agent should not begin spending because a person clicked approve on the structure.
What a live test taught that the documentation did not
- The service host is part of the address, not a detail. Microsoft's API is four services on four hosts, and sending a request to the wrong one does not say so — it returns an empty 404 that reads exactly like a bad path. Picking the host by matching a path prefix sent every keyword read to the wrong service; it is now matched on the exact resource name, and anything unrecognized goes to the main service where a real error is at least a loud one.
- A summary report cannot carry a date column. Asking for per-campaign totals over a range is rejected outright if the request still names a time column, which the default column set does. The request now drops it and says so in the result.
- Asking for every conversion-goal type fails for most accounts. One of the types is behind a Microsoft pilot programme, and naming it fails the whole query rather than skipping that type. An exhaustive default is not a safe default.
- A tracking template needs a final URL on the same object. Setting one on a keyword that has no final URL of its own is refused; the template belongs on the ad group or the campaign instead. The tool now says this before the call rather than after it.
Money, dates and deletes
- Amounts are in whole currency units — 25.00 is twenty-five, not twenty-five cents. Google Ads is the odd one out here, not Microsoft.
- Reports are a submit-then-collect job, not an immediate answer, so a long range takes a moment rather than failing.
- Delete is permanent. There is no removed-but-visible state the way Google Ads has one, so the agent pauses first and only deletes when you have asked for a delete and confirmed it.
Frequently asked questions
- Do I need my own Microsoft Advertising developer token?
- No. The platform holds the developer token; you authorize your own accounts with your Microsoft sign-in, and the connection is revocable from Integrations at any time.
- Can the agent create campaigns and ads in Microsoft Advertising?
- Yes — campaigns, ad groups, responsive search ads, keywords and negative keywords, all created Paused and all behind the approval gate. Nothing goes live without you both approving the change and activating it.
- Can it delete things?
- Yes, and deliberately reluctantly. Deleting in Microsoft Advertising is permanent, so a delete needs an explicit confirmation flag on top of the normal approval, and the agent's playbook tells it to pause instead wherever pausing is what you actually meant.
- Why does my Microsoft account show no campaigns after connecting?
- Most likely it has none yet. The reads distinguish an empty account from a failed one — a zero row count with a successful call means the account is empty, not that the connection is broken.