Sales reporting

How to see sales by variation (size, color) in WooCommerce

To see sales by variation in WooCommerce, go to Analytics › Variations in WordPress admin and pick a date range. Each size, color or other product variation gets its own row with Items sold, Net sales, Orders, stock status and stock. Use Show › Advanced filters to narrow it to one product, one attribute value or one category.

Below: the steps, how to answer "which size sells most?", the limits of the report, a SQL query, and how to use the numbers for buying.

The free way: Analytics › Variations

  1. In WordPress admin, go to Analytics › Variations.
  2. Click the date range at the top and choose a period, such as Last quarter, or set custom dates for the last 90 days. Optionally set Compare to, then click Update.
  3. The figures at the top show Items sold, Net sales and Orders. Click one to chart it.
  4. Sort the table by Items sold or Net sales.
  5. Click Download for a CSV of the full list.

What each column means

Column What it shows
Product / variation title The parent product and the variation's attributes, for example "Linen shirt - Blue, M"
SKU The variation's SKU, if it has one
Items sold Units of this variation sold in the period
Net sales Revenue after refunds and coupon discounts, excluding tax and shipping
Orders Orders containing this variation
Status Stock status (in stock, out of stock, on backorder)
Stock Current stock, if you manage stock at variation level

Filtering: one product, one size, one color

The Show menu above the chart offers:

  • All variations: every variation that sold in the period.
  • Single variation: search for one variation and chart it.
  • Comparison: pick two or more variations to chart side by side. You can also tick rows and click Compare.
  • Advanced filters: narrow the list by product, by product attribute (for example Size is Large) or by product category, and choose whether rows must match all or any of your conditions.

To answer "which size of the linen shirt sells most?", add an advanced filter for that product and sort by Items sold. To answer "how are Large sizes selling across the whole store?", filter by the attribute instead.

You can reach a similar view from Analytics › Products: choose a variable product with Show › Single product, and the report offers a variation view for that product.

What the Variations report doesn't do

  • No totals by attribute value. It lists each variation, but won't sum "all Blue" or "all Large" into one figure. Export the filtered list and add it up, or use a pivot table on the export.
  • Only variations that sold. A variation with no sales in the period doesn't appear, so the report can't show you what isn't selling. To find those, compare against your full product list, or see how to find dead stock.
  • Current names, not historical ones. If you renamed an attribute value, older sales show under the current name.
  • Same counting rules as all of Analytics. Excluded statuses, refunds on the refund date and the date type all apply. See why Analytics numbers don't match your orders.

Using variation sales for buying and stock

Variation sales are most useful when you reorder. If you always order a size run of 1 S, 2 M, 2 L, 1 XL, but the report shows Medium selling three times as fast as Small, your next order should reflect it.

A simple method:

  1. Set the range to the last 90 days (or the same season last year for seasonal stock).
  2. Filter to one product and note the share of units each variation sold.
  3. Split your next order in roughly those proportions, then adjust for current stock.
  4. Check again after the order sells through, because size demand shifts with the season and with who your customers are.

Stock is managed per variation if you turn it on for each one, so the Stock column shows what's left of each size. For more on tracking it, see how to track stock for variations.

For developers: variation sales in SQL

In the Analytics table wp_wc_order_product_lookup, each order line stores both product_id (the parent) and variation_id (0 for simple products). Variation titles in wp_posts usually include the attribute values. This ranks variations by units sold in July–September 2026:

SELECT parent.post_title AS product,
       v.post_title AS variation,
       SUM(l.product_qty) AS items_sold,
       ROUND(SUM(l.product_net_revenue), 2) AS net_sales
FROM wp_wc_order_product_lookup l
JOIN wp_posts v ON v.ID = l.variation_id
JOIN wp_posts parent ON parent.ID = l.product_id
WHERE l.variation_id > 0
  AND l.date_created >= '2026-07-01' AND l.date_created < '2026-10-01'
  AND l.product_qty > 0
GROUP BY l.variation_id
ORDER BY items_sold DESC
LIMIT 25;

It leaves out refund rows and doesn't apply your excluded statuses, so totals can differ slightly from the report. Change wp_ if your table prefix differs.

What Askshelf can and can't tell you

Askshelf doesn't break sales down by size, color or other attribute yet. Its top products lookup ranks products by units sold or net revenue, so for variation-level sales, use Analytics › Variations as above.

Where it does look at variations is stock. Its stock runway lookup checks products and variations against their recent sales rate and tells you which will run out soon, which is often the reason you wanted variation sales in the first place:

Askshelfexample answer

Which sizes or variants will run out in the next three weeks?

Four variations will likely run out within 21 days. Linen shirt - Blue, M has 6 left and sells about 0.6 a day (around 10 days). Linen shirt - White, L has 9 left (about 15 days). Two colors of the canvas tote follow at 17 and 19 days.Stock runway, next 21 days, based on sales over the last 30 days
An example on a demo store. In your store, the numbers come from your own orders.

It can also rank your top products for any dates. Askshelf adds Analytics › Askshelf to WordPress admin and is read-only. See AI sales reports for WooCommerce, and for every other built-in report, the WooCommerce sales reports guide. For product-level rankings, see how to see your best-selling products.

Common questions

Can I see total sales for one size across all products?

Analytics › Variations can filter by product attribute, so you can list every variation with, say, size Large and see their sales. To get a single total per size across products, export the list and add it up in a spreadsheet.

Why doesn't my variable product appear in the Variations report?

The report only lists variations that sold in the selected period. If a variation had no sales, or its orders have excluded statuses, it won't appear. Widen the date range or check Analytics › Settings.

Do simple products show in the Variations report?

No. Only variations of variable products appear there. Simple products are in Analytics › Products.

See how Askshelf handles this: AI sales reports for WooCommerce