Skip to main content
Card class: Cross-ChannelCategory: Ecommerce Platform
Spend burning on SKUs that can’t convert. The single highest-ROI ‘pause’ recommendation in the AI OS.

At a glance

The £/$ ad spend in the last 24h pointed at Shopify variants that are currently out of stock (Product.totalInventory <= 0 AND Product.status = ACTIVE). The single highest-ROI “pause” recommendation Vortex IQ ever surfaces, every dollar shown here is wasted CPC.
What it countsSUM(ad_spend WHERE landing_page_sku IN (Shopify OOS variants) OR shopping_feed_sku IN (Shopify OOS variants)) for the last 24h. Joined live across Google Ads, Meta Ads, TikTok Ads, and Amazon Ads connectors.
What “OOS” means hereSame definition as Inventory Alerts, Product.totalInventory <= 0 AND Product.status = ACTIVE. Negative-stock variants count, draft / archived products don’t.
VAT / tax treatmentAd spend is tracked excluding VAT (most ad platforms invoice ex-VAT to merchants). Display matches the platform’s billing convention.
ShippingNot applicable, this is ad spend, not order revenue.
DiscountsNot applicable.
RefundsNot applicable to spend; an ad-platform-issued credit (rare) doesn’t change historical spend tracked here.
Cancelled / voided ordersNot applicable, the card measures spend not orders.
CurrencyMulti-platform spend in mixed currencies, summed without FX conversion. Display in the workspace’s display currency, treated as approximate for multi-platform multi-currency stores.
Channels / sourcesAll connected ad platforms contribute. Google Ads (Shopping + Performance Max + Search), Meta Ads (Catalogue Sales + DPA), TikTok Shop ads, Amazon Sponsored Products. Affiliate / influencer / email channels are not included (no ad spend data).
SKU matchingMatch by gtin, mpn, or productHandle between the ad platform’s product feed and Shopify’s product index. Mismatches due to differing SKU naming are common, treat the figure as an UNDERESTIMATE rather than overestimate.
Time windowRT (rolling last 24h, recomputed every 60 minutes)
Alert trigger>$0/day spend on OOS SKUs, the card is loud whenever even a small daily spend is detected against OOS variants
Rolesowner, marketing, finance

Calculation

Calculated automatically from your Shopify data. 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 fashion brand on Shopify Plus running Google Shopping, Performance Max, and Meta Catalogue Sales. Reading taken at 11:30 GMT on 12 Apr 26. Total daily ad spend across all platforms is roughly £4,200.
PlatformTotal daily spendSpend on OOS SKUsShareNote
Google Shopping£1,400£31222.3%Linen-shirt-medium-cream sold through 2 days ago, feed still active
Performance Max£1,800£1478.2%PMax automation slow to drop OOS SKUs from rotation
Meta Catalogue Sales£750£19826.4%Meta product feed last synced 18h ago, OOS variants still active
TikTok Shop ads£250£00%TikTok feed sync is hourly, fast catch-up
Total£4,200£65715.6%The card reads £657/day burning
The card reads £657 / day spend on OOS SKUs, projected at roughly £20,000 / month if unchecked. Six things to notice:
  1. The £657 is upper-bound wasted spend. Some of those clicks generate “view OOS” tracking events that feed Google’s signal layer (improving future bidding), and a fraction of customers click through and buy a different SKU on the same store. So the true wasted figure is closer to £400 to £500. Still material.
  2. Meta is the worst offender. Meta’s catalogue sync frequency is configurable but defaults to every 24 hours; merchants who haven’t tuned it down to hourly bleed the most spend on stale OOS data. Setting Commerce Manager → Catalog → Settings → Update schedule to “Hourly” closes most of the gap.
  3. Google PMax is structurally hard to fix. Performance Max is an automated campaign type with limited SKU-level controls. Google’s documented best-practice is to remove OOS items from the Merchant Center feed (not the campaign), which propagates to PMax within 6 to 12 hours. Manual SKU-level negative bidding doesn’t work with PMax.
  4. TikTok Shop’s hourly sync is best-in-class. TikTok’s tight integration with Shopify means the feed reflects OOS within 60 minutes. This is increasingly true of the newer ad platforms; legacy Google / Meta integrations lag.
  5. The cross-channel value compounds. The £657 / day saved here is roughly 15% of total ad spend. Reallocated to in-stock high-velocity SKUs, the same £657 produces incremental £2,000 to £3,500 / day in revenue (typical 3 to 5x ROAS for top SKUs). The total opportunity is closer to £3,000 / day, not £657.
  6. The card is a recommendation, not an automatic pause. Vortex IQ Mind can auto-pause OOS ads via the Google Ads / Meta Ads connectors if the merchant has opted in (Settings → Mind → Auto-actions). Most merchants prefer a manual review step; the auto-pause feature is conservative and only triggers above £100/day waste.

