Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

At a glance

Slow-moving SKUs ranked from lowest revenue / lowest velocity over 90 days. The catalogue-cleanup view, SKUs costing storage, photography, supplier overhead, and merchandising attention without contributing meaningful revenue. The single highest-leverage simplification card.
What it countsSUM(line_item.total_inc_tax) GROUP BY product_id over 90 days, ranked ascending (lowest first). Products with zero sales appear at the top of the slow-mover list; ranks 1-100 are typical cull candidates.
VAT / tax treatmentTax-inclusive (total_inc_tax).
ShippingExcluded at line-item level.
DiscountsAlready deducted.
RefundsNot deducted. A SKU with refunds may rank lower than its order count suggests; cross-check refund history.
Cancelled / voided ordersIncluded in gross.
CurrencyMulti-currency without FX. Filter by currency for clean comparison.
Channels / sourcesAll channels contribute. A SKU showing zero sales here could still be sold on a marketplace not connected to BC’s index; verify before culling.
Variants vs productsDefault product-level. A multi-variant product with one healthy variant and four dead variants shows as healthy at product level; toggle to variant level to identify dead variants for individual cull.
B2B Edition noteB2B-only SKUs may show as zero-revenue in retail-only views even if active on the B2B portal. Filter by channel before culling.
Inventory costEach slow-moving SKU represents tied-up working capital + storage cost + photography sunk cost + ongoing sync overhead. The cost of keeping a slow-mover is non-trivial; cull aggressively.
Time window90D (longer window than top SKUs because slow-movers need time to reveal genuine deadness; 30D may surface seasonal-quiet SKUs as dead)
Alert triggerNone on this card directly.
Rolesowner, operations

Calculation

GROUP BY product name ASC SUM(revenue)
  WHERE date BETWEEN [period_start, period_end]

Worked example

