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

# Top SKUs, Shopify

> Top SKUs for Shopify stores. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

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

## At a glance

> Top N SKUs ranked by units sold in the 30D window. The unit-velocity view; pair with [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue) for the £-weighted version.

|                               |                                                                                                                                                           |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**            | `SUM(lineItem.quantity) GROUP BY sku ORDER BY sum DESC LIMIT 50`. Units sold per SKU, regardless of price.                                                |
| **VAT / tax treatment**       | Not applicable, count metric.                                                                                                                             |
| **Shipping**                  | Not applicable.                                                                                                                                           |
| **Discounts**                 | Units count regardless of discount; the £-implications are visible in [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue). |
| **Refunds**                   | Refunded units are NOT subtracted from the velocity here. A SKU with high refunds appears as high-velocity even though net is lower.                      |
| **Cancelled / voided orders** | Excluded if Shopify removed them from the index.                                                                                                          |
| **Currency**                  | Not applicable.                                                                                                                                           |
| **Channels / sources**        | All channels. POS contributes; B2B bulk orders may dominate top of list if you sell wholesale.                                                            |
| **Time window**               | `30D` (default 30D rolling)                                                                                                                               |
| **Alert trigger**             | None directly; pair with stockout-velocity for ops alerts.                                                                                                |
| **Roles**                     | owner, operations                                                                                                                                         |

## Calculation

Calculated automatically from your Shopify 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 apparel DTC brand on Shopify, \~1,800 active variants. 30D window 12 Apr 26 to 12 May 26.

| Rank              | SKU            | Product                     | Units sold (30D) | Revenue (30D) | Note                                   |
| ----------------- | -------------- | --------------------------- | ---------------- | ------------- | -------------------------------------- |
| 1                 | LIN-TEE-SAND-M | Linen tee, Sand, M          | 240              | \$7,200       | Unit price \$30                        |
| 2                 | LIN-TEE-WHT-M  | Linen tee, White, M         | 195              | \$5,850       | Same product, different colour         |
| 3                 | LIN-TEE-SAND-L | Linen tee, Sand, L          | 220              | \$6,600       |                                        |
| 4                 | TROUS-BLK-10   | Wide-leg trouser, Black, 10 | 180              | \$14,400      | Higher unit price \$80                 |
| 5                 | TROUS-BLK-12   | Wide-leg trouser, Black, 12 | 165              | \$13,200      |                                        |
| ...               |                |                             |                  |               |                                        |
| 50                | SOCK-PACK-3    | Sock pack of 3              | 38               | \$570         | \$15 unit price                        |
| **Top-50 totals** |                |                             | **4,820**        | **\$162,400** | \~38% of total units, \~31% of revenue |

Six things to notice:

1. **The Pareto signature.** Top 50 SKUs (\~3% of catalogue) drive 38% of unit sales. Nearly every Shopify store sees this concentration; it's healthy.
2. **Unit-velocity isn't revenue-velocity.** SKU rank-1 (Linen tee Sand M) sells most units but rank-4 (trouser Black 10) sells more revenue. Ranking by units alone misleads margin discussions; pair with [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue).
3. **Variant concentration matters.** 3 of the top 5 are colour/size variants of one product (Linen tee). The brand has one viral product with deep variant assortment. Operationally this means stocking strategy is more about size-mix than SKU breadth.
4. **Sock pack at rank-50 is the threshold.** 38 units/30D ≈ 1.3 units/day. Below this, SKUs aren't candidates for safety-stock or ad-spend; they're long-tail.
5. **Refund-impact hidden.** If 20% of Linen Tee Sand M is refunded, gross velocity 240 hides net velocity 192. Pair with refund rates by SKU for net view.
6. **Marketplace orders included.** If the brand sells via Shop Pay Buy Button on partner blogs, those order line items still attribute SKUs. The aggregate may include surprise top-rankers from one popular blog post.

## Sibling cards merchants should reference together

Top SKUs is the unit-velocity view. Companions:

| Card                                                                                                   | Why pair it with Top SKUs                                                    |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
| [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue)                     | The £-weighted version; differs when unit prices vary across catalogue.      |
| [Stock vs Sales Velocity](/nerve-centre/kpi-cards/shopify/stock-vs-sales-velocity)                     | Combines top-velocity with on-hand to predict OOS.                           |
| [Inventory Distribution](/nerve-centre/kpi-cards/shopify/inventory-distribution)                       | Aggregate band view; helps see whether top-velocity SKUs are well-stocked.   |
| [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) | Cross-reference: any top-50 SKU on this list is a five-alarm fire.           |
| [Bottom Products](/nerve-centre/kpi-cards/shopify/slow-moving-products)                                | The flip-side; slow-movers worth de-listing or marking down.                 |
| [Total Orders](/nerve-centre/kpi-cards/shopify/total-orders)                                           | Denominator for Pareto-share calculations.                                   |
| [Top Refunded](/nerve-centre/kpi-cards/shopify/top-refunding-customers)                                | Refund-rate companion; refund-heavy top SKUs may need quality investigation. |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify Admin:**

> **Shopify Admin → Analytics → Reports → "Sales by product variant SKU"** (under *Sales*)

The most direct equivalent. Pick the same window. SKU ranking should match this card to within sync-lag tolerance.