Sibling cards merchants should reference together

This card is the highest-ROI cross-channel pair. Triage and prevent with these:
CardWhy pair it with Active Ads on OOS SKUs
Products with Zero/Negative StockThe OOS source. This card filters that list down to “OOS variants that are currently being advertised”.
Top Products by RevenueCombine: a top-50 revenue SKU on the OOS-with-ads list is the highest priority. Pause + reorder.
Stock vs SalesPredicts which non-OOS variants will go OOS in the next 7 days. Pause ads pre-emptively or reorder pre-emptively.
Catalogue Drift vs AmazonThe other catalogue-data-quality card. OOS-on-Amazon while in-stock-on-Shopify (or vice versa) is a parallel waste.
Google Ads CPCThe unit economics. A high-CPC OOS SKU is more wasteful per impression than a low-CPC one.
Meta Ads ROASThe reverse view. A campaign with collapsed ROAS often correlates with OOS landing pages.
Conversion RateWhen this card is high, conversion rate suffers (clicks landing on OOS PDPs don’t convert). The two move together.
Revenue at Risk (live incident)During an outage, ad spend keeps running while revenue stops. Pair to surface compound waste during incidents.

Reconciling against the vendor’s own dashboard

Where to look in Shopify Admin: Shopify Admin doesn’t surface this cross-channel view, it has no native visibility into ad-platform spend. The closest manual reconstruction is:
  • Products → Inventory → filter Available: 0 or less, Status: Active. Cross-reference each SKU manually against Google Merchant Center, Meta Commerce Manager, and TikTok Seller Center.
  • Marketing → Campaigns (Shopify Marketing) → for ad campaigns set up via Shopify’s native ad integrations, the campaign-level dashboard shows status. Doesn’t surface OOS-feed warnings.
Other views that look related but aren’t:
  • Google Merchant Center → Diagnostics: shows feed-level errors, including “out of stock” warnings on individual products. This is the upstream source for Google’s portion of the figure but doesn’t show spend implications, only feed health.
  • Meta Commerce Manager → Catalog → Diagnostics: same as Google Merchant Center but for Meta. Shows OOS warnings; doesn’t show £ wasted.
  • Apps like AdScale / NestScale: show ad performance per SKU. Useful for ROAS analysis but don’t cross-reference against live Shopify inventory.
Why our number may legitimately differ from a manual reconciliation:
ReasonDirectionWhy
SKU matching gapsOurs lower (underestimate)Match by gtin / mpn / productHandle works for ~90% of catalogues. Brands with non-standard SKU naming, white-label items, or custom feed transformations may have unmatched SKUs that contribute spend but aren’t counted on this card.
Sync lagOurs lower (transient)Inventory updates webhook into Vortex IQ within 5 to 15 minutes. A SKU that just went OOS in the last hour but is still being advertised may not show on this card yet.
Ad platform sync lagOurs lower (transient)Google / Meta / TikTok feeds sync at platform-determined cadence (1 to 24 hours). Spend continues to accrue against OOS SKUs even after Shopify reflects the OOS state, until the platform’s next feed pull.
Multi-currencyApproximateSpend in mixed currencies summed without FX. The displayed figure is order-of-magnitude correct.
Click-vs-impressionSpend basis onlyThe card measures spend (clicks × CPC). It doesn’t penalise impressions on OOS items beyond what they cost in spend. Brands paying CPM rather than CPC see the spend but not the brand-image cost of OOS impressions.
Cross-connector reconciliation: This card IS a cross-connector reconciliation by design. The relationships:
CardExpected relationshipWhat causes legitimate divergence
shopify.inventory_alertsThis card is a subset of OOS variants (those that are also being advertised)Variants on inventory_alerts but not on this card simply have no active ads, no waste, no concern.
google_ads.google_oos_keywordsGoogle portion overlapsThe Google Ads connector’s own OOS view should reconcile with the Google portion of this card. Persistent gaps indicate SKU-mapping issues.
facebook.fb_oos_productsMeta portion overlapsSame as Google.
amazon_ads.amazon_oos_skusAmazon portion overlaps, but distinct inventoryAmazon ASINs may be in stock on Amazon while OOS on Shopify; this card uses Shopify’s inventory as truth, so Amazon OOS detected by Amazon’s own connector may not appear here.

Known limitations / merchant FAQs

