Customers and retention
How to see where your WooCommerce customers are
To see where your WooCommerce customers are, open WooCommerce › Customers. The Country / Region column shows each customer's location, and the column menu adds City, Region and Postal code. Use Advanced filters › Country or region to see one country's customers, or Download the list and count customers by country in a spreadsheet.
This guide covers the steps, how to get customer counts and spend per country, an SQL query for developers, and what to do with the result.
The free way: the Customers report
- In WordPress admin, go to WooCommerce › Customers.
- Open the table's column menu and turn on City, Region and Postal code if you need them. They're hidden by default.
- To see one country, click Advanced filters, add Country or region, and choose it. The summary under the table shows how many customers match, their average orders, average lifetime spend and average order value.
- Repeat for your main countries to compare them.
- For a full breakdown, click Download to export the list as a CSV.
Counting customers per country in a spreadsheet
With the CSV open:
- Make a pivot table with Country / Region as rows.
- Add a count of customers and the sum of Total spend as values.
- Sort by total spend.
Say the result shows 1,120 customers in the United States spending $96,400 in total, and 210 in Canada spending $21,800. Canadian customers spend about $104 each against $86 in the US, which may justify better shipping options there.
What the Customers report doesn't tell you
- No date range. Spend is lifetime. It can't tell you which countries grew this year. For sales by country in a period, see how to see WooCommerce sales by country.
- No map. You'll need a spreadsheet chart or a mapping tool to visualize it.
- Billing vs shipping. The location is the one stored on the customer record. Gifts and work deliveries can make shipping destinations look different.
- Inconsistent spellings. City names typed by customers vary ("NYC", "New York"), so city counts need cleaning. Country and region are more reliable because they're picked from a list.
How to look inside one country
Country totals are a start, but most decisions happen at a finer level: a state with high shipping costs, a city where you could run a pop-up, a region where a courier keeps losing parcels.
- In the Customers report, filter Country or region to the country you care about.
- Turn on the Region column (and City if you need it).
- Download the CSV and pivot on Region, counting customers and summing Total spend.
- Sort by customer count, then by spend, and compare the two orders.
A region near the top for customer count but lower for spend usually means smaller orders, often because shipping costs push customers to buy less at a time. A region with few customers but high spend may be a small group of loyal buyers worth looking after.
Postal codes are the most precise option but the noisiest. They're useful for questions such as "how many of my customers live within reach of a local delivery zone", less so for general reporting.
Handling location data responsibly
Customer addresses are personal data. A few habits keep you on the right side of your customers' trust and of privacy rules in the places you sell:
- Work with counts where you can. "38 customers in Oregon" answers most questions without anyone's address leaving your admin.
- Delete exports when you're done. A CSV of names and cities sitting in a downloads folder or shared drive is a risk with no benefit.
- Be careful with outside tools. Pasting a customer export into a chatbot or a free online mapping site sends personal data to a third party. Aggregate it first.
For developers: customers and net sales by country in SQL
The Analytics tables wc_customer_lookup (which has country, state, city and postcode) and wc_order_stats work the same with HPOS or posts storage. This counts customers and net sales by country for orders placed in 2026:
SELECT c.country,
COUNT(DISTINCT s.customer_id) AS customers,
COUNT(*) AS orders,
ROUND(SUM(s.net_total), 2) AS net_sales
FROM wp_wc_order_stats s
JOIN wp_wc_customer_lookup c ON c.customer_id = s.customer_id
WHERE s.parent_id = 0
AND s.status IN ('wc-completed', 'wc-processing')
AND s.date_created >= '2026-01-01'
AND s.date_created < '2027-01-01'
GROUP BY c.country
ORDER BY net_sales DESC;
Countries are two-letter codes (US, CA, GB). Swap c.country for c.state and add WHERE c.country = 'US' to break one country down by state. parent_id = 0 leaves out refund rows, so totals are before refunds. Match the status list to the statuses your Analytics counts, and change wp_ if your prefix differs.
What Askshelf can and can't tell you
Askshelf's sales breakdown lookup groups orders and net sales by the customer's billing country for any date range, and can compare with an earlier period. It works on totals only, never reading individual addresses or names.
Which countries did my sales come from in 2026 so far, compared with last year?
That's sales by country, not customers by country. It can't break sales down by region, state or city, and it can't give a customer count or lifetime spend per country; use the Customers report or the SQL above for those. See is it safe to give AI your store data for why it works this way.
What to do with location data
- Tune shipping. If a region accounts for a large share of spend, better rates or a free-shipping threshold there may pay for itself.
- Time campaigns to time zones and holidays. A big customer base in another country means different holidays and sale seasons.
- Check stock and returns per market. Products that sell well in one country may not elsewhere. Compare with your top customers to see whether your best buyers cluster in one place.
- Compare value per customer. Average lifetime spend by country is a simple version of customer lifetime value per market. The guide on calculating customer lifetime value goes further.
For everything else WooCommerce shows about customers, see the WooCommerce customer analytics guide.
Common questions
Does WooCommerce have a map of customer locations?
No. Core WooCommerce doesn't draw a customer map. The Customers report has country, region, city and postal code columns, which you can filter or export and map in a spreadsheet or another tool.
Can I see sales by country in WooCommerce Analytics?
Not as a built-in report. The Customers report shows each customer's country and total spend, so you can filter by country or export and total it. For sales in a specific date range by country, use an order export, SQL or Askshelf's sales breakdown by country.
Which address does the Customers report use?
It shows the location stored on the customer record. If a customer ships somewhere other than their billing address, check the order itself for the shipping address.
See how Askshelf handles this: Customer analytics for WooCommerce