Skip to main content
Card class: HeroCategory: Ecommerce Platform
Top-selling SKUs deserve proportional ad spend. Misalignment = under-amplified winners.

At a glance

Whether your fastest-selling WooCommerce SKUs are getting ad spend in proportion to the revenue they drive. The card joins Woo SKU sales velocity against an ads connector (Google Ads, Meta Ads) spend per product and flags top sellers that receive a disproportionately small share of the budget. Under-amplified winners are the highest-confidence growth lever you have: products already proven to convert, starved of reach.
What it countsPer top-velocity SKU: revenue_share = sku_revenue / total_sku_revenue versus spend_share = sku_ad_spend / total_ad_spend. A SKU is flagged when its spend share is far below its revenue share (the default flag fires for top sellers receiving <10% of ad spend relative to their revenue weight).
Data sources (BOTH required)WooCommerce side: order line items from GET /wp-json/wc/v3/orders carrying product_id / variation_id / sku, aggregated to per-SKU units and revenue. Ads side: Google Ads shopping_performance_view (spend per product/item id) and/or Meta Marketing API ad-spend by catalogue product.
How the join worksBy SKU / product id. The Woo SKU is matched to the ad platform’s item id (the value pushed to Google Merchant Center / Meta catalogue, typically the Woo SKU or product id via the Google Listings & Ads / Meta for WooCommerce plugin). A SKU must exist on both sides to be compared.
VAT / tax treatmentWoo revenue is tax-inclusive line-item revenue. Ad spend is in ad-account currency, typically pre-tax. The comparison is on shares, so absolute tax treatment does not distort the ratio.
Status filterVelocity from completed + processing orders only. Ad spend from enabled campaigns/ad groups.
RefundsVelocity is gross of refunds; a high-velocity-high-refund SKU is worth investigating before pouring spend in (cross-check refund cards).
CurrencyAd spend in ad-account currency, Woo revenue in store currency. The join is by SKU and the comparison is share-vs-share, so it is currency-agnostic; only the displayed spend figure needs FX.
Channels / sourcesWeb-channel ads only. Marketplace ad spend (Amazon Ads) is out of scope for this card; see the Amazon Ads cards for that.
Self-hosted vs managed-WooVelocity computation is identical on any host. Self-hosted sync lag can briefly understate today’s velocity; the ad side is unaffected by Woo host type.
Time window30D
Alert triggertop sellers receiving <10% of ad spend (relative to their revenue weight), driven by sentiment_key: wc_xc_top_skus_vs_ad_spend
Rolesowner, marketing, finance

Calculation

Calculated automatically from your WooCommerce 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 US homewares brand on managed-Woo running Google Shopping (via Google Listings & Ads) and Meta Advantage+. 30-day window 14 Mar 26 to 12 Apr 26. Total tracked SKU revenue 467,200;totalproductadspend467,200; total product ad spend 61,000. Here are five SKUs.
SKU30D revenueRevenue shareAd spendSpend shareFlag
MUG-MUSH-01$52,40011.2%$1,9003.1%Under-amplified winner
TWL-WAFL-02$38,1008.2%$1,2002.0%Under-amplified winner
LMP-BRASS-04$21,6004.6%$9,40015.4%Over-spent vs velocity
VAS-GLS-03$14,9003.2%$8,80014.4%Over-spent vs velocity
PLT-CERA-07$12,3002.6%$7001.1%Under-amplified winner
Four things to notice:
  1. MUG-MUSH-01 is the textbook under-amplified winner. It earns 11.2% of revenue on 3.1% of spend, a proven converter starved of budget. Shifting spend toward it is lower-risk than launching new ads, the product has already demonstrated demand. It and the other two flagged rows are why the alert fires.
  2. LMP-BRASS-04 and VAS-GLS-03 are the mirror image. They absorb 15.4% and 14.4% of spend for 4.6% and 3.2% of revenue. The card surfaces both ends of the misalignment; the budget freed from over-spent SKUs is exactly what funds the under-amplified winners.
  3. The join is by SKU / item id. Each Woo SKU is matched to its Google / Meta item id through the feed plugin. A SKU with a blank or mismatched id cannot be compared and silently drops out of the analysis, fix Products Missing SKU so the picture is complete.
  4. Check refunds before reallocating. Velocity here is gross of refunds. If MUG-MUSH-01 had a 25% return rate its true net velocity would be lower, and pouring spend in would amplify the returns too. Cross-reference Top Refunded Products before acting.

Sibling cards merchants should reference together