A US homewares brand on BigCommerce Pro, 90-day window 14 Feb 26 to 14 May 26. Catalogue size 412 active SKUs.
Rank (slow)SKUProductRevenueUnitsStock valueVerdict
1 (slowest)BWL-CER-LRG-PNK”Large pink ceramic bowl”$001,840(40units×1,840 (40 units × 46)Dead, cull
2VAS-GLS-CYL-AMB”Amber cylindrical glass vase”$481$720Dead-adjacent, cull
3RUG-WLN-RND-NVY”Round navy wool rug”$1891$4,200Slow + tied capital, cull or markdown
4CSH-VLV-32-TAN”Tan velvet cushion 32cm”$3246$560Slow, watch
5TRY-WD-DCO-MNT”Decorative wooden tray, mint”$1563$480Slow, watch
6-50(45 SKUs)(mixed)4,2004,200-1,800 eachmixedmixedRoutine review
51-100(50 SKUs)(mixed)1,8001,800-600 eachmixedmixedAcceptable tail
Cull recommendationTop 30 SKUs (zero or near-zero revenue)$1,800 cumulative28 units$18,400 stuck capitalFree up $18k + simplify catalogue
What’s interesting:
  1. **The pink ceramic bowl at 0revenue/40unitsinstockisthetextbookcullcandidate.0 revenue / 40 units in stock is the textbook cull candidate.** 1,840 of working capital tied up generating zero return for 90 days. Action: 50% markdown for 30 days; if still unsold, write off and donate. Holding dead stock is more expensive than recovering even 30% of cost via markdown.
  2. The navy wool rug at 4,200stockvaluewith4,200 stock value with 189 revenue is the high-stuck-capital example. One unit sold in 90 days; if velocity continues, the 8 remaining units will take 6 years to clear at full price. Action: 40% markdown to clear within 90 days, recover ~$2,500 of capital.
  3. Top-30 cull saves $18k of working capital that can be reinvested in top-50 SKUs that are growing. The opportunity cost of holding dead stock is not the storage fee; it’s the missed reorder of high-velocity hero SKUs.
  4. Variant-level cull within healthy products. A cushion product with 8 colour variants where 5 sell well and 3 don’t, cut the 3 dead variants (saves SKU complexity, photography reshoot avoided, simpler size-chart) without harming the product family.
  5. Be careful with seasonal SKUs. A “summer beach towel” showing zero sales in February is correctly slow but should not be culled if it’s seasonal. Tag seasonal SKUs explicitly to suppress them from the cull recommendation.
Action priority order:
  1. Cull-or-markdown decision for top-10 slow SKUs this week. 30-minute review per SKU; assign action: cull, mark down 40%, or seasonal-hold.
  2. Variant-level review for ranks 11-30 identify and cull individual dead variants without affecting the parent product.
  3. Quarterly cull cadence institutionalise this card as the merchandising team’s quarterly review; never let dead SKUs accumulate beyond 6 months.
  4. Markdown sale event combine 20-30 slow-movers into a “clearance weekend” promotion to clear capital faster.
  5. Supplier negotiation for dead SKUs from key suppliers, negotiate return-to-supplier or trade-credit; for one-off items, write off and donate.

Sibling cards merchants should reference together

CardWhy pair it with Bottom Products
BC Top SKUs RevenueThe mirror view; cull bottom to fund top.
BC Stock vs SalesDead SKUs in this card with high stock values are top markdown priorities.
BC Inventory DistributionHealthy distribution requires not too many slow-movers.
Top ProductsThe active-product ranking.
Product StatusStatus of products (active / draft / archived); slow movers should be archived rather than left active.
BC Refunded ProductsSlow-movers with high refund rate are double-burn: low revenue + customer disappointment. Cull priority.
BC Revenue by Brand / BC Revenue by CategorySlow SKUs concentrated in one brand or category may signal supplier or merchandising issues.
shopify.bottom_productsCross-platform reference.

Reconciling against the vendor’s own dashboard

Where to look in BigCommerce Control Panel: Analytics → Reports → Best Selling Products sorted ascending gives the slow-mover view (BC’s top-selling report can be reverse-sorted). Products → View sorted by total sold ascending is another slow-mover view. There’s no native “dead inventory” report; this card is a meaningful add. Why our number may legitimately differ from BC:
ReasonDirection
Channel coverage. We include all channels by default; BC may default to web only. A SKU with zero web sales but active marketplace sales appears differently.Vortex IQ may show LOWER slow-mover count if multi-channel
Variant rollup. Default product-level. Variant-level cull recommendations require the toggle.Different cardinality
Time-zone. UTC default vs BC’s store time zone.Boundary effects
Recently-launched SKUs. New SKUs may show as zero-revenue simply because they’re new; configure a min-tenure filter to exclude.Vortex IQ may FALSE-POSITIVE new SKUs
Disabled / archived products. Are they included? Configure to exclude already-disabled SKUs from the active slow-mover list.Configuration-dependent
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
google_ads.ga_zero_conversion_skusAd-driven traffic to SKUs with no conversions; overlaps with this card.Ads-spend-to-conversion attribution windows.
google_analytics.ga_zero_view_itemsSKUs with no GA4 product views; correlates with slow movers.GA4 sampling on high-volume catalogues.
The slow-mover view is BC-aligned with Shopify and Adobe Commerce; semantics equivalent.

Known limitations / merchant FAQs

A SKU shows zero revenue but I know it sold last month, why? Common causes: (1) the order was on a marketplace not synced to BC; (2) the order was outside the 90-day window; (3) the order was a B2B portal order outside the channel filter; (4) Channel Manager mapping is broken (sales attributing to a different BC product). Audit before culling. Should I cull seasonal SKUs that show zero in their off-season? No. Tag seasonal SKUs explicitly (BC custom field seasonal = true) and configure the card to suppress them from cull recommendations. A “Christmas tree decoration” showing zero in May is correctly slow but not dead. My new SKU has 30 days of zero sales, cull? Not yet. New SKUs need 60-90 days to validate genuine demand. Cull only after 90 days at zero (or near-zero) with no clear cause (poor photography, hidden in catalogue, mispriced). Configure a min-tenure filter (60 days) to suppress new-SKU false positives. My discontinued-by-supplier SKUs show as slow movers, what should I do? If you have remaining stock, mark down to clear. Once stock = 0, archive the BC product (don’t just disable; archive moves it out of active catalogue). Discontinued-with-stock SKUs are often the fastest cull wins because the supplier won’t take returns and there’s no future demand. Why are my B2B SKUs all showing as slow movers? B2B order frequencies are lower (quarterly vs monthly), so 90-day velocity looks low for B2B. Filter to retail or use the lifetime-velocity view for B2B-relevant analysis. B2B SKUs ranked low on retail-only views may be perfectly healthy on B2B. Should I cut a SKU that has 0 revenue but high page views? Investigate first. High page views + zero conversions = a problem (broken add-to-cart, mispriced, OOS without auto-hide, photography problem, description issue). Fix the conversion problem; if fixed and still zero conversions, then cull. My slow movers are all in one category, what does that mean? Either (a) the category isn’t selling because of merchandising / SEO / placement issues (fixable); or (b) the category genuinely lacks demand from your audience (cull category). Cross-reference BC Revenue by Category: a low-revenue category with all its SKUs in the slow-mover list is a category-level cull candidate. Markdown vs cull, which? Markdown first for SKUs with significant stock value (>500stuckcapital).3050500 stuck capital). 30-50% off for 30 days, monitor velocity. If velocity recovers, it was a pricing problem; if not, write off. **Cull first** for SKUs with low stock value (<200 stuck capital), the markdown ROI is too low. Can I bulk-archive bottom 50 in BC? Yes via Products → bulk edit → set status to archived. Archive removes from active catalogue without deleting historical data; better than delete for analytics continuity. Some merchants prefer “soft archive” via custom field for reversibility. My 90-day window has me marking SKUs slow that just bottomed out, can I use longer? Yes, configure to 180-day window for stability. Longer windows favour stability over responsiveness; better for cull decisions. Shorter windows for fast-moving fashion categories where 90 days may be too long. Multi-currency: do slow movers vary by currency? The unit count is currency-agnostic. The revenue ranking does vary by currency. Filter the card by currency for clean per-currency slow-mover lists; cull decisions usually align across currencies but the order may shift. Should I notify customers when I cull a SKU? Generally no, dead SKUs by definition aren’t being bought, so no customer expects them. Exception: if the SKU has a small but loyal repeat-buyer cohort (cross-reference BC Top Customers), email them: “We’re discontinuing X, last chance to stock up before Y date.” Recovers some final revenue and preserves goodwill.

Tracked live in Vortex IQ Nerve Centre

Slow-Moving Products is one of hundreds of KPI pulses Vortex IQ tracks across BigCommerce 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.