Why is my figure higher than expected? Three usual causes:
  1. Meta catalogue sync is on the daily default. Meta will keep advertising OOS SKUs until the next sync. Change Commerce Manager → Catalog → Settings → Update schedule to “Hourly” (or via API for real-time).
  2. Performance Max can’t be SKU-paused. PMax is automated and the only way to stop it advertising an OOS SKU is to remove the SKU from the Merchant Center feed (via Shopify’s Google Channel app: Channels → Google → Manage product status). Manual campaign-level negative bidding doesn’t work.
  3. A long-tail SKU you forgot about. Brands with 5,000+ active SKUs often have hundreds of low-velocity items being advertised by automated bidding strategies. Most of the £ here is concentrated in 5 to 20 SKUs; sort the breakdown by spend to find them.
Why is my figure zero when I know products are OOS and ads are running? Three causes:
  1. No ad-platform connector connected. This card needs at least one of Google Ads, Meta Ads, TikTok Ads, or Amazon Ads connected. Connect in Settings → Connectors.
  2. SKU mapping gap. If your ad-platform feed uses different SKU naming than Shopify, Vortex IQ can’t join them. Check Settings → Connectors → Google Ads → SKU mapping and confirm the join key is correct.
  3. The OOS SKUs aren’t in any active campaign. A SKU OOS in the catalogue may not have an active ad pointing at it (you’ve already paused). The card correctly shows zero for these.
Does this include Shopify Audiences spend? Shopify Audiences is Shopify’s own ad-buying layer (Plus only), it puts spend through Meta and Google on the merchant’s behalf. If you have Shopify Audiences enabled, the spend appears in Meta / Google Ads as normal and IS counted by this card. My ad platform shows different OOS SKUs to Shopify. Whose truth do I use? Shopify is the truth source for inventory; the ad platforms have their own (slightly stale) copy via the product feed. This card uses Shopify as authoritative. If your ad platform thinks something is in stock when Shopify says OOS, the card flags it (because spend is happening on the OOS Shopify variant). The reverse case (ad platform thinks OOS but Shopify says in-stock) suggests a feed sync problem, see Catalogue Drift vs Amazon. Should I auto-pause OOS ads? Conservatively, yes for high-spend SKUs (>50/daywaste).Cautiouslyforlowspendones,theautopausefeaturehasasmallrecoverydelaywhentheSKUrestocks(typically5to30minutes),andforfastmovingfashionthatcanmeanmissingthebackinstockbuyingwindow.VortexIQMindsautoactiondefaultis"autopauseOOSSKUsspending>50/day waste). Cautiously for low-spend ones, the auto-pause feature has a small recovery delay when the SKU restocks (typically 5 to 30 minutes), and for fast-moving fashion that can mean missing the back-in-stock buying window. Vortex IQ Mind's auto-action default is "auto-pause OOS SKUs spending >100/day, manual review for 20to20 to 100/day”. Configurable in Settings → Mind → Auto-actions. Why does Performance Max keep coming back? Because PMax doesn’t surface SKU-level controls. The only reliable way to stop PMax advertising an OOS SKU is to remove it from the Merchant Center feed. Vortex IQ Mind will write the SKU’s availability field to “out_of_stock” in the feed (via the Shopify Google Channel app or direct Merchant Center API), which propagates to PMax within 6 to 12 hours. If you’ve connected the merchant center directly, this happens automatically; if not, the card surfaces the recommendation but you act manually. Multi-currency: why is the figure in £/$ when my ad platforms bill in different currencies? Spend across platforms is summed without FX conversion and displayed in the workspace’s display-currency setting. Per-platform per-currency views are on the roadmap. For tight reconciliation, drill into each platform’s connector dashboard for native-currency figures. Action playbook when this card alerts:
  1. Sort the OOS-with-ads list by daily spend (descending). The top 5 to 10 SKUs almost always represent 80% of the waste.
  2. For each top SKU: pause manually via the ad platform if spend > £50/day, or accept Vortex IQ Mind’s auto-pause recommendation.
  3. For Performance Max specifically: edit the Google Merchant Center feed to mark the SKU out_of_stock (Shopify Google Channel app does this automatically if connected).
  4. For Meta: change Commerce Manager catalog sync to hourly to prevent recurrence.
  5. Pair with the OOS SKU’s reorder lead time. If reorder is 7 to 14 days out, just pause. If reorder is 1 to 3 days out, consider keeping ads running and accepting the waste, sometimes back-in-stock customer-trust signals are worth more than the wasted CPC.
  6. Set up an automatic “back in stock” trigger to resume ads when inventory returns, this is in Settings → Mind → Auto-actions and runs by default if auto-pause is enabled.

Tracked live in Vortex IQ Nerve Centre

Active Ads on Out-of-Stock SKUs is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.