Customers and retention

How to calculate your WooCommerce repeat purchase rate

Your WooCommerce repeat purchase rate is the share of customers who have ordered more than once. WooCommerce doesn't report it, but you can work it out: in WooCommerce › Customers, note the total customer count, then filter Number of orders to more than 1 and note the new count. Divide the second number by the first.

This guide walks through that calculation, a version for a specific time window, an SQL query for developers, and the traps that make the number look better or worse than it is.

What counts as repeat purchase rate?

The usual definition of repeat purchase rate is:

Repeat purchase rate = customers with 2 or more orders ÷ all customers who have ordered

Say your store has 1,840 customers, and 412 of them have placed two or more orders. Your repeat purchase rate is 412 ÷ 1,840 = 22.4%.

Some people measure a related number instead: the share of orders that come from returning customers. That's a different figure (it answers "how much of my business is repeat business?") and is covered in new vs returning customers in WooCommerce. Decide which one you're tracking and label it clearly.

The free way: two counts in the Customers report

  1. Go to WooCommerce › Customers.
  2. With no filters applied, read the customer count in the summary under the table. That's your total.
  3. Click Advanced filters, add Number of orders, and set it to more than 1.
  4. Read the customer count again. That's your repeat customers.
  5. Divide the repeat count by the total.

That gives you an all-time repeat rate. It's a fine starting number, but it has a bias: customers who joined last week haven't had time to order again, so a store that's growing fast will show a lower rate than its real behavior.

Measuring a fairer window

To remove that bias, only count customers who have had time to come back. Add a Registration date filter (or work from an export) so you only look at customers who first appeared, say, more than six months ago:

  1. Filter Registration date to before a date six months back. Note the count.
  2. Add Number of orders more than 1. Note the count.
  3. Divide.

Say your all-time rate is 22%, but customers who registered more than six months ago have a rate of 29%. The second number is the one to track: it compares like with like, and it won't drop just because a big sale brought in a wave of first-time buyers last month.

Registration date for guests depends on how WooCommerce records them, so if most of your buyers check out as guests, the SQL method below is more reliable because it uses each customer's first order date.

For developers: repeat purchase rate in SQL

The Analytics table wc_order_stats stores one row per order with a customer_id, and works the same with HPOS or posts storage. All-time repeat rate:

SELECT COUNT(*) AS customers,
       SUM(orders >= 2) AS repeat_customers,
       ROUND(100 * SUM(orders >= 2) / COUNT(*), 1) AS repeat_rate_pct
FROM (
  SELECT customer_id, COUNT(*) AS orders
  FROM wp_wc_order_stats
  WHERE parent_id = 0
    AND status IN ('wc-completed', 'wc-processing')
  GROUP BY customer_id
) per_customer;

And the fairer version, limited to customers whose first order was at least 180 days ago:

SELECT COUNT(*) AS customers,
       SUM(orders >= 2) AS repeat_customers,
       ROUND(100 * SUM(orders >= 2) / COUNT(*), 1) AS repeat_rate_pct
FROM (
  SELECT customer_id,
         COUNT(*) AS orders,
         MIN(date_created) AS first_order
  FROM wp_wc_order_stats
  WHERE parent_id = 0
    AND status IN ('wc-completed', 'wc-processing')
  GROUP BY customer_id
  HAVING first_order < NOW() - INTERVAL 180 DAY
) per_customer;

parent_id = 0 leaves out refund rows. Match the status list to the statuses your Analytics counts, and change wp_ if your prefix differs. If you group customers by the month of their first order and run this for each group, you have a simple cohort analysis.

Why your repeat rate can look wrong

  • Guests with several emails. WooCommerce links guest orders by email address. A customer who uses a work and a personal address counts as two one-time customers, which pushes the rate down.
  • Excluded statuses. Cancelled, failed and pending orders aren't counted if they're excluded in Analytics › Settings. That's usually what you want, but a custom status left out by mistake can hide real repeat orders.
  • Fully refunded orders. A customer whose second order was refunded may still count as a repeat customer in a simple count. Decide whether that matters for your store.
  • Wholesale or staff accounts. A handful of accounts that order constantly don't change the rate much, but they can distort revenue-based follow-ups. Filter them out by role or email if needed.

What Askshelf can and can't tell you

Askshelf's customer retention lookup reports your repeat purchase rate directly. It looks at all your orders, so the rate is for all time, along with average orders per customer and average lifetime spend. It returns counts and averages only, never names, emails or addresses.

Askshelfexample answer

What's my repeat purchase rate?

31% of your customers have ordered more than once. Customers average 1.6 orders each and have spent $72.40 on average over their lifetime.Customer retention, all time
An example on a demo store. In your store, the numbers come from your own orders.

Lifetime spend is revenue, not profit. The rate is all-time only, so it can't show cohorts or how the rate changed over the years, and it can't say which customers repeat. For a view of who has gone quiet, ask how many customers with 2 or more orders haven't ordered in six months:

Askshelfexample answer

How many customers with 2 or more orders haven't ordered in the last 6 months?

134 customers placed at least 2 orders but none since 8 May 2026. These are past repeat buyers who have gone quiet.Lapsed customers, at least 2 orders, none since 8 May 2026
An example on a demo store. In your store, the numbers come from your own orders.

Both are counts with no names. For the list of people, filter the Customers report as described in how to find customers who stopped buying.

How to raise your repeat purchase rate

  • Fix the second order first. Most of the drop happens between order one and order two. A follow-up email timed to your typical reorder gap (see how long customers take to order again) is the usual starting point.
  • Watch which first products lead to repeat buyers. Some products create regulars and others create one-time buyers. The guide to first-purchase analysis explains how to find them.
  • Measure the same way every month. Small definition changes move this number more than most marketing does.

For everything else WooCommerce can tell you about customers, start with the WooCommerce customer analytics guide.

Common questions

What is a good repeat purchase rate for a WooCommerce store?

It depends heavily on what you sell and how long you've been open, so there's no single good number. Consumables naturally repeat more than furniture. Compare your own rate over time, measured the same way each time, rather than against someone else's figure.

Does WooCommerce Analytics show repeat purchase rate?

No. There's no repeat rate, retention or cohort report in core WooCommerce. You calculate it from the Customers report (customers with more than one order divided by all customers) or from the Analytics tables.

Do guest customers count?

Yes, if you include them. The Customers report lists guests and links their orders by email address, so a guest who uses the same email twice counts as one repeat customer.

See how Askshelf handles this: Customer analytics for WooCommerce