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

At a glance

Top N products ranked by revenue in the 30D window. The £-weighted version of Top SKUs; aggregates variant-level lines into product-level totals.
What it countsSUM(lineItem.price × lineItem.quantity) GROUP BY product.id ORDER BY sum DESC LIMIT 25. Aggregates variant lines into parent product totals.
VAT / tax treatmentInherits store’s tax-inclusion mode for line-item prices.
ShippingExcluded; product-level revenue is line items only, not order-level shipping or tax.
DiscountsDeducted at line-item level (post-line-discount). Order-level discounts (e.g. site-wide 20%) apply proportionally.
RefundsNOT deducted. A refund doesn’t unwind product revenue here.
Cancelled / voided ordersIncluded if Shopify indexed them.
CurrencyMulti-currency arithmetic without FX. Filter by currency for cross-product comparison.
Channels / sourcesAll channels. Different products may dominate different channels; the blended ranking hides this.
Time window30D (default 30D rolling)
Alert triggerNone directly; pair with stockout / refund alerts on top SKUs.
Rolesowner, 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.
RankProductRevenue (30D)UnitsAvg unit price
1High-rise leggings$182,4002,280$80
2Sports bra (medium support)$94,2001,570$60
3Performance hoodie$86,8001,240$70
4Recovery shorts$58,400730$80
5Tennis skirt$44,200442$100
25Sock 3-pack$9,800490$20
Top-25 total$648,0008,420$77 avg
All products (~280)$1,164,00014,200
Top-25 share of revenue55.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 6060-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 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:
CardWhy pair it with Top Products
Top SKUsVariant-level cousin; useful when one variant dominates a product.
Bottom ProductsLong-tail flip-side; candidates for clearance or discontinue.
Total RevenueAggregate; top-25 share calculation context.
Stock vs Sales VelocityForecast for top-product OOS risk.
Products with Zero/Negative StockCross-reference; any top-25 product with OOS variants is high-priority.
Top Refunding CustomersCustomer-level refund context.
Average Order ValueTop-product price tier influences AOV; high-priced top products lift AOV mechanically.
Discount % of RevenueTop 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:
ReasonDirectionWhy
Refund treatmentTheirs may differShopify Net Sales subtract refunded line items; we show gross.
Tax inclusionEitherUK / EU VAT-inclusive products show higher absolute totals than US tax-exclusive.
Time zoneBoundaryUTC vs store time zone.
Multi-currencyAggregate distortionWe don’t FX-normalise.
Bundle / kit handlingEitherBundle apps may aggregate components differently; native Shopify Bundles split by component SKU.
Sync lagOurs lower for “today”Most-recent 5-15 min may not be in.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
amazon_sp.amazon_top_asinsIndependent rankingSame physical product can rank differently on Amazon (different audience, different price).
tiktok.tiktok_top_productsDifferent ranking criteriaTikTok Shop favours impulse-buy products; not the same as DTC top-revenue.

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 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 or book a demo to see this metric running on your own data.