FlowRunner
PricingContact
Theme
Start Free

Microsoft Advertising Campaign Management

Advertising

Manage Microsoft Advertising campaigns from AI agents through the Campaign Management v13 SOAP service. Agents create and update campaigns in bulk, list ad groups, and reach any other v13 operation via a raw SOAP escape hatch.

5 actions OAuth available
Marketing finalizes the quarterly campaign plan in a shared spreadsheet
The agent reads the planned campaigns: names, budget types, daily budgets
Get Campaigns By Account Id pulls the existing campaign set to catch name collisions and structural drift
The campaign manager reviews the creation batch, total daily budget committed, and the diff against what already exists
Add Campaigns creates the approved campaigns, up to 100 per call
The agent parses the AddCampaignsResponse for CampaignIds and NestedPartialErrors, retrying nothing silently
The marketing channel gets the new campaign IDs and any partial failures with their error details

What This Integration Enables

Microsoft Advertising is the channel teams under-manage, not because it underperforms but because the tooling friction is real: a SOAP API, a developer token, and XML request bodies keep it off the automation roadmap. This connector absorbs that friction. FlowRunner agents authenticate through OAuth, the extension wraps every call in the correct v13 envelope with the AuthenticationToken, DeveloperToken, CustomerId, and CustomerAccountId headers, and campaign operations become workflow steps. - Create Search, Shopping, Dynamic Search Ads, Audience, or Performance Max campaigns in bulk, up to 100 per call - Audit an account's campaigns and drill into each campaign's ad groups, statuses, and bid settings - Rename campaigns and adjust budget types and daily budgets by numeric Id - Reach any Campaign Management v13 operation, GetBudgetsByIds, AddAdGroups, DeleteCampaigns, through Call SOAP Operation with a hand-built body The raw XML responses are a feature, not an omission: every action returns exactly what the API said, including the partial-error structures that batch operations produce, so agents parse NestedPartialErrors instead of assuming a 200 meant a hundred successes. In an advertising API, knowing precisely which three campaigns of a hundred failed is the difference between a clean retry and a budget mess. Every write here moves real ad spend, which is why FlowRunner's [human-in-the-loop](/concepts/human-in-the-loop) gate sits between the computed change and the account.

Without FlowRunner

The neglected second channel Microsoft Advertising exists in the media plan but gets updated weeks after Google, by hand
Budget changes one screen at a time Adjusting daily budgets across 40 campaigns means 40 trips through the UI
SOAP as a wall The v13 API is powerful and almost nobody wants to hand-build envelopes to use it

With FlowRunner

Cross-platform parity on a schedule Campaign structure mirrors from the plan, and drift between platforms surfaces as a diff
Bulk changes with a reviewed total Budget updates apply across the account in one call, after a person sees the spend delta
SOAP handled, escape hatch kept The envelope, auth headers, and tokens are built for you; Call SOAP Operation reaches everything else

Use Case Scenarios

The campaign plan ships to both platforms

The team plans in [Google Sheets](/integrations/google-sheets). The agent reads the planned rows, checks Get Campaigns By Account Id for existing names, and stages an Add Campaigns batch with each campaign's name, budget type, and daily budget. The campaign manager approves the batch and its total committed daily spend, the call runs, and the agent parses the returned CampaignIds back into the sheet. Microsoft Advertising stops shipping two weeks behind the plan.

Structure parity with Google Ads

On a schedule, the agent pulls campaigns from [Google Ads](/integrations/google-ads) and from Get Campaigns By Account Id, then compares. Campaigns that exist on one platform but not the other, or whose budgets have drifted apart, land in a parity report posted to [Slack](/integrations/slack). When the team wants the gap closed, the agent stages the Add Campaigns or Update Campaigns calls for approval. Parity becomes a maintained property instead of an annual cleanup.

The weekly structure audit nobody has to run

Every Monday the agent walks the account: Get Campaigns By Account Id with all campaign types selected, then Get Ad Groups By Campaign Id per campaign, logging names, statuses, and bid settings to a tracking sheet. Paused ad groups inside active campaigns, campaigns with anomalous budgets, and structural changes since last week get called out in the digest. When something needs a deeper look, the agent uses Call SOAP Operation to fetch what the dedicated actions do not cover, like budget details via GetBudgetsByIds.

Human-in-Loop Highlight

Update Campaigns changes daily budgets on live campaigns, and a budget is not a setting, it is a rate of spend: get one wrong by a decimal place across a 40-campaign bulk update and the account burns real money at the wrong rate until someone notices. Call SOAP Operation raises the stakes further, because it reaches operations like DeleteCampaigns that remove campaign structure outright. So FlowRunner agents in this connector never apply a computed change directly. The agent builds the batch, prices the delta, current daily budget versus proposed, summed across the account, and posts it to the campaign manager as a single reviewable diff. Approval releases the call; the agent then parses the SOAP response for PartialErrors instead of assuming success. The math and the XML belong to the agent. The spend rate belongs to a person.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via preferred channel
Human decides
Agent resumes with decision

Agent Capabilities

5 actions

Campaigns

3
  • Get Campaigns By Account Id Retrieves the campaigns in an ad account, returning Search campaigns by default and Shopping, Dynamic Search Ads, Audience, or Performance Max when those Campaign Types are selected. Returns the raw SOAP XML response for downstream parsing. Falls back to the configured Account ID when none is provided.
  • Add Campaigns Creates up to 100 campaigns per call, each with a name, budget type, and daily budget. Returns the raw AddCampaignsResponse with new CampaignIds and any NestedPartialErrors, so agents can confirm exactly what was created.
  • Update Campaigns Updates existing campaigns by numeric Id, changing only the fields supplied: name, budget type, daily budget. For campaign-type-specific fields, complex updates go through Call SOAP Operation instead. The budget-moving write this page's approval gate governs.

Ad Groups

1
  • Get Ad Groups By Campaign Id Retrieves the ad groups within a campaign, including each ad group's Id, name, status, and bid settings, as raw SOAP XML. The drill-down step in structure audits.

Advanced

1
  • Call SOAP Operation Invokes any Campaign Management v13 operation by name with a hand-built inner request-body XML. The extension wraps it in the authenticated envelope and returns the raw response. The reliable path for everything beyond the basics, and the reason no v13 capability is out of reach.

Frequently Asked Questions

What can FlowRunner do with Microsoft Advertising Campaign Management?

FlowRunner agents can run Get Campaigns By Account Id, Add Campaigns, and Update Campaigns in Microsoft Advertising Campaign Management, plus 2 more actions.

Does connecting Microsoft Advertising Campaign Management to FlowRunner require OAuth?

Yes. Microsoft Advertising Campaign Management connects to FlowRunner with OAuth 2.0, so agents authenticate without handling raw credentials.

Can Microsoft Advertising Campaign Management trigger a FlowRunner workflow automatically?

Microsoft Advertising Campaign Management doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with Microsoft Advertising Campaign Management

$100 in credits. No card required. Connect in minutes.