Skip to main content
Microsoft · Add to cart → purchaseUse-case guide

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

  1. 01

    Purchase fired on the thank-you page

    Refreshable, bookmarkable, and skippable by wallet payments. The order exists and no platform hears about it.

  2. 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.

  3. 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. 1

    Ad click

    Identifier captured on landing and persisted for the session and beyond.

  2. 2

    Add to cart

    Browser-side, with item detail. The first genuine intent signal and the basis of most retargeting.

  3. 3

    Checkout started

    Browser-side. Where drop-off analysis lives.

  4. 4

    Order created

    From the order webhook, not the thank-you page — wallet payments can be abandoned after payment completes.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Get my free conversion tracking audit

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.

Free · 30 min

Get add to cart to purchase tracked properly on Microsoft Ads

Free30 minutesNo obligation