CardWhy pair it with this card
WC Top Products by RevenueThe revenue ranking this card weighs spend against. Your top sellers are the rows that matter most here.
WC Ad Spend on OOS ProductsThe other ad-waste angle: spend on products that cannot convert. Pair to clean spend at both ends.
WC Top Refunded ProductsA high-velocity SKU with a high refund rate is a false winner; check before reallocating budget into it.
WC Out of Stock ProductsDo not amplify a winner that is about to sell out; pair to confirm stock can support the spend.
WC Gross MarginVelocity is not the same as profit. Weigh ad spend by margin, not just revenue, before reallocating.
WC Conversion RateHigh velocity plus high conversion is the safest place to add budget.

Reconciling against WooCommerce

This is a cross-channel card. It requires BOTH connectors. For this card to populate you must have both the WooCommerce connector and an ads connector (Google Ads, Meta / Facebook Ads) connected in the same Vortex IQ workspace. WooCommerce supplies the per-SKU sales velocity; the ads connector supplies the per-product spend. With only one side connected the card cannot run the join and renders empty. How the two sides are joined:
Join keyWooCommerce sideAds side
SKU / item idsku on order line items / productItem id in Google Merchant Center / Meta catalogue (usually the Woo SKU or product id pushed by the feed plugin)
Revenueline-item revenue from completed + processing ordersnot used (Woo is source of truth for revenue)
Spendnot present on Woospend per product from the ad platform
Where to verify each side:
  • WooCommerce velocity: WP Admin → WooCommerce → Reports → Orders → Sales by product, or the Analytics → Products report for per-SKU revenue and units.
  • Ad spend per product: Google Ads → Reports → Shopping → Item id (spend column); Meta Ads Manager → breakdown by product / catalogue.
  • Feed mapping: WP Admin → the Google Listings & Ads or Meta for WooCommerce plugin shows how Woo SKUs map to item ids.
Why rows may be missing or differ from a manual comparison:
ReasonEffect
One connector not connected. Only Woo or only the ads connector connected.Card empty
SKU / item-id mismatch. Woo SKU differs from the feed item id, or the SKU is blank.SKU drops out of the comparison (under-reports)
Attribution model. Ad platforms attribute revenue differently (last-click, data-driven). This card uses Woo velocity as the revenue truth, not the ad platform’s attributed revenue.Per-SKU revenue differs from the ad console’s
Currency / FX. Spend in ad-account currency, revenue in store currency. Shares are currency-agnostic; the displayed spend uses end-of-day FX.Display only
Refund timing. Velocity is gross of refunds; a refund landing in-window does not reduce velocity here.Velocity can overstate net demand
Timezone. Woo on WP-site timezone, ads on account timezone, Vortex IQ on UTC. Boundary orders/spend shift a day.Boundary effects
Sync lag. Self-hosted Woo can briefly understate recent velocity.Brief, self-resolving
Cross-connector reconciliation: the revenue side should match Top Products by Revenue for the same SKUs and window. The spend side should match the ad platform’s per-item spend (allow for FX and attribution-window differences). If a known top seller is missing entirely, suspect a SKU / item-id mismatch in the feed.

Known limitations / merchant FAQs

Why is this card empty? Because it joins two connectors. You need both the WooCommerce connector and an ads connector (Google Ads or Meta / Facebook Ads) connected in the same Vortex IQ workspace. With only one side the card cannot compare velocity to spend. The second common cause is a SKU / item-id mismatch in your product feed, so the join finds nothing to align. What does “under-amplified winner” actually mean? A SKU whose share of revenue is much larger than its share of ad spend, for example earning 11% of revenue on 3% of budget. It is a product that already converts well but is not getting proportional reach, usually the safest place to add spend. Should I just move all my budget to the flagged winners? No. Weigh three things first: stock (do not amplify a SKU about to go out of stock, see Out of Stock Products), refunds (a high-return SKU is a false winner, see Top Refunded Products), and margin (a high-revenue low-margin SKU may not deserve more spend, see Gross Margin). Why does my ad console show different per-SKU revenue? Ad platforms report their own attributed revenue (last-click or data-driven), which can differ substantially from actual store revenue. This card uses WooCommerce velocity as the revenue truth and the ad platform only for spend, so the two will not match by design. Does this include Amazon Ads spend? No. This card covers web-channel ads (Google Ads, Meta Ads). Marketplace ad spend is handled by the Amazon Ads cards. A SKU can be under-amplified on web ads while well-funded on Amazon, or vice versa. A top seller is missing from the analysis, why? Almost always a SKU / item-id mismatch. If the Woo SKU is blank or differs from the value in your Google Merchant Center / Meta catalogue feed, the SKU cannot be matched to its spend and drops out. Fix Products Missing SKU and verify the feed mapping. Can I change the 10% threshold? Yes, the flag threshold is configurable per profile in the Sensitivity tab. Tune it to how aggressively you want to surface spend/velocity misalignment for your catalogue size and budget.

Tracked live in Vortex IQ Nerve Centre

Top-Velocity SKUs vs Ad Spend is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce 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.