Sales reporting
How to see your best-selling products in WooCommerce
To see your best-selling products in WooCommerce, open Analytics › Products in WordPress admin, pick a date range, and sort the table by Items sold (units) or Net sales (revenue after refunds and coupons). Use the date picker's compare option to see how each product did against the previous period or the same period last year.
That covers most needs. Below: which column to rank by, how to compare months properly, the traps that make a best seller look better or worse than it is, and a faster way to ask.
The free way: Analytics › Products
- In WordPress admin, go to Analytics › Products.
- Click the date range at the top and choose a period, for example Last month. Under Compare to, choose Previous period or Previous year, then Update.
- In the table, click the Items sold column header to rank by units, or Net sales to rank by revenue.
- To see more than the first page, change the rows per page at the bottom, or click Download to export the full list as a CSV.
The chart above the table follows whichever metric you pick, and shows the comparison period as a second line.
For a quick look, the Analytics › Overview page has a Top products leaderboard. It's the same data, limited to the top few products for the selected dates.
What each column means
| Column | What it counts |
|---|---|
| Items sold | Units sold in the period, across all orders with an included status |
| Net sales | Revenue from the product after refunds and coupon discounts, excluding tax and shipping |
| Orders | Number of orders that contained the product |
| Variations | How many variations the product has (variable products only) |
| Stock | Current stock, if you manage stock for the product |
Units or revenue: which ranking should you use?
They answer different questions, and the top of the two lists often differs.
- Rank by items sold when you're planning stock or packing. A cheap product that sells 300 units matters more to your warehouse than a premium one that sells 40.
- Rank by net sales when you're deciding where to spend marketing money or attention. That premium product may bring in more revenue than the cheap one.
- Check orders too. A product with high items sold but few orders is usually bought in bulk by a handful of customers. That's useful to know, but it isn't broad popularity.
If you sell variable products, a single "product" row adds up every size and color. To see which variation is actually selling, use Analytics › Variations, covered in how to see sales by variation.
Comparing best sellers month over month
A single month's ranking tells you what sold. The comparison tells you what's changing, which is usually the more useful part.
With Compare to › Previous period set, the table's figures show the change against the earlier period. Look for:
- Risers: products moving up the list. They're the ones to restock early and feature more.
- Fallers: long-time best sellers losing ground. Check stock first (a product that ran out will fall), then price and competition.
- Seasonal swings: if you compare December with November, almost everything rises. Compare with the same period last year instead to see real growth. The guide on comparing two date ranges explains when to use each.
Why best-seller numbers can look wrong
If a ranking doesn't match what you remember shipping, one of these is usually the cause:
- Excluded statuses. Analytics leaves out orders whose status is listed under Analytics › Settings › Excluded statuses. If you use a custom status, it may not be counted. See excluded statuses.
- Refunds land on the refund date. A product refunded this month for an order placed last month lowers this month's net sales, not last month's.
- Analytics is behind. Analytics fills its tables in the background. Very recent orders can be missing for a short while, and stores that never ran Import historical data may be missing older orders entirely.
- The date type. Reports can be dated by when orders were created, paid or completed (Analytics › Settings › Date type). A store that dates by completion will show slower-shipping products later.
There's more on this in why WooCommerce Analytics numbers don't match your orders.
For developers: best sellers in SQL
If you'd rather query the database, the Analytics lookup table wc_order_product_lookup works the same whether your store uses HPOS or the older posts storage. This ranks products by units sold in October 2026 and leaves out refund rows (it doesn't apply your excluded statuses, so the totals can differ slightly from the report):
SELECT p.post_title AS product,
SUM(l.product_qty) AS items_sold,
ROUND(SUM(l.product_net_revenue), 2) AS net_revenue
FROM wp_wc_order_product_lookup l
JOIN wp_posts p ON p.ID = l.product_id
WHERE l.date_created >= '2026-10-01' AND l.date_created < '2026-11-01'
AND l.product_qty > 0
GROUP BY l.product_id
ORDER BY items_sold DESC
LIMIT 10;
Change wp_ if your table prefix differs.
The quick way: ask Askshelf
Askshelf adds Analytics › Askshelf to WordPress admin. Type the question the way you'd ask a colleague, and it reads the same Analytics data, ranks the products and does the comparison for you:
Which products sold best in October, compared with September?
You can ask it to rank by revenue instead of units, to compare with the same month last year, or to draw the top ten as a chart. It reads your store but can't change anything.
What to do with the list
- Restock the risers first. A product climbing the list will run out sooner than its average suggests. Check which products are about to sell out.
- Feature your best sellers on the home page, in emails and in ads. They already convert.
- Look hard at the fallers before discounting them: falling sales often trace back to stock-outs, a price change or a broken product page.
- Bundle a best seller with a slower product people often buy alongside it.
For the bigger picture of what WooCommerce can report on sales, start with the WooCommerce sales reports guide.
Common questions
Does WooCommerce show best sellers by profit?
No. WooCommerce Analytics ranks products by units sold, net sales or orders, not by profit. To rank by profit you need a cost for each product and a margin calculation, usually in a spreadsheet or a cost-of-goods plugin.
Why is a product missing from my best sellers?
Usually because its orders have a status that Analytics excludes, such as pending payment, or because Analytics hasn't imported those orders yet. Check Analytics › Settings for excluded statuses and run Import historical data if older orders are missing.
Can I see best sellers for one category?
Yes. Open Analytics › Categories, set Show to Single category and pick the category. The table lists that category's products with their items sold and net sales.
See how Askshelf handles this: AI sales reports for WooCommerce