At a glance
Cross-channel alert for spend on Microsoft Shopping ads that point at SKUs your commerce store reports as out of stock. This is pure leakage: you are paying for clicks to product pages that cannot be bought, so the click converts at near zero and the shopper leaves frustrated. The fix is simple and immediate, pause the product group and hold the budget for SKUs that can actually sell. This card only exists because Vortex IQ joins your Microsoft Shopping feed against live commerce inventory, something neither system can see on its own.
| What it counts | Microsoft Shopping ad spend on product offers whose matching commerce-platform SKU currently has zero sellable quantity. |
| How the join works | Each live Shopping offer is matched to its commerce SKU, then checked against the inventory quantity from the connected store (Shopify, BigCommerce, or Adobe Commerce). A quantity of zero with an active ad is the trigger. |
| Why it is cross-channel | Microsoft Advertising does not know your real-time stock level; the commerce platform does not know which SKUs are being advertised. Only the join surfaces the conflict. |
| Cost basis | Gross Microsoft Shopping media cost, post Click Quality filter. |
| Currency | Account currency for spend; inventory quantity is a count, not a value. |
| Inventory definition | Sellable quantity from the commerce store. Items on backorder or with continue-selling-when-out-of-stock enabled may legitimately keep selling; see the FAQs. |
| Bot / invalid traffic | Spend is post-Click-Quality-filter. The waste here is real clicks landing on unbuyable products. |
| Time window | Real-time. The card surfaces active ads on currently out-of-stock SKUs so you can act the same day. |
| Alert trigger | Any active Shopping ad mapped to a commerce SKU with zero sellable quantity. |
| Roles | owner, marketing, operations |
Calculation
Calculated automatically from your Microsoft Ads (Bing) data joined to your connected commerce store. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK homeware brand runs Microsoft Shopping alongside Shopify. The card reads on 22 Apr 26.| SKU | Product | Ad status | Commerce quantity | 7-day Shopping spend | Flagged? |
|---|---|---|---|---|---|
| HW-204 | Stoneware dinner set | Active | 0 | £180 | Yes |
| HW-117 | Linen throw, natural | Active | 0 | £95 | Yes |
| HW-330 | Brass table lamp | Active | 42 | £210 | No |
| HW-051 | Wool rug, grey | Active | 3 (low) | £140 | No (in stock) |
| HW-209 | Stoneware mug, single | Active | 0 (backorder on) | £60 | See note |
- The dinner set at £180 is the priority pause. It is fully out of stock with no backorder, so every one of those clicks hit a “sold out” page. Pause the product group now; the budget will redistribute to sellable SKUs.
- The linen throw is the same story at smaller scale. Pause it too, and set a restock reminder so the ad can be re-enabled rather than forgotten.
- The brass lamp and wool rug are correctly unflagged. The rug is low but not zero; advertising a low-stock item is a strategy choice, not waste.
- The mug needs operations input. It is at zero quantity but has backorder selling enabled, so the click can still convert into a deferred order. If your fulfilment can honour backorders cleanly, leave it; if backorders cause cancellations and complaints, treat it like the dinner set.
Sibling cards merchants should reference together
| Card | Why pair it with Active Shopping Ads on Out-of-Stock SKUs |
|---|---|
| Spend on Campaigns with Active Feed Rejections | The other feed-health leak. Out-of-stock and rejected offers both waste Shopping budget for reasons the ad platform cannot see alone. |
| Microsoft Ads Wasted Spend | The account-wide waste total. This card is the inventory-specific slice of it. |
| Microsoft Ads Spend by Campaign | Shows which Shopping campaign carries the flagged SKUs so you can act at the right level. |
| Microsoft Ads Revenue by Campaign | Confirms the flagged product groups are returning near-zero revenue, as expected. |
| Shopify Total Revenue | The commerce side of the join. The same inventory feed that powers this card. |
Reconciling against Microsoft Advertising
Where to look in Microsoft Advertising: Microsoft Advertising → Campaigns → your Shopping campaign → Product groups, with the Spend column visible. To see offer-level status, open Microsoft Merchant Center and review the product catalog. Microsoft will show an offer as serving even when the destination product is out of stock on your store, because Microsoft reads availability from the feed, not your live inventory. Why Microsoft cannot show this on its own:- Microsoft Merchant Center availability reflects what your feed last said, which can lag real stock by hours or a full feed cycle.
- The Shopping report shows spend per product group but does not check live commerce quantity, so an out-of-stock SKU keeps spending until the feed updates and Microsoft re-reviews.
| Reason | Direction of divergence |
|---|---|
| Feed refresh timing. Microsoft availability lags live stock by a feed cycle. | Ours flags it sooner than Microsoft marks it unavailable |
| Backorder / continue-selling SKUs. Zero quantity but still sellable. | Ours can over-count unless backorder logic is set |
| Multi-variant offers. One ad may cover several variants where only some are out of stock. | Partial matches may differ |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
shopify.total_revenue | Flagged SKUs should show near-zero commerce revenue while their ads ran | A flagged SKU with revenue means it was sellable via backorder or the stock feed lagged. |
google_ads.gads_wasted_spend | The same SKUs are usually advertised on Google Shopping too; both feeds share the stockout | Different feed schedules mean the two platforms may flag the same SKU at slightly different times. |