> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Active Ads on Out-of-Stock SKUs, Shopline

> Spend burning on SKUs that can't convert. The single highest-ROI 'pause' recommendation in the AI OS. How to read it, why it matters, and how to act on it.

**Metrics type:** [Cross-Platform Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> 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 counts**          | `SUM(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 data**             | Shopline 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.                                                                            |
| **Coverage**                | Google 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 definition**          | `inventory_quantity <= 0 AND continue_selling_when_out_of_stock = false`. Backorder-enabled variants are excluded since they convert.                                                                                                               |
| **Currency**                | Converted to merchant reporting currency at daily-close FX.                                                                                                                                                                                         |
| **Refunds / cancellations** | Not relevant (no order-level data).                                                                                                                                                                                                                 |
| **Time window**             | `RT` (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.                                                                                  |
| **Sentiment**               | None directly; the dollar value is the signal.                                                                                                                                                                                                      |
| **Roles**                   | owner, marketing, finance.                                                                                                                                                                                                                          |
| **Only when**               | `has_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`](/nerve-centre/kpi-cards/shopline/zero-negative-stock-variants)).

| Ad platform                  | OOS SKUs being advertised | Daily spend on OOS SKUs |
| ---------------------------- | ------------------------- | ----------------------- |
| Google Performance Max       | 12                        | HK\$ 1,140              |
| Facebook Advantage+ Shopping | 6                         | HK\$ 760                |
| Facebook dynamic retargeting | 4                         | HK\$ 240                |
| **Total**                    | **18 distinct SKUs**      | **HK\$ 2,140 / day**    |

```text theme={null}
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.** 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 HK$ 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 \~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

| Card                                                                                    | Why it matters next to ads-on-OOS   | What the combination tells you                                                                      |
| --------------------------------------------------------------------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------- |
| [Inventory Alerts (OOS)](/nerve-centre/kpi-cards/shopline/zero-negative-stock-variants) | The OOS source.                     | The OOS variant count is the universe; this card is the actionable subset (those being advertised). |
| [Top Products by Revenue](/nerve-centre/kpi-cards/shopline/top-products-by-revenue)     | Identify hero SKUs going OOS.       | If hero SKUs are in the OOS-with-ads list, the lost revenue is amplified.                           |
| [Days-of-Cover by SKU](/nerve-centre/kpi-cards/shopline/days-of-cover-by-sku)           | Forward-looking.                    | Use to predict which currently-in-stock SKUs will join the OOS-with-ads list next.                  |
| [Total Revenue](/nerve-centre/kpi-cards/shopline/total-revenue)                         | Channel impact.                     | Pausing OOS ads frees budget; the net revenue lift shows in this card 2 to 4 weeks later.           |
| [Conversion Rate (where available)](/nerve-centre/shopline/shopline_conversion_rate)    | Efficiency.                         | Ad-on-OOS pulls conversion rate down; pausing should lift it materially.                            |
| [OOS Spike Alert](/nerve-centre/kpi-cards/shopline/oos-spike-alert)                     | Real-time anomaly.                  | A sudden OOS spike + active ads = ad-spend bleed accelerating; act fast.                            |
| [Catalogue Drift vs Amazon](/nerve-centre/kpi-cards/shopline/catalogue-drift-vs-amazon) | Adjacent cross-platform diagnostic. | Both cards reveal cross-system inefficiencies that are invisible inside any single dashboard.       |
| [Shopline Health Score](/nerve-centre/kpi-cards/shopline/shopline-health-score)         | Composite.                          | 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:**

| Reason                        | Direction               | Why                                                                                                                                                                           |
| ----------------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ad-platform spend lag**     | Ours occasionally lower | Google Ads spend updates hourly; Meta updates every 6 hours; Amazon Ads daily. Our spend numbers are last-reported, not real-time.                                            |
| **Match precision**           | Ours stricter           | We require exact SKU/GTIN match; manual reviews sometimes accept loose name matches.                                                                                          |
| **Backorder exclusion**       | Ours stricter           | We exclude backorder-enabled variants; manual reviews include them.                                                                                                           |
| **Currency normalisation**    | Ours unified            | We convert all platforms to a common reporting currency; manual reviews may leave each platform in its native currency.                                                       |
| **OOS at variant vs product** | Ours stricter           | We 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-warehouse**           | Marginal                | Total 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.

***

<details>
  <summary><em>Documentation cross-reference (for agencies running multiple platforms)</em></summary>

  * [`shopify.shopify_xc_ads_on_oos`](/nerve-centre/kpi-cards/shopify/active-ads-on-out-of-stock-skus)
  * [`bigcommerce.bigcommerce_xc_ads_on_oos`](/nerve-centre/bigcommerce/bigcommerce_xc_ads_on_oos)
  * [`adobe_commerce.adobe_xc_ads_on_oos`](/nerve-centre/kpi-cards/adobe-commerce/active-ads-on-out-of-stock-skus)
</details>

## 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 $0 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`](/nerve-centre/kpi-cards/shopline/low-stock-skus) 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
