Sales reporting
How to see WooCommerce sales by country
WooCommerce Analytics doesn't have a sales-by-country report. The closest built-in option is WooCommerce › Customers: filter by country and read each customer's orders and total spend. For true sales by country for a date range, export your orders and group them in a spreadsheet, add an extension, or query the order addresses with SQL.
Below: each option step by step, what it can and can't tell you, and which to use.
The free way: the Customers report
- In WordPress admin, go to WooCommerce › Customers.
- The table lists each customer (registered and guest) with their country, region, city, number of orders, total spend and average order value.
- Click Show › Advanced filters and add a Country filter to show only customers from one country. You can add more filters, such as number of orders or total spend.
- The summary row under the table shows how many customers match, with averages for their orders and spend.
- Click Download to export the list as a CSV.
To compare countries, export the full list and make a pivot table with country as rows and the sum of total spend as values.
The catch with this method
The Customers report is about customers, not a sales period. Its spend and order figures are each customer's all-time totals, not "sales from France in October". And each customer has one country, so someone who moved, or who ships gifts abroad, is counted under a single location.
It's a good answer to "where are my customers?" (see how to see where your WooCommerce customers are), but only a rough answer to "how much did each country buy last month?"
Sales by country for a date range: the export method
Core WooCommerce's Analytics exports don't include a country column on orders. Two practical routes:
- An order export plugin. Many export orders with their billing and shipping addresses. Export the date range you want, then pivot on billing (or shipping) country, summing the order totals.
- The Customers report, filtered by activity. Add an advanced filter for Last active within your period, then export. This narrows the list to customers who were active recently, but the spend figures are still all-time, so treat it as a guide only.
If you go the export route, decide up front whether you want billing country (where the payer is) or shipping country (where goods went). For tax, duties and shipping costs, shipping country usually matters more.
Extensions that add a country report
The WooCommerce Marketplace lists paid extensions for this, such as Sales Report By Country. According to its documentation, it adds Analytics › Sales by Country with orders, items sold, net sales and average order value per country, with a switch between billing and shipping country. Check any extension's current features and price on its own page before buying.
For developers: sales by country in SQL
The Analytics table wp_wc_order_stats has net sales per order but no address. Join it to where your store keeps addresses.
On HPOS stores (the default for new stores since WooCommerce 8.2), billing and shipping addresses are in wp_wc_order_addresses. Net sales by billing country for October 2026:
SELECT a.country,
COUNT(*) AS orders,
ROUND(SUM(s.net_total), 2) AS net_sales
FROM wp_wc_order_stats s
JOIN wp_wc_order_addresses a
ON a.order_id = s.order_id AND a.address_type = 'billing'
WHERE s.parent_id = 0
AND s.date_created >= '2026-10-01' AND s.date_created < '2026-11-01'
AND s.status NOT IN ('wc-pending', 'wc-failed', 'wc-cancelled')
GROUP BY a.country
ORDER BY net_sales DESC;
Change 'billing' to 'shipping' for shipping country (orders without a shipping address, such as digital-only orders, then drop out).
On posts storage, the billing country is order meta. Swap the join for:
JOIN wp_postmeta a
ON a.post_id = s.order_id AND a.meta_key = '_billing_country'
and select and group by a.meta_value instead of a.country.
Both queries count orders only (parent_id = 0), so refunds aren't taken out. The status list stands in for your Excluded statuses setting under Analytics › Settings, which the queries don't read, so edit it to match. Countries come back as two-letter codes (US, GB, DE). Change wp_ if your table prefix differs. Not sure which storage you use? See HPOS.
Which method should you use?
| Need | Use |
|---|---|
| Where are my customers, roughly? | Customers report, filtered or exported |
| Sales by country for a specific month | Order export with addresses, an extension, or SQL |
| Billing vs shipping country | Extension or SQL |
| A regular monthly view | An extension, so you don't repeat the export every month |
Whatever the method, make sure the date range, statuses and refund handling match what you use elsewhere, or the totals won't agree with Analytics › Revenue. Why WooCommerce Analytics numbers don't match your orders lists the usual differences.
What to do with the numbers
- Shipping rates. If a country is growing, check that your shipping zones and rates for it cover what you actually pay.
- Timing. International customers shop in their own time zones, which shifts your busy hours. See how to find your busiest days and hours.
- Currency and language. A country that brings a steady share of sales may be worth a local currency or translated pages.
- Tax. Selling more into another country can bring tax registration duties. Check the rules for that country with an adviser.
What Askshelf can and can't tell you
Askshelf can break orders and net sales down by customer country, using the billing country, for any date range, and compare with the previous period or the same period last year. It reads only the country, never names or addresses. It can't split by region or state, and Analytics or an export is still the place for a full table.
Which countries brought in the most net sales in October, compared with October last year?
It can also show orders and net sales by channel (such as organic search, email or a UTM campaign) and rank your top products. Askshelf adds Analytics › Askshelf to WordPress admin and is read-only. See the customer analytics and AI sales reports pages, and the WooCommerce sales reports guide for every built-in report.
Common questions
Can WooCommerce show sales by shipping country instead of billing country?
Not in core Analytics. The Customers report shows one country per customer. To group sales by shipping country, use an extension that offers it or query the order addresses in the database.
Does the Taxes report show sales by country?
Only indirectly. Analytics › Taxes shows tax collected by tax rate, and rates are often set per country, but it reports tax amounts rather than sales and only covers orders that were charged tax.
Can I see best-selling products for one country?
Not in core Analytics. You'd need an extension that adds a country report with product breakdowns, or a SQL query joining order addresses to the product lookup table.
See how Askshelf handles this: AI sales reports for WooCommerce