How to reconcile Microsoft Ads against your store's order table
This is the check we run first on every account, written out so you can run it without us. It takes about thirty minutes and needs two numbers: what Microsoft says it produced, and what your store's order table actually shows. The gap between them is the only honest measure of whether your tracking works — and if it comes back small, you do not need us.
Free30 minutesNo obligation
Specific to Microsoft × Ecommerce Orders
Microsoft Ads vs your orders: verify UET before trusting the gap
Store msclkid on each order and compare the paid online orders carrying it against the purchases on Microsoft's revenue conversion goal for a closed month. Volume is usually low, so pool a quarter. Small swings are noise; a goal counting page loads, or reporting one fixed value per order, is a configuration fault rather than tracking loss.
The join is msclkid saved on the order, and it only exists if auto-tagging is on and your capture code names it alongside gclid. Count the orders carrying msclkid for the period. If that count is zero while Microsoft reports purchases, the goal is firing from something other than a real order, and the comparison stops there until that is fixed.
Accounts imported from Google often bring a purchase goal defined by a thank-you page URL. That type counts page loads, so a refresh or a bookmarked confirmation page adds a purchase, and the revenue may be a single fixed value rather than the order total. Check the goal type, its count setting and whether revenue is variable. Then confirm the conversion window and whether the report dates conversions by click or by conversion, in Microsoft's current documentation rather than by assuming Google's settings carried over.
Pull the goal's conversions and revenue from the conversions report for the period and compare with orders carrying msclkid. Because Microsoft volume is often a fraction of Google's, a handful of orders either way in one month says little; read a quarter before concluding anything. The most common disagreement in this pair is the fixed-value or page-load goal, which makes Microsoft's revenue figure look precise while describing nothing in your order table.
Microsoft × Ecommerce Orders · what breaks
Why Microsoft and your store's order table disagree
- 01
Refunds never subtracted
The most common cause and the easiest to check. Sum refunds for the same period — if the platform figure is roughly your gross and your own figure is net, that difference is the whole gap.
- 02
Purchase event firing on page refresh
A confirmation page that re-fires on reload counts one order several times. Compare distinct order IDs against total conversions.
- 03
Point-of-sale orders in the same table
If you have a physical shop, counter sales sit in the same order table and will be counted as advertising conversions unless the channel is filtered.
- 04
Post-purchase upsells arriving late
If the conversion fires at checkout and an upsell adds revenue afterwards, the platform is under-reporting by the upsell take rate.
Microsoft × Ecommerce Orders · the fix
What you get from this — Microsoft × Ecommerce Orders
A number instead of a suspicion
The likely cause, narrowed
A basis for deciding
Microsoft × Ecommerce Orders · architecture
What each side is actually counting — Microsoft × Ecommerce Orders
- 1
What Microsoft counts
msclkid inside the import window, a conversion goal name matching one in the account, a timestamp and a value.
- 2
How Microsoft attributes it
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.
- 3
The window it uses
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.
- 4
What your store's order table counts
Paid orders with their totals, found in Shopify Admin → Orders, WooCommerce → Orders, or a direct query against the orders table.
- 5
The filter that makes them comparable
Financial status is paid, and the sales channel is online rather than point of sale.
Microsoft × Ecommerce Orders · events
Reading the gap — Microsoft × Ecommerce Orders
| What you see | What it usually means |
|---|---|
| 15%+ platform higher | Usually the wrong event entirely — the platform is claiming more than you took. usually refunds, duplicate firing, or a second channel bleeding into the same conversion action. |
| 20%+ platform lower | Usually structural — the platform is seeing fewer orders than you actually took. usually consent, ad blocking, or an identifier that never reached the order. |
Microsoft × Ecommerce Orders · diagnose
Diagnostic order
- 01
Confirm both numbers cover the same period and channel
- 02
Refunds never subtracted
The most common cause and the easiest to check. Sum refunds for the same period — if the platform figure is roughly your gross and your own figure is net, that difference is the whole gap.
- 03
Purchase event firing on page refresh
A confirmation page that re-fires on reload counts one order several times. Compare distinct order IDs against total conversions.
- 04
Point-of-sale orders in the same table
If you have a physical shop, counter sales sit in the same order table and will be counted as advertising conversions unless the channel is filtered.
- 05
Read the upload's match rate and Microsoft's conversion goal diagnostics
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 × Ecommerce Orders · prove
How to know you did it right — Microsoft × Ecommerce Orders
Source of truth
your store's order table — orders for a fully closed month
Microsoft × Ecommerce Orders · free audit
What we check in the free audit
- Confirm both numbers cover the same period and channel
- Refunds never subtracted
- Purchase event firing on page refresh
- Point-of-sale orders in the same table
- Read the upload's match rate and Microsoft's conversion goal diagnostics
Checked against
your store's order table — orders for a fully closed month
Free30 minutesNo obligation
Microsoft × Ecommerce Orders · when not to buy
When the answer is that you do not need us — Microsoft × Ecommerce Orders
- If almost all of your orders come from a channel with no click behind it, no tracking work will reach them — and knowing that is worth more than a build.
- 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.
Microsoft × Ecommerce Orders · what we deliver
The method, step by step — Microsoft × Ecommerce Orders
Pull what Microsoft reports
The upload's match rate and microsoft's conversion goal diagnostics.
Pull what your store's order table shows
Export orders for a fully closed calendar month, filtered to paid and online. Count them, and sum the total after discounts and before shipping and tax.
Filter both to the same thing
Financial status is paid, and the sales channel is online rather than point of sale.
Compare per record, not on totals
FAQ
Microsoft × Ecommerce Orders questions, answered
Reuse the method, not the settings. Microsoft has its own goals, count settings and identifier, and an imported account frequently differs from Google in all three.
The goal is almost certainly set to a fixed value. Switch it to variable revenue passed from the order total, or the revenue comparison is meaningless.
Because you should know the size of the problem before anyone quotes you for it. If the gap is small, you have saved yourself a purchase. If it is large, you now know what you are buying rather than taking our word for it.
No. Both numbers come from systems you already own and neither leaves them. There is no tool to sign up for and nothing to upload.
Then compare totals for a closed period and treat the result as directional rather than exact. The upload's match rate and microsoft's conversion goal diagnostics is still the right place to read the platform's side.
Under five percent is working. Five to fifteen usually means reversals are missing. Above twenty is normally the wrong event being counted, not a broken tag — which is why debugging tags first wastes so much time.
Then fix the filter before drawing any conclusion. Financial status is paid, and the sales channel is online rather than point of sale. A mismatch in scope produces a gap that looks like a tracking fault and is not one.
Book the free thirty-minute call and bring both numbers. We will tell you which of the causes above it is, and whether it is something you can fix yourself — which it sometimes is.
More on Microsoft × Ecommerce Orders
- Google Ads × Ecommerce OrdersHow to reconcile Google Ads against your store's order table
- Meta × Ecommerce OrdersHow to reconcile Meta Ads against your store's order table
- TikTok × Ecommerce OrdersHow to reconcile TikTok Ads against your store's order table
RELATED GUIDES
Systems of record beside ecommerce orders, and the funnels it settles
- Microsoft × Enrolment SystemHow to reconcile Microsoft Ads against your application or enrolment system
- Microsoft × Invoicing SystemHow to reconcile Microsoft Ads against your invoicing system
- 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 · MarketplacesMicrosoft Ads conversion tracking for marketplace sellers
- Microsoft · FurnitureMicrosoft Ads conversion tracking for furniture brands
- ReferralCandy → Microsoft AdsConnecting ReferralCandy to Microsoft Ads
- Klaviyo → Microsoft AdsConnecting Klaviyo to Microsoft Ads
Free · 30 min
Found a gap between Microsoft and your store's order table?
Free30 minutesNo obligation
