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 counts | SUM(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 treatment | Tax-inclusive (total_inc_tax). |
| Shipping | Excluded at line-item level. |
| Discounts | Already deducted. |
| Refunds | Not deducted. A SKU with refunds may rank lower than its order count suggests; cross-check refund history. |
| Cancelled / voided orders | Included in gross. |
| Currency | Multi-currency without FX. Filter by currency for clean comparison. |
| Channels / sources | All 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 products | Default 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 note | B2B-only SKUs may show as zero-revenue in retail-only views even if active on the B2B portal. Filter by channel before culling. |
| Inventory cost | Each 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 window | 90D (longer window than top SKUs because slow-movers need time to reveal genuine deadness; 30D may surface seasonal-quiet SKUs as dead) |
| Alert trigger | None on this card directly. |
| Roles | owner, operations |
Calculation
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) | SKU | Product | Revenue | Units | Stock value | Verdict |
|---|---|---|---|---|---|---|
| 1 (slowest) | BWL-CER-LRG-PNK | ”Large pink ceramic bowl” | $0 | 0 | 46) | Dead, cull |
| 2 | VAS-GLS-CYL-AMB | ”Amber cylindrical glass vase” | $48 | 1 | $720 | Dead-adjacent, cull |
| 3 | RUG-WLN-RND-NVY | ”Round navy wool rug” | $189 | 1 | $4,200 | Slow + tied capital, cull or markdown |
| 4 | CSH-VLV-32-TAN | ”Tan velvet cushion 32cm” | $324 | 6 | $560 | Slow, watch |
| 5 | TRY-WD-DCO-MNT | ”Decorative wooden tray, mint” | $156 | 3 | $480 | Slow, watch |
| 6-50 | (45 SKUs) | (mixed) | 1,800 each | mixed | mixed | Routine review |
| 51-100 | (50 SKUs) | (mixed) | 600 each | mixed | mixed | Acceptable tail |
| Cull recommendation | Top 30 SKUs (zero or near-zero revenue) | $1,800 cumulative | 28 units | $18,400 stuck capital | Free up $18k + simplify catalogue |
- **The pink ceramic bowl at 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.
- The navy wool rug at 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.
- 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.
- 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.
- 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.
- 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.
- Variant-level review for ranks 11-30 identify and cull individual dead variants without affecting the parent product.
- Quarterly cull cadence institutionalise this card as the merchandising team’s quarterly review; never let dead SKUs accumulate beyond 6 months.
- Markdown sale event combine 20-30 slow-movers into a “clearance weekend” promotion to clear capital faster.
- 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
| Card | Why pair it with Bottom Products |
|---|---|
| BC Top SKUs Revenue | The mirror view; cull bottom to fund top. |
| BC Stock vs Sales | Dead SKUs in this card with high stock values are top markdown priorities. |
| BC Inventory Distribution | Healthy distribution requires not too many slow-movers. |
| Top Products | The active-product ranking. |
| Product Status | Status of products (active / draft / archived); slow movers should be archived rather than left active. |
| BC Refunded Products | Slow-movers with high refund rate are double-burn: low revenue + customer disappointment. Cull priority. |
| BC Revenue by Brand / BC Revenue by Category | Slow SKUs concentrated in one brand or category may signal supplier or merchandising issues. |
shopify.bottom_products | Cross-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:| Reason | Direction |
|---|---|
| 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 |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_ads.ga_zero_conversion_skus | Ad-driven traffic to SKUs with no conversions; overlaps with this card. | Ads-spend-to-conversion attribution windows. |
google_analytics.ga_zero_view_items | SKUs with no GA4 product views; correlates with slow movers. | GA4 sampling on high-volume catalogues. |
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 fieldseasonal = 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 (>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.