Sales reporting
How to compare WooCommerce sales year over year
To compare WooCommerce sales year over year, open Analytics › Revenue, choose a date range (for example Year to date or Last month), set Compare to › Previous year, and click Update. The figures at the top show the percentage change against the same dates last year. Set the interval to month to see growth month by month.
Below: the steps for a full-year and a single-month comparison, how to read growth, the traps that distort a year-over-year number, and how to compare more than two years.
The free way: Compare to › Previous year
- In WordPress admin, go to Analytics › Revenue.
- Click the date range at the top and choose Year to date (or Last year, Last quarter, Last month, or custom dates).
- Under Compare to, choose Previous year.
- Click Update.
- Read the figures at the top. Each shows this period's value and the percentage change on the same dates last year.
- Set the chart interval to month and click Net sales to chart this year's months against last year's.
The same setting works in Analytics › Orders (for order count and average order value), Products (to see which products grew), and Categories.
Year over year vs month over month
Most stores are seasonal. December beats November, summer is different from spring, and a month-over-month comparison mixes real change with the season.
Year over year takes the season out: October against last October means both months had the same holidays, weather and paydays (roughly). That's why it's the better test of whether the business is actually growing.
Month over month is still useful for spotting sudden changes. The guide on comparing two date ranges explains when to use each.
How to read year-over-year growth
Growth % = (this year − last year) ÷ last year × 100
Say your Revenue report for October shows:
| October 2025 | October 2026 | Change | |
|---|---|---|---|
| Net sales | $8,000 | $9,200 | +15% |
| Orders | 200 | 210 | +5% |
| Average order value | $40.00 | $43.81 | +9.5% |
Net sales grew 15%, but most of that came from larger orders, not more of them. That tells you something different from 15% growth driven by new customers: your pricing, bundles or product mix changed, while the number of buyers grew slowly.
Always look at orders and average order value next to net sales. Growth from more orders and growth from bigger orders call for different next steps. See WooCommerce average order value.
Traps that distort a year-over-year comparison
- Year to date against a full year. Compare Year to date with the same dates last year (which Previous year does), not with all of last year.
- Weekday mismatch. The same date falls on a different weekday each year. For a single week, or a month with five weekends this year and four last year, the difference can be noticeable. For short periods, compare matching weeks instead of matching dates.
- Moving events. Easter moves between March and April. Black Friday is always a Friday, so its date changes. Compare the event period with the event period, using custom dates.
- Price changes. If you raised prices 10%, flat unit sales show up as 10% sales growth. Check Items sold in the Products report too.
- Refund timing. Refunds count in the month you issued them, so a year-end clear-out of old returns can dent one month. See returns.
- Missing history. If last year's orders were never imported into Analytics, last year looks smaller than it was and your growth looks huge. Check that last year's figures match what you remember, and run Import historical data under Analytics › Settings if they don't.
- Changed settings. If you changed Excluded statuses or the Date type since last year, both years are recalculated with today's settings. That keeps them comparable, but means old figures may differ from reports you saved at the time.
Products and categories year over year
Total growth hides what's driving it. With Compare to › Previous year set, open Analytics › Products and sort by Net sales. Look for:
- New products with no sales last year. They show how much of your growth came from range additions.
- Long-time products that shrank. These need a look before they quietly fade.
- Products that grew faster than the store. They're the ones to stock deeper and promote.
The best-selling products guide walks through the Products report. Analytics › Categories gives the same view by category, as described in sales by category.
Comparing more than two years
Analytics compares one period with one other. For a three- or five-year view:
- In Analytics › Revenue, set the date range to one full year and the interval to month.
- Click Download for a CSV.
- Repeat for each year.
- Paste the net sales columns side by side in a spreadsheet, one column per year, one row per month, and chart them.
For developers, this query gives net sales by month for several years in one go from the Analytics table wp_wc_order_stats (the same on HPOS and posts storage):
SELECT YEAR(date_created) AS yr,
MONTH(date_created) AS mon,
SUM(CASE WHEN parent_id = 0 THEN 1 ELSE 0 END) AS orders,
ROUND(SUM(net_total), 2) AS net_sales
FROM wp_wc_order_stats
WHERE date_created >= '2023-01-01' AND date_created < '2027-01-01'
AND status NOT IN ('wc-pending', 'wc-failed', 'wc-cancelled')
GROUP BY yr, mon
ORDER BY mon, yr;
Refund rows (with a parent_id and negative net_total) are included, so refunds come out on the refund date as in Analytics. The status list stands in for your Excluded statuses setting, which the query doesn't read, so edit it to match. Change wp_ if your table prefix differs.
The quick way: ask Askshelf
Askshelf adds Analytics › Askshelf to WordPress admin. Its sales summary can compare any date range with the same period last year, and reads the same Analytics data, so it matches the Revenue report:
How are we doing this year compared with the same time last year?
You can also ask which products grew most against last year, which runs the top products lookup with a previous-year comparison. See AI sales reports for WooCommerce for more examples.
What to do with the comparison
- Set next year's targets from this year's growth, adjusted for anything one-off (a viral moment, a big wholesale order).
- Review seasonal peaks against last year to plan stock and staffing. The questions to ask after Black Friday are a good template for any peak.
- Write down what changed each year (new products, price changes, a new ad channel). Next year's comparison will make more sense.
For everything else WooCommerce reports on sales, start with the WooCommerce sales reports guide.
Common questions
How do I calculate year-over-year growth?
Subtract last year's figure from this year's, divide by last year's figure, and multiply by 100. If net sales were $8,000 last October and $9,200 this October, growth is (9,200 − 8,000) ÷ 8,000 × 100 = 15%.
Can I compare three years at once in WooCommerce?
Not in one view. Analytics compares one period with one other. For a multi-year view, export the Revenue report by month for each year and put them side by side in a spreadsheet.
Why is last year's data missing from my comparison?
Usually because older orders were never imported into Analytics, which often happens after a migration. Run Import historical data under Analytics › Settings with the range set to All, then check again.
See how Askshelf handles this: AI sales reports for WooCommerce