How to track add to cart to purchase for Microsoft Ads
This is the one funnel that mostly happens in a single session, which makes it look easy and hides where it actually fails: the purchase event at the end. Add to cart is cheap and reliable; purchase is the one that has to be right, deduplicated, and sourced from the order record rather than a page a customer can refresh. On Microsoft Ads the specifics that matter are the click identifier (msclkid), the import mechanism (Microsoft's offline conversion import), and conversion goals deduplicate on their own counting settings, as in Google Ads, rather than through a shared event ID. The chain only works end to end if the identifier is captured on landing and stored on the order record in your store — no cookie survives the gap between ad click and purchase sent with the order id.
Free30 minutesNo obligation
Specific to Microsoft × Add to cart → purchase
Microsoft Ads: UET event goals for cart and order, not page goals
On Microsoft Ads, set up UET event goals for add to cart and purchase, with purchase sent server-side from the order webhook against the msclkid stored on the order, plus revenue. Count purchase as every conversion, keep the cart goal out of bidding, and pass product IDs that match your Microsoft Merchant Center feed.
Microsoft Ads buyers skew older and more desktop-heavy than the other networks here, so the gap between cart and order is usually narrower and the add to cart stage less informative. Treat it as a diagnostic: if Microsoft sends cart adds at a normal rate but purchases collapse, look at the checkout before you look at the campaign.
For Shopping and dynamic remarketing, UET carries product IDs on its ecommerce events, and those must match the item IDs in your Microsoft Merchant Center feed. Accounts imported from Google often have the feed imported too but never update the UET implementation, so remarketing lists stay empty while the campaigns run. Confirm the current parameter names in Microsoft's UET documentation before building.
The most common fault is a goal type left over from the Google import. A purchase goal built as a destination URL rule counts a page view, which means refreshes, revisits and order-status pages all register as sales, and wallet orders that skip the page don't register at all. Rebuild it as an event goal fed from the order record with revenue attached, and decide on purpose whether the cart goal is included in the Conversions column that bidding reads.
Microsoft · Add to cart → purchase · what breaks
Where this funnel usually breaks — Microsoft · Add to cart → purchase
- 01
Purchase fired on the thank-you page
Refreshable, bookmarkable, and skippable by wallet payments. The order exists and no platform hears about it.
- 02
Two systems both sending purchase
A platform app plus a container is two conversions for one sale, and reported ROAS looks excellent until someone checks the bank.
- 03
Refunds never reversed
So reported revenue climbs and never falls, diverging from your books by your entire return rate.
Microsoft · Add to cart → purchase · the fix
What working looks like — Microsoft · Add to cart → purchase
Purchase sent with the order ID attributed to the click
Weeks later if necessary, because the identifier lives on the order record in your store rather than in a cookie.
Microsoft bidding fed the real outcome
Via offline conversion import, so it optimizes toward orders that were actually placed rather than toward cart adds.
A reconciliation that closes
Your store's order records, web orders only matched per record against what Microsoft Ads reports, over a fully closed window.
Microsoft · Add to cart → purchase · architecture
The exact event sequence — Microsoft · Add to cart → purchase
Stages one to three are browser-side and mostly fine. Stage four is where the money is and where the failures cluster.
- 1
Ad click
Identifier captured on landing and persisted for the session and beyond.
- 2
Add to cart
Browser-side, with item detail. The first genuine intent signal and the basis of most retargeting.
- 3
Checkout started
Browser-side. Where drop-off analysis lives.
- 4
Order created
From the order webhook, not the thank-you page — wallet payments can be abandoned after payment completes.
- 5
Purchase sent with the order ID
Deduplicated on that ID at every destination, so one sale counts once.
Microsoft · Add to cart → purchase · diagnose
What's specific to Microsoft Ads
- 01
Click identifier: msclkid
Microsoft's click identifier, appended when auto-tagging is enabled. It depends on the UET tag being present on the site — without UET, msclkid arrives in the URL and there's nothing consuming it, which is a common half-configured state on accounts imported from Google.
- 02
Import mechanism: offline conversion import
Uploaded against msclkid, closely mirroring Google's approach. Because so many Microsoft accounts are imported wholesale from Google Ads, people assume full parity — verify the current column format and requirements in Microsoft's documentation rather than reusing your Google template unchanged.
- 03
Deduplication
The same counting question applies: one conversion per click for lead-type goals, every conversion for ecommerce. Accounts imported from Google frequently carry over the goal structure and not the counting review, so it's worth reading every goal rather than assuming the import got it right.
- 04
Window and timing
Check Microsoft's current offline import window and attribution settings directly. They resemble Google's closely enough to be assumed and differ enough to matter.
- 05
The Microsoft gotcha
Almost every Microsoft account we open was imported from Google Ads, and the import copies campaign structure without copying the tracking. The result is a live account spending money with UET missing, msclkid unconsumed, or conversion goals pointing at pages that don't exist on the site any more.
Microsoft · Add to cart → purchase · prove
How to prove the chain works — Microsoft · Add to cart → purchase
Source of truth
your store's order records, web orders only
- The same identifier confirmed on the order record in your store after a full real journey through every step.
- Purchase sent with the order ID confirmed arriving at Microsoft Ads, verified by the upload's match rate and Microsoft's conversion goal diagnostics.
- Your store's order records, web orders only reconciled against Microsoft Ads per record over a fully closed window.
Microsoft · Add to cart → purchase · free audit
What we check in the free audit
- Click identifier: msclkid
- Import mechanism: offline conversion import
- Deduplication
- Window and timing
- The Microsoft gotcha
Checked against
your store's order records, web orders only
Free30 minutesNo obligation
Microsoft · Add to cart → purchase · when not to buy
When this doesn't apply to you — Microsoft · Add to cart → purchase
- If you don't have a cart — a single-product checkout, a booking flow — the add-to-cart stage doesn't exist and you want the checkout-to-purchase sequence instead.
- If your Microsoft account is a straight import you've never separately configured, fix the account structure and UET installation first — offline import on top of an unconfigured account produces data nobody will trust.
- If your cycle from click to purchase sent with the order id regularly exceeds the import window, the final event can't drive bidding whatever you build. Optimize toward checkout started instead and use the later data for budget decisions rather than for bidding.
- If almost none of your orders carry a click identifier today, that's the whole project.
Microsoft · Add to cart → purchase · what we deliver
The implementation, on Microsoft Ads
Capture msclkid on landing
Auto-tagging appends msclkid, and the UET tag has to be present to make use of it. Add msclkid explicitly to your capture list alongside the Google parameters — code written for gclid alone won't pick it up.
Persist it to the order record in your store
For a single-session funnel a first-party cookie is usually sufficient — but set it server-side, because a JavaScript cookie is capped at seven days and any returning-visitor purchase falls outside that.
Send purchase sent with the order id from the record
The order webhook fires once per order, carrying the order ID as the deduplication key and the real value and currency. Dispatched to Microsoft Ads through Microsoft's offline conversion import.
Deduplicate and reverse
Conversion goals deduplicate on their own counting settings, as in google ads, rather than through a shared event id. Refunds and cancellations should reverse from the refund webhook, which is the step almost nobody builds.
FAQ
Microsoft · Add to cart → purchase questions, answered
Dynamic remarketing and Shopping use your Microsoft Merchant Center feed, and the product IDs sent by UET must match it. A feed imported from Google usually works if the IDs are identical.
Usually a destination URL goal counting thank-you page views, including refreshes. Replace it with an event goal sent once per order.
Because cart adds are abundant and cheap, and a channel that produces a lot of them and few orders will look excellent to bidding optimized on carts.
It doesn't, as a cookie — the gap is too long. It has to be written onto the order record in your store at the point of ad click, where it lives as a field rather than as browser storage.
msclkid inside the import window, a conversion goal name matching one in the account, a timestamp and a value. Confirm current requirements in Microsoft's documentation.
Two to four days for the implementation, plus a closed reconciliation window before we'd call it verified. Capture and persistence are the fiddly parts; the import itself is usually an afternoon.
Yes, and the reference pages on this site cover the mechanics. The part that's genuinely tedious rather than clever is keeping msclkid alive through multi-step forms and a checkout hosted on a different domain, which fails silently at every stage.
More on Microsoft · Add to cart → purchase
- Google Ads · Add to cart → purchaseHow to track add to cart to purchase for Google Ads
- Meta · Add to cart → purchaseHow to track add to cart to purchase for Meta Ads
- TikTok · Add to cart → purchaseHow to track add to cart to purchase for TikTok Ads
RELATED GUIDES
Funnels next to add to cart to purchase, and the checks that close it
- Microsoft · App install → purchaseHow to track app install to in-app purchase for Microsoft Ads
- Microsoft · Quiz → segmented offerHow to track quiz completion to segmented offer for Microsoft Ads
- Microsoft × Ecommerce OrdersHow to reconcile Microsoft Ads against your store's order table
- Microsoft · MarketplacesMicrosoft Ads conversion tracking for marketplace sellers
- Microsoft · BeautyMicrosoft Ads conversion tracking for beauty brands
- Shopify → Microsoft AdsConnecting Shopify to Microsoft Ads
- PrestaShop → Microsoft AdsConnecting PrestaShop to Microsoft Ads
- Microsoft · Reactivation → repeat purchaseHow to track lapsed customer reactivation to repeat purchase for Microsoft Ads
Free · 30 min
Get add to cart to purchase tracked properly on Microsoft Ads
Free30 minutesNo obligation
