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

Daily ad spend running on SKUs that are out of stock on Shopline. The single highest-ROI “pause now” recommendation the AI OS makes; every dollar of this is provably wasted because the underlying product cannot convert. Joined across Google Ads, Facebook Ads, Amazon Ads, and (where connected) TikTok Ads.
What it countsSUM(active_ad_groups.daily_spend WHERE primary_sku.inventory_quantity <= 0). Returned in the merchant’s reporting currency, daily run-rate at snapshot time.
Source dataShopline product/variant inventory joined to ad-platform product_ad or dynamic_ad records by SKU/ASIN/product_id. Spend is the most recent 24h actual spend per ad.
CoverageGoogle Ads (Performance Max, Shopping), Facebook Ads (Advantage+ Shopping, dynamic-product retargeting), Amazon Ads (Sponsored Products, Sponsored Brands), TikTok Ads (Catalog ads). Plain text/image ads not tied to a product feed are excluded.
Match key(1) SKU code in the ad-platform feed, (2) GTIN, (3) Shopline product_id where the ad platform supports it.
OOS definitioninventory_quantity <= 0 AND continue_selling_when_out_of_stock = false. Backorder-enabled variants are excluded since they convert.
CurrencyConverted to merchant reporting currency at daily-close FX.
Refunds / cancellationsNot relevant (no order-level data).
Time windowRT (5-minute polling on inventory; ad-platform spend updated hourly per platform refresh cadence).
Alert trigger>$0/day spend on OOS SKUs. The hero-tier threshold reflects “any spend here is wasted”; some merchants tighten the threshold to >$10/day to ignore micro-spend.
SentimentNone directly; the dollar value is the signal.
Rolesowner, marketing, finance.
Only whenhas_google_ads_sibling OR has_amazon_ads_sibling OR has_facebook_ads_sibling OR has_tiktok_ads_sibling.

Calculation

Calculated automatically from your Shopline data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

An APAC fashion brand running Hong Kong Shopline + Google Ads (Performance Max) + Facebook Ads (Advantage+), snapshot at 09:00 HKT on 27 Apr 26. The brand runs a HK$ 65,000 / month combined ad budget across Google and Meta. Their inventory has 47 OOS variants (see shopline_inventory_alerts).
Ad platformOOS SKUs being advertisedDaily spend on OOS SKUs
Google Performance Max12HK$ 1,140
Facebook Advantage+ Shopping6HK$ 760
Facebook dynamic retargeting4HK$ 240
Total18 distinct SKUsHK$ 2,140 / day
Daily spend on OOS:    HK$ 2,140
Monthly run-rate:      HK$ 64,200 (~99% of total ad budget; alarming concentration)
30-day waste estimate: HK$ 64,200
What it means. HK2,140/dayofadspendisbeingspentonSKUsthatcannotconvert.Over30daysthatis HK 2,140 / day of ad spend is being spent on SKUs that cannot convert. Over 30 days that is ~HK 64,200, roughly the brand’s entire monthly ad budget pointed at impossible inventory. This is overstated for narrative effect (real merchants typically have 5 to 25% of spend on OOS, not 99%); a typical merchant of this size would see HK200toHK 200 to HK 800 / day here. The action. Three concrete fixes available within an hour:
  1. Pause the 18 ads at the SKU/variant level, immediate stop on HK$ 2,140 / day waste.
  2. Configure the ad-platform OOS auto-pause integration (Google offers it natively; Meta needs a third-party feed-management tool). Future OOS variants get auto-paused.
  3. Reroute the freed budget to in-stock hero SKUs that are currently spend-constrained. Expected ROAS lift: ~30 to 50% of the previously-wasted spend converts at normal margins.
For this merchant’s specific case the saved ~HK64k/monthwould,redirectedtoinstockSKUsatthebrandstypical3.2xROAS,produce HK 64k / month would, redirected to in-stock SKUs at the brand's typical 3.2x ROAS, produce ~HK 205k of incremental revenue. That is a meaningfully bigger lever than any single channel-mix or pricing optimisation.

Sibling cards merchants should reference together

CardWhy it matters next to ads-on-OOSWhat the combination tells you
Inventory Alerts (OOS)The OOS source.The OOS variant count is the universe; this card is the actionable subset (those being advertised).
Top Products by RevenueIdentify hero SKUs going OOS.If hero SKUs are in the OOS-with-ads list, the lost revenue is amplified.
Days-of-Cover by SKUForward-looking.Use to predict which currently-in-stock SKUs will join the OOS-with-ads list next.
Total RevenueChannel impact.Pausing OOS ads frees budget; the net revenue lift shows in this card 2 to 4 weeks later.
Conversion Rate (where available)Efficiency.Ad-on-OOS pulls conversion rate down; pausing should lift it materially.
OOS Spike AlertReal-time anomaly.A sudden OOS spike + active ads = ad-spend bleed accelerating; act fast.
Catalogue Drift vs AmazonAdjacent cross-channel diagnostic.Both cards reveal cross-system inefficiencies that are invisible inside any single dashboard.
Shopline Health ScoreComposite.Wasted ad spend on OOS drags the health score significantly when above $0.