Other Shopify Admin views:

* **Reports → Sales by product**: aggregates variants under parent product; this card splits by SKU.
* **Reports → Inventory snapshot** (Plus): inventory-side companion.
* **Apps like Stocky / Inventory Planner**: typically expose unit-velocity rankings.

**Why our number may legitimately differ from Shopify Admin:**

| Reason                    | Direction              | Why                                                                                                                                                                     |
| ------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **SKU vs variant ID**     | Either                 | Shopify can group by either; we use SKU string. Variants without SKU populated will not appear here (see [SKU Coverage](/nerve-centre/kpi-cards/shopify/sku-coverage)). |
| **Refund treatment**      | Theirs may differ      | Shopify Net Sales by SKU subtracts refunded units; we count gross.                                                                                                      |
| **Time zone**             | Boundary               | UTC vs store time zone.                                                                                                                                                 |
| **Bundle / kit handling** | Either                 | Bundles' component SKUs may surface separately or as the parent bundle SKU; depends on app config.                                                                      |
| **Sync lag**              | Ours lower for "today" | Most-recent 5-15 min may not be in.                                                                                                                                     |

**Cross-connector reconciliation:**

| Card                                                                     | Expected relationship         | What causes legitimate divergence                                                                              |
| ------------------------------------------------------------------------ | ----------------------------- | -------------------------------------------------------------------------------------------------------------- |
| [`amazon_sp.amazon_top_asins`](/nerve-centre/amazon_sp/amazon_top_asins) | Independent inventory channel | Top SKU on Shopify may not be top ASIN on Amazon; different channel demographics.                              |
| WMS / 3PL pick-velocity reports                                          | Should align                  | 3PL pick reports show actually-picked-units; minor diff vs ordered-units due to substitutions and pick errors. |

***

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

  * [`bigcommerce.shp_top_skus`](/nerve-centre/bigcommerce/shp_top_skus)
  * [`adobe_commerce.shp_top_skus`](/nerve-centre/adobe_commerce/shp_top_skus)
</details>

## Known limitations / merchant FAQs

**Why is my top SKU not what I expected?**
Three usual causes:

1. **Variant deep-dive surprise**: a single colour/size combination can dominate. Often the "best-selling" colour in a product line is not the marketed hero.
2. **One-off bulk order**: a B2B customer placing 200 of one SKU in a single order skews the 30D window.
3. **Influencer feature**: a single creator's post drove disproportionate demand on one SKU.

**My catalogue has thousands of SKUs. How do I make sense of this?**
Use Pareto-tier segmentation:

* **Top 1-2% (the "A" tier)**: stock deeply, market hard, monitor daily.
* **Next 5-10% (the "B" tier)**: stock moderately, market periodically.
* **Bottom 80%+ (the "C" tier)**: minimum stock, optional discontinue.

This card is the A-tier identification tool.

**Why are my SKUs missing? Where did the data go?**
Variants without populated SKU strings don't appear here. Pair with [SKU Coverage](/nerve-centre/kpi-cards/shopify/sku-coverage). If coverage \<95%, fix the catalogue first; this card is meaningless without it.

**Does this include POS sales?**
Yes. POS-sold units count toward the SKU velocity. For a brand with retail presence, SKUs popular in-store may dominate the rankings; the online-only velocity is different. Filter by sales channel in Shopify Admin for the online-only view.

**Why does my B2B account dominate the list?**
B2B buyers place bulk orders (50-500 units of one SKU per PO). On a 30D window, one B2B PO can move a SKU into the top 10. To filter B2B out: tag B2B orders with `tag = "wholesale"` and exclude in your reading.

**Should I rank by units or revenue?**
Both. Units = volume strain on ops and inventory. Revenue = financial weight. The top-by-units list tells you which SKUs to stock deeply; the top-by-revenue list tells you which SKUs to invest marketing in. They overlap but are not identical.

**Why does refund not lower SKU velocity?**
Design choice; we count gross sales. Refund-adjusted net-velocity is on the roadmap. For now, pair with refund-rate by SKU for context.

**My subscription store, do recurring billings count units?**
Yes. Each subscription billing creates a line item; the underlying SKU's units count. Subscription SKUs often dominate top-velocity rankings even with modest customer counts because each customer recurs monthly.

**Action playbook for using Top SKUs:**

1. **Daily ops check**: confirm top-50 SKUs are not in OOS or Critical bands of [Inventory Distribution](/nerve-centre/kpi-cards/shopify/inventory-distribution).
2. **Weekly reorder review**: pace POs based on current top-50 velocity, with safety stock for top-10.
3. **Monthly catalogue rationalisation**: identify SKUs that haven't appeared in top-300 in 6 months; candidates for clearance or discontinue.
4. **Quarterly merch refresh**: top SKUs deserve premium PDPs, professional photography, hero placement.
5. **Marketing alignment**: paid-media budget should bias toward top-50 SKUs; spending on long-tail SKUs is usually inefficient.
6. **Bundle building**: top-velocity SKUs make natural bundle anchors; pair with complementary slow-movers to clear surplus.

***

### Tracked live in Vortex IQ Nerve Centre

*Top SKUs* is one of hundreds of KPI pulses Vortex IQ tracks across Shopify 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.
