Customers and retention

How to see new vs returning customers in WooCommerce

To see new vs returning customers in WooCommerce, open Analytics › Orders, pick a date range, then use Advanced filters › Customer type to show orders from new customers or from returning customers. Read the orders and net sales totals for each, and divide to get the share of your business that comes from people who've bought before.

This guide covers the steps, how WooCommerce decides who's "returning", a monthly SQL breakdown, and what the split tells you.

The free way: the Customer type filter in Analytics › Orders

  1. In WordPress admin, go to Analytics › Orders.
  2. Choose a date range, for example Last month.
  3. Click Show › Advanced filters, add Customer type, and choose Returning. Click Filter.
  4. Note the totals at the top: orders, net sales and average order value for returning customers.
  5. Change the filter to New and note the same totals.
  6. Divide returning orders by all orders to get the returning share.

Say last month had 420 orders: 151 from returning customers and 269 from new ones. Returning customers placed 151 ÷ 420 = 36% of orders. If their net sales were $11,200 out of $26,000, they also brought in 43% of revenue, which tells you returning customers spend more per order.

Use the date picker's Compare to option to see the same split against the previous period or the previous year. The guide on comparing date ranges explains which comparison to use when.

How does WooCommerce decide who's returning?

WooCommerce Analytics stores a returning-customer flag on each order in its wc_order_stats table. An order is from a returning customer if that customer had placed an order before it.

A few consequences:

  • It's per order, not per customer. A customer who placed their first and second orders in the same month adds one "new" order and one "returning" order to that month.
  • It uses the whole history. Someone who's bought from you before counts as returning even when they buy a product for the first time.
  • Guests are matched by email. A guest who checks out with a different email looks new.
  • It depends on Analytics data. If you never ran Import historical data under Analytics › Settings, older orders may be missing, and customers whose first order isn't in the tables can look new when they aren't.

New vs returning orders or new vs returning customers?

Two numbers often get mixed up:

Metric Question it answers Where to get it
Returning share of orders How much of this month's business is repeat business? Analytics › Orders with the Customer type filter
Repeat purchase rate What share of all my customers ever came back? Customers report counts, see how to calculate repeat purchase rate

A store can have a high returning share of orders (a loyal core that buys often) and a low repeat purchase rate (most first-time buyers never return) at the same time. Both are worth knowing.

For developers: new vs returning by month in SQL

The returning_customer column in wc_order_stats holds the same flag the Customer type filter uses. It's the same table with HPOS or posts storage. This splits orders and net sales by month for 2026:

SELECT DATE_FORMAT(date_created, '%Y-%m') AS month,
       SUM(returning_customer = 0) AS new_customer_orders,
       SUM(returning_customer = 1) AS returning_customer_orders,
       ROUND(SUM(CASE WHEN returning_customer = 0 THEN net_total ELSE 0 END), 2) AS new_net_sales,
       ROUND(SUM(CASE WHEN returning_customer = 1 THEN net_total ELSE 0 END), 2) AS returning_net_sales
FROM wp_wc_order_stats
WHERE parent_id = 0
  AND status IN ('wc-completed', 'wc-processing')
  AND date_created >= '2026-01-01'
  AND date_created < '2027-01-01'
GROUP BY month
ORDER BY month;

The flag can be empty (NULL) for some orders, which this query leaves out of both columns. parent_id = 0 leaves out refund rows. Match the status list to the statuses your Analytics counts, and change wp_ if your prefix differs.

Reading the split over several months

One month's split tells you little. Run the monthly query (or the filter, month by month) and look at the pattern. Say you get this:

Month New-customer orders Returning-customer orders Returning share
July 280 140 33%
August 300 145 33%
September 260 150 37%
October 410 155 27%

October's returning share dropped, but returning orders actually rose slightly. The drop came from a jump in new customers, probably from a campaign or a sale. That's good news, as long as those new customers come back. The real test is November and December: if returning orders climb above 155, the campaign brought in people who stay.

This is why it's worth looking at the counts, not just the percentage. A falling share can mean you're growing, and a rising share can mean new-customer sales are drying up.

What Askshelf can and can't tell you

Askshelf's customer retention lookup does this split for you. For any date range it counts the customers who ordered, separates new from returning, and gives each group's net sales. It returns counts and totals only, never names, emails or addresses.

Askshelfexample answer

How many of October's customers were new, and how many came back?

402 customers ordered in October 2026: 251 new and 151 returning. Returning customers spent $11,870 in net sales against $15,480 from new customers, so they were 38% of buyers but 43% of net sales.Customer retention, 1–31 October 2026
An example on a demo store. In your store, the numbers come from your own orders.

It counts customers, not orders, so its figures won't match the Orders report's customer type filter exactly. It can't split the result by channel or country, and it can't list who the returning customers are. For that, use the Customers report. To set the split against overall totals, ask for a sales summary for the same month. To find returning customers you've lost, see how to find customers who stopped buying.

What the split tells you

  • Returning share falling while total orders rise: you're winning new customers but not keeping them. Look at the gap before second orders in how long customers take to order again.
  • Returning share rising while total orders are flat: loyal customers are carrying the store and new-customer acquisition has stalled.
  • New customers with a much lower average order value: often a sign that first orders lean on discounts. Check which coupons new buyers use.

For the full set of customer metrics, start with the WooCommerce customer analytics guide. There's also a glossary entry on cohort analysis if you want to follow groups of new customers over time.

Common questions

How does WooCommerce decide a customer is returning?

WooCommerce Analytics marks an order as from a returning customer when that customer already had an earlier order. It looks at the customer's whole history, not just orders for the same product, so a long-time customer buying something new still counts as returning.

What share of orders should come from returning customers?

There's no standard figure. It depends on what you sell, how long you've been trading and how much you spend on finding new customers. Track your own share by month and watch the direction.

Can I see new vs returning customers by channel?

Not in one built-in report. The Orders report can filter by customer type, and order attribution shows each order's origin, but combining the two means exporting orders or querying the database.

See how Askshelf handles this: Customer analytics for WooCommerce