> ## 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 Products by Revenue, Shopify

> Top Products by Revenue 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 products ranked by revenue in the 30D window. The £-weighted version of [Top SKUs](/nerve-centre/kpi-cards/shopify/top-skus); aggregates variant-level lines into product-level totals.

|                               |                                                                                                                                                |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**            | `SUM(lineItem.price × lineItem.quantity) GROUP BY product.id ORDER BY sum DESC LIMIT 25`. Aggregates variant lines into parent product totals. |
| **VAT / tax treatment**       | Inherits store's tax-inclusion mode for line-item prices.                                                                                      |
| **Shipping**                  | Excluded; product-level revenue is line items only, not order-level shipping or tax.                                                           |
| **Discounts**                 | Deducted at line-item level (post-line-discount). Order-level discounts (e.g. site-wide 20%) apply proportionally.                             |
| **Refunds**                   | NOT deducted. A refund doesn't unwind product revenue here.                                                                                    |
| **Cancelled / voided orders** | Included if Shopify indexed them.                                                                                                              |
| **Currency**                  | Multi-currency arithmetic without FX. Filter by currency for cross-product comparison.                                                         |
| **Channels / sources**        | All channels. Different products may dominate different channels; the blended ranking hides this.                                              |
| **Time window**               | `30D` (default 30D rolling)                                                                                                                    |
| **Alert trigger**             | None directly; pair with stockout / refund alerts on top SKUs.                                                                                 |
| **Roles**                     | owner, marketing                                                                                                                               |

## Calculation

```
GROUP BY lineItems.name.keyword SUM(line_total)
  WHERE date BETWEEN [period_start, period_end]
```

## Worked example

A US activewear DTC brand on Shopify, \~280 active products. 30D window 12 Apr 26 to 12 May 26.

| Rank                        | Product                     | Revenue (30D) | Units     | Avg unit price |
| --------------------------- | --------------------------- | ------------- | --------- | -------------- |
| 1                           | High-rise leggings          | \$182,400     | 2,280     | \$80           |
| 2                           | Sports bra (medium support) | \$94,200      | 1,570     | \$60           |
| 3                           | Performance hoodie          | \$86,800      | 1,240     | \$70           |
| 4                           | Recovery shorts             | \$58,400      | 730       | \$80           |
| 5                           | Tennis skirt                | \$44,200      | 442       | \$100          |
| ...                         |                             |               |           |                |
| 25                          | Sock 3-pack                 | \$9,800       | 490       | \$20           |
| **Top-25 total**            |                             | **\$648,000** | **8,420** | \$77 avg       |
| **All products (\~280)**    |                             | \$1,164,000   | 14,200    |                |
| **Top-25 share of revenue** |                             | **55.7%**     |           |                |

Six things to notice:

1. **Strong Pareto signature.** Top 25 of 280 products (9% of catalogue) generate 55.7% of revenue. The top 5 alone do \~40%. Common pattern; the curve is steeper for newer brands and flatter for mature catalogues.
2. **Price points cluster.** The brand sells most heavily in the $60-$80 range. Items priced above \$100 (tennis skirt, jacket) appear but in lower volumes.
3. **High-rise leggings is the franchise product.** Single product driving 16% of total revenue. If this product OOS, the impact is enormous; cross-reference [Inventory Distribution](/nerve-centre/kpi-cards/shopify/inventory-distribution) for its variants.
4. **Sock 3-pack at rank-25 (\$9,800).** A low-AOV add-on product that nonetheless makes the top-25 by aggregate volume. Confirms the basket-builder bundle strategy works.
5. **Top-products list should drive marketing weight.** Each top-5 product deserves a dedicated landing page, hero photography, and disproportionate ad budget. Long-tail products at rank 26-280 share the remaining 44% of revenue, individually small.
6. **Refund-blind ranking.** A "top product" with high refund rate is over-stated by this card. Pair with refund-rate by product (on roadmap as a card; today via order-line analysis) for net top-products.

## Sibling cards merchants should reference together

Top Products by Revenue is the £-weighted product ranking. Companions:

| Card                                                                                                   | Why pair it with Top Products                                                                     |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------- |
| [Top SKUs](/nerve-centre/kpi-cards/shopify/top-skus)                                                   | Variant-level cousin; useful when one variant dominates a product.                                |
| [Bottom Products](/nerve-centre/kpi-cards/shopify/slow-moving-products)                                | Long-tail flip-side; candidates for clearance or discontinue.                                     |
| [Total Revenue](/nerve-centre/kpi-cards/shopify/total-revenue)                                         | Aggregate; top-25 share calculation context.                                                      |
| [Stock vs Sales Velocity](/nerve-centre/kpi-cards/shopify/stock-vs-sales-velocity)                     | Forecast for top-product OOS risk.                                                                |
| [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) | Cross-reference; any top-25 product with OOS variants is high-priority.                           |
| [Top Refunding Customers](/nerve-centre/kpi-cards/shopify/top-refunding-customers)                     | Customer-level refund context.                                                                    |
| [Average Order Value](/nerve-centre/kpi-cards/shopify/average-order-value)                             | Top-product price tier influences AOV; high-priced top products lift AOV mechanically.            |
| [Discount % of Revenue](/nerve-centre/kpi-cards/shopify/discount-of-revenue)                           | Top products are disproportionately featured in promo events; discount cost concentrates on them. |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify Admin:**

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

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

Other Shopify Admin views:

* **Reports → Sales by product variant SKU**: variant-level, complements this product-level view.
* **Apps like Glew, Polar Analytics**: typically expose richer top-product analytics.

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

| Reason                    | Direction              | Why                                                                                              |
| ------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------ |
| **Refund treatment**      | Theirs may differ      | Shopify Net Sales subtract refunded line items; we show gross.                                   |
| **Tax inclusion**         | Either                 | UK / EU VAT-inclusive products show higher absolute totals than US tax-exclusive.                |
| **Time zone**             | Boundary               | UTC vs store time zone.                                                                          |
| **Multi-currency**        | Aggregate distortion   | We don't FX-normalise.                                                                           |
| **Bundle / kit handling** | Either                 | Bundle apps may aggregate components differently; native Shopify Bundles split by component SKU. |
| **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 ranking        | Same physical product can rank differently on Amazon (different audience, different price). |
| [`tiktok.tiktok_top_products`](/nerve-centre/tiktok/tiktok_top_products) | Different ranking criteria | TikTok Shop favours impulse-buy products; not the same as DTC top-revenue.                  |

***

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

  * [`bigcommerce.top_products`](/nerve-centre/kpi-cards/bigcommerce/top-products-by-revenue)
  * [`adobe_commerce.top_products`](/nerve-centre/adobe_commerce/top_products)
</details>

## Known limitations / merchant FAQs

**Why is my new launch not in the top-25?**
A new launch needs \~7-14 days of sales to register meaningfully. Wait for the cohort to mature; if at 30 days post-launch it's still not top-25, the launch likely under-delivered.

**My franchise product (top-1) is OOS. What's the impact?**
Massive. If top-1 is 15-20% of revenue, a stockout = 15-20% revenue loss until restocked. Beyond raw revenue, the customers who came for that specific product churn (don't substitute, don't return). Pair with [Stock vs Sales Velocity](/nerve-centre/kpi-cards/shopify/stock-vs-sales-velocity) to confirm cover; if days-cover is \<7, escalate reorder.

**Why is my top-product list stable month-to-month?**
Healthy. A stable top-5 means the brand has clear hero products with sustained customer demand. Volatile top-5 (different products each month) suggests the brand is launch-driven without a stable core; harder to scale paid acquisition and operations.

**Should I focus all marketing on top-5 products?**
Mostly yes, but balance:

* **70-80% of paid-media budget** should bias toward top-5 / top-10.
* **10-20% to test** new products / mid-tier.
* **5-10% reserve** for opportunistic / seasonal.

This Pareto allocation typically delivers strongest ROAS while feeding the long tail.

**My top product changed unexpectedly. What's going on?**
Three usual causes:

1. **Influencer / press feature**: a creator post or media coverage spiked one product.
2. **Promo emphasis**: an email campaign featured one product disproportionately.
3. **Seasonal shift**: warm-weather products in spring, cold-weather in autumn.

Investigate by overlaying the marketing calendar.

**Why are bundle products ranked separately from components?**
Depends on bundle-app config. Native Shopify Bundles often split sales into component SKUs; apps like Bundle Pro / SimpleBundles can show as a virtual parent product. Audit your bundle setup; the ranking interpretation depends on it.

**My subscription store, do recurring billings count?**
Yes. Each recurring billing creates line items; the underlying product accumulates revenue. Subscription-heavy stores see top-product rankings dominated by subscription SKUs.

**Action playbook for using Top Products:**

1. **Operational priority**: top-5 deserve daily inventory, fulfilment, and customer-service monitoring.
2. **Marketing priority**: top-5 dominate paid-media and email campaigns.
3. **Product-page investment**: top-5 deserve professional photography, video, detailed copy, customer-review highlights.
4. **Inventory safety stock**: top-5 should have 1.5-2× normal safety stock; OOS impact is disproportionate.
5. **Pricing experiments**: test price elasticity on top-5; small price changes have outsized revenue impact.
6. **Bundle-anchor selection**: top products make natural bundle anchors; pair with complementary products to lift overall AOV.

***

### Tracked live in Vortex IQ Nerve Centre

*Top Products by Revenue* 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.