Reconciling against the vendor’s own dashboard

Where to look: There is no single vendor view of this; the data is split across two systems. The closest manual workflow:
Shopline Admin -> Inventory -> Variants (filter to OOS, export SKU list) Google Ads / Meta Ads Manager (export active campaigns with product feeds, cross-reference SKU list)
Even disciplined teams typically only run this comparison weekly; the card runs every 5 minutes. Why our number may legitimately differ from a manual comparison:
ReasonDirectionWhy
Ad-platform spend lagOurs occasionally lowerGoogle Ads spend updates hourly; Meta updates every 6 hours; Amazon Ads daily. Our spend numbers are last-reported, not real-time.
Match precisionOurs stricterWe require exact SKU/GTIN match; manual reviews sometimes accept loose name matches.
Backorder exclusionOurs stricterWe exclude backorder-enabled variants; manual reviews include them.
Currency normalisationOurs unifiedWe convert all platforms to a common reporting currency; manual reviews may leave each platform in its native currency.
OOS at variant vs productOurs stricterWe treat each variant separately; if XS is OOS but M is in-stock and the ad targets the parent product, our card weights by the OOS variants’ share of the parent’s velocity.
Multi-warehouseMarginalTotal inventory across all warehouses is the OOS test; merchants who manually check single-warehouse stock can disagree with our count.
Internal identity: shopline_xc_ads_on_oos = SUM(active_ad.daily_spend) for ads where primary_sku.inventory_quantity <= 0 AND NOT continue_selling_when_out_of_stock The drill-down view shows per-ad / per-SKU breakdown ranked by daily spend.

Known limitations / merchant FAQs

Why is the alert at >$0? Because every dollar here is provably wasted; there is no acceptable level. The alert is meant to be loud and constant until the merchant fixes the integration. My count says $200 / day but I have hundreds of OOS variants. Why so low? Because most OOS variants are not in active ad campaigns. The card only counts spend on SKUs that are both OOS and being advertised. Tail OOS variants that nobody is advertising do not contribute. Can I auto-pause ads on OOS variants? Yes. Google Ads supports it natively (set inventory filter on Performance Max). Meta requires a third-party feed-management tool (Channable, Feedonomics) that pauses dynamic ads when feed shows OOS. Amazon Ads needs manual or API-driven pause. The card surfaces the underlying problem; the auto-pause is a separate integration the merchant chooses. My ad spend on OOS dropped to 0thenjumpedbackto0 then jumped back to 200 the next day. What happened? Almost always a new SKU went OOS and was already in an active ad campaign. The card detects it on next refresh; the merchant should pause the new offender immediately or rely on auto-pause if configured. Does this include retargeting ads? Yes if the retargeting ad is product-specific (dynamic product ads); no if it is a generic brand-awareness retargeting ad with no product reference. The card only counts spend that is provably tied to a specific SKU. My ad agency manages the campaigns; how do I get them to act on this? Share the drill-down view URL with the agency; the per-SKU per-ad breakdown is what they need. Agencies typically respond within 24 hours when shown the dollar waste in clear terms; the card is designed to make the conversation easy. Why do TikTok Ads sometimes not show even though I run them? TikTok Ads’ product-feed integration is newer and less standardised. If TikTok’s feed does not include SKU-level inventory linkage, our matcher cannot tie ads to OOS status; the card excludes that platform’s spend rather than guess. Manual review is needed for TikTok-heavy stacks. Should I worry about ads on low-stock (not OOS) SKUs? Yes, but it is a separate card. Low-stock variants will OOS soon; pre-emptive ad-pause is in shopline_low_stock_alerts cross-referenced with the same ad data. This card is OOS-only. Does the auto-pause feature break when I restock? Configured well, no; the auto-pause re-enables the ad on next inventory refresh. Configured badly, yes; some merchants set the pause condition manually and forget to set the resume condition. Always set both. Why does this matter more on Shopline than other platforms? It does not, definitionally. Shopline-specific note: APAC merchants often run aggressive paid social on Sundays, when warehouses are closed; Sunday OOS combined with peak ad spend creates a spike in this card every Sunday afternoon if not managed.

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