Does Microsoft Advertising have a Conversions API now, and how do I send CRM conversions to it?
Yes. Microsoft made its Conversions API generally available on October 28, 2026, and its setup guide no longer lists an enrollment step. It sends website, app, CRM and point-of-sale events server to server, alongside your UET tag. For CRM conversions, copy a token from your UET tag, create a goal for each CRM stage, and send events with the click ID (msclkid) or a hashed email. Partners such as HubSpot, Segment and Tealium can send them for you. Events must be from the last 90 days, so send early B2B stages, not only closed deals.
Ask Tofu next
Pick a question and Tofu Ads Agent answers it in chat.
- Which CRM stage should I send to Microsoft Ads as the conversion to bid on?
- How do I save the msclkid from my landing page into my CRM?
- Should I use the Conversions API or offline conversion import in Microsoft Ads?
- How do I send HubSpot lifecycle stages to Microsoft Ads as conversions?
- Compare the cost per qualified lead from my LinkedIn and Google Ads campaigns
As of November 2026.
What did Microsoft change in October 2026?
Microsoft's October 28, 2026 product post says the Conversions API (CAPI) is "now generally available." It connects "website, apps, CRM, and point-of-sale systems" to Microsoft Advertising in real time, and it "works alongside your Universal Event Tracking tag." You can build the connection yourself, use Google Tag Manager, or use a technology partner.
| Before October 28, 2026 | Now | |
|---|---|---|
| Access | A pilot. PPC Land reported on September 11, 2026 that Microsoft's docs said an account manager or support had to enroll each customer ID | Generally available. Microsoft's setup guide lists no pilot or enrollment step |
| Oldest event you can send | 7 days, according to PPC Land's September 11 report on Microsoft's docs | 90 days, according to Microsoft's current guide |
Do I still need an account manager to turn it on?
Probably not. Microsoft's current setup guide lists what you need: a Microsoft Advertising account, a UET tag ID, a Conversions API token and defined conversion goals. It names no pilot step, and you can copy the token yourself. But Microsoft hasn't said in so many words that enrollment has ended, and its short help article on the Conversions API, last changed in July 2026, still says "Not everyone has this feature yet." If you can't find the option below, ask Microsoft support.
To get the token in Microsoft Advertising:
- Go to the UET section of your account and select your tag with the pencil icon.
- Select Save and next in Edit UET tag.
- In Set up tagging, select Use Conversions API.
- In the Conversions API section, select Copy Token, then Next, then Done.
One catch for agencies: if a tag is shared with you from another account, the API lets you read an existing token but not create one. Only the tag's owner can.
How is the Conversions API different from offline conversion import?
Both take CRM conversions. Offline conversion import is the older route, and Microsoft's October post doesn't say it is going away.
| Conversions API | Offline conversion import | |
|---|---|---|
| How you send | A JSON request to capi.uet.microsoft.com/v1/{tagId}/events with a token | A file upload in the web app, or the ApplyOfflineConversions API call |
| Goal it feeds | Goals on your UET tag, such as custom event goals | An offline conversion goal |
| How a person is matched | At least one ID: msclkid, hashed email or phone, anonymous ID, your own user ID, or a mobile ad ID | msclkid, or a hashed email or phone for enhanced conversions |
| How far back | Events from the last 90 days | Conversions from the last 90 days, after the click and inside the goal's conversion window |
| Per request | Up to 1,000 events | Up to 1,000 conversions |
| Timing notes | Real time is preferred | Wait two hours after you create the goal; data can take up to six hours to show |
Pick the Conversions API if you want one connection for website and CRM events, or if a partner you already use supports it. Keep offline imports if they already run on a schedule and work.
What do I need before I send CRM conversions?
- A UET tag and its token, the same tag your conversion goals use.
- A goal for each CRM stage you send. The event's
eventNameis the event action for a custom event goal, so name them to match, for examplesqloropportunity. Microsoft notes that the Unique count type is a common choice for leads. - The click ID. With auto-tagging on, Microsoft adds
msclkidto your landing page URL after an ad click. Save it with the lead, for example in a hidden form field that maps to a CRM field. Microsoft suggests keeping the latest value for 90 days. - Hashed email and phone. Microsoft strongly recommends sending them. For email: trim spaces, remove dots and any +alias from the part before the @, make it lowercase, then hash it with SHA-256. For phone: format it as E.164 (for example +14255551234), then hash it.
- A consent approach. Events count as consent granted by default. Send
adStorageConsentasDwhen it's denied, and Microsoft won't use that event for advertising or attribution.
How do I send a CRM stage change through the Conversions API?
- When a lead reaches a stage in your CRM, build a custom event:
eventTypeset tocustom, the stage'seventName, a stableeventId, andeventTimeas the time of the stage change, in UNIX seconds (UTC). - Add
userDatawith at least one ID. Send the msclkid without hyphens, plusemandphif you have them. AddvalueandcurrencyincustomDataif the stage has a value. - Send a POST to
https://capi.uet.microsoft.com/v1/{tagId}/eventswith the headerAuthorization: Bearer <token>. You can send one event or up to 1,000 in a batch. - Read the response. HTTP 200 means accepted. 401 means a token or tag ID problem. 400 means a validation error, and by default the whole batch is rejected. Set
continueOnValidationErrortotrueto skip bad events instead. - Watch for warnings. A badly hashed email still returns 200, but Microsoft drops that field and processes the event without it.
A minimal event looks like this:
{
"data": [{
"eventType": "custom",
"eventName": "sql",
"eventId": "crm-lead-48213-sql",
"eventTime": 1793372400,
"userData": {
"msclkid": "dd4afcccb1c94a4cad9544dd7e5006ab",
"em": "<SHA-256 of the normalized email>"
},
"customData": { "value": 500, "currency": "USD" }
}]
}
If a deal's value changes later, Microsoft supports restating or retracting a conversion that has a transactionId. Restate changes its value; retract removes it from your conversion count.
Which tools can send CRM conversions for me?
Microsoft's setup guide lists these current partner integrations: Commanders Act, Freshpaint (early access), HubSpot, Invoca, MetaRouter, Segment (Twilio), Stape.io and Tealium. Adobe Real-Time CDP and Switch Growth are "coming soon." The October post's partner list also names Zeotap, and it doesn't name HubSpot.
- HubSpot. HubSpot's help article (updated October 4, 2026) shows how to sync lifecycle stage changes to Microsoft as conversion events. Go to Marketing, then Ads, click Create, then Conversion event, and choose Sync lifecycle stage changes. Only stage changes after you create the event are sent, and how many events you can create depends on your subscription. HubSpot's article doesn't say which Microsoft API it uses.
- A customer data platform. Microsoft's own B2B example is a company that sends "qualified lead, opportunity, and closed-won events from its CDP or partner connector." This fits if Segment, Tealium or another listed tool already receives your CRM data. You still need the right tag, token, goals and IDs.
- A tag manager. Microsoft says this path suits web-focused advertisers. Tags fire on web activity, so they fit form fills better than CRM stages that change days later.
Salesforce isn't on either list. If you use it, send events through a listed data platform, build a direct connection, or use offline conversion import.
What about B2B deals that take months to close?
They won't count if they close too late. Microsoft only accepts events from the last 90 days, and the longest conversion window on a goal is 90 days after the click. A deal that closes six months after the click won't be credited to that ad. Send earlier stages that happen within weeks, such as a qualified lead or a created opportunity, and bid on those.
How do I avoid counting a conversion twice?
Share one ID. If your UET tag already counts a form fill and you also send it through the Conversions API, use the same UET tag ID, eventName and eventId in both. Microsoft uses that shared ID to drop the duplicate. Keep each eventId stable when you retry a failed request, too.
Do I still need the UET tag?
Yes. Microsoft recommends using the Conversions API with UET "whenever possible." UET captures what happens in the browser. The Conversions API adds events that happen later or that browsers miss. For remarketing audiences built from these events, Microsoft also requires a small ID Sync pixel on your site, and it recommends that pixel for better conversion matching.
Sources
- Build, steer, and measure your campaigns with AI: What's new in Microsoft Advertising this October (Microsoft Advertising blog), checked November 2, 2026
- Conversions API (CAPI), Microsoft Advertising API (Microsoft Learn), checked November 2, 2026
- Where can I find information about the Conversions API (CAPI)? (Microsoft Learn copy of the Microsoft Advertising help article), checked November 2, 2026
- OfflineConversion Data Object, Campaign Management (Microsoft Learn), checked November 2, 2026
- ApplyOfflineConversions Service Operation, Campaign Management (Microsoft Learn), checked November 2, 2026
- ConversionGoal Data Object, Campaign Management (Microsoft Learn), checked November 2, 2026
- Create and sync ad conversion events for your Microsoft Advertising account (HubSpot Knowledge Base), checked November 2, 2026
- Microsoft gates its new Conversions API behind per-account pilot approval (PPC Land), checked November 2, 2026