Your WooCommerce store can tell you whether an order came from a new or a returning customer. It cannot tell you how many first-time buyers placed a second order, which product brought them back, or how many days it took. Those are the metrics that decide your customer retention plan, what to send and when, and all of them sit in your order history.
Key takeaways
-
WooCommerce reports show new versus returning customers, not the second-order rate by first-order month, the repeat rate by first product, or the typical gap before the second order. You get those from an order export.
-
Export one row per line item with order id, order date, order status, customer id or billing email, product and line total. Leave out refunded, cancelled and failed orders.
-
Guest checkout splits one person into several records. Clean and match billing emails before you count, or your WooCommerce repeat customers look fewer than they are.
-
Judge a cohort only once every customer in it has had the full window to come back.
-
Time the post-purchase email to the typical gap, send reorder reminders for consumables, and keep a second-order offer for the groups where the data says it is needed.
How do I see repeat customers in WooCommerce?
WooCommerce Analytics lets you filter orders by new or returning customer, and the Customers report lists each customer's number of orders and total spend. That tells you who has placed multiple orders, but not when, after which first product, or whether the share is getting better or worse.
There is no second-order rate for customers who started in the same month, no repeat rate by first product, and no typical gap before the second order. A returning customer share also mixes old loyal buyers with new ones, so it moves for reasons you cannot see. The returning customer rate guide explains why it is a weak signal on its own. The second order of a first-time buyer is the number to watch.
How do I calculate repeat purchase rate for a WooCommerce store?
Repeat purchase rate is the number of customers with two or more valid orders divided by the number of customers with at least one valid order in the same period. Count orders per customer in your export, then divide.
In a spreadsheet:
-
Keep completed orders and processing orders. Remove refunded, cancelled and failed orders, plus any test orders.
-
Build one customer key per row: the customer id for account holders, otherwise the cleaned billing email.
-
Count the number of orders per customer key with a pivot table, using distinct order ids.
-
Mark every customer with two or more orders as a repeat buyer.
-
Divide repeat buyers by all customers.
This WooCommerce repeat purchase rate is a useful headline, but it rewards stores for having old customers. For decisions, use the second-order rate: of the customers whose first order fell in a given month, how many ordered again within a set window, such as 90 days. Keep the window the same every time you measure.
Why does guest checkout make repeat customers look lower?
A guest order has no customer account, so the only thing that ties it to earlier orders is the billing email. If that email is typed differently, or the same person orders once as a guest and once with an account, WooCommerce counts two customers where there is one. Your repeat purchase rate and customer lifetime value both come out too low.
Match guests by email before you count anything:
-
Trim spaces from the start and end of the billing email.
-
Convert every email to lowercase.
-
Fix obvious typos in the domain, such as gmial.com, only where the rest of the address matches.
-
For account holders, look up the email on the account and use the same cleaned email as their key, so their guest orders join their account orders.
Customers who used two different addresses will still show up as two people. That leaves repeat numbers slightly under-counted, which is fine as long as you clean the same way every time.
Exporting your WooCommerce orders: the fields you need
You need one row per line item, so you can see which products were in each order. WooCommerce's own reports are not built for a line-item export with customer details, so the easiest route is Affinsy's Order Exporter plugin. The plugin writes a line-item CSV straight from your WooCommerce admin.
Whatever you use for the WooCommerce order export, check that these fields are in it:
-
Order id, to count distinct orders.
-
Order date, to find the first and second order.
-
Order status, to remove refunded, cancelled and failed orders.
-
Customer id and billing email, to identify customers, including guests.
-
Product name and id, to see what was bought.
-
Line total and order total, for revenue per product and per customer.
Export a date range of at least 12 months, and longer if your products last a long time.
Three tables to build from your WooCommerce data
These three tables answer most questions about WooCommerce returning customers. All start from each customer's first purchase.
Second-order rate by first-order month. Group customers by the month of their first order. Count how many placed a second order within your window. Divide by the size of the group. This is cohort analysis in its simplest form, one retention rate per starting month, and it shows whether customers you won recently come back more or less often than earlier ones. Only include months whose customers have all had the full window: with a 90-day window, the latest month you can judge is the one that ended at least 90 days before your export.
Repeat rate by first product. For every product that appeared in first orders, count the customers who started with it and how many of them came back within the window. With a large catalog, group products into product categories first. If a first order had several products, count the customer under each one. Keep products with enough first-time buyers to trust; a handful of customers is not a pattern.
Typical days to the second order. For every customer with a second order, subtract the first order date from the second. Take the median and the 75th percentile, not the average: a few customers who come back after a year drag an average far to the right.

Which WooCommerce products bring customers back?
The products whose first-time buyers place a second order more often than the store as a whole. Your repeat-rate-by-first-product table shows them directly: sort it from the highest second-order rate down.
These are usually things that get used up, such as coffee, supplements or pet food, but not always: a starter kit can lead to accessories, and a sample size to the full size.
Treat the top products as your gateway products: feature them in ads and other acquisition channels, on landing pages and in first-order offers, because a new customer who starts there is more likely to become a repeat customer. The gateway products guide goes further. Products at the bottom of the table, such as one-off gifts or durable goods, are fine to sell, but do not expect them to start a habit.
If you want this without building the table by hand, Affinsy reads the same export and sorts products into roles: which ones open baskets, which bring customers back for more, and which keep them buying.
Worked example: one store, three tables
Illustration with round numbers, not a benchmark.
A store exports 12 months of WooCommerce orders. After removing refunded, cancelled and failed orders and matching guests by email, it has 2,000 customers. Before the email cleanup the same orders showed 2,100 customers, because some people appeared twice.
Of the 2,000 customers, 500 placed two or more orders: a repeat purchase rate of 500 divided by 2,000, or 25%. Before cleaning, it would have read 420 out of 2,100, or 20%.
Second-order rate within 90 days, for the first-time buyers of March, April and May:
| First-order month | First-time buyers | Second order within 90 days | Second-order rate |
|---|---|---|---|
| March | 200 | 50 | 25% |
| April | 250 | 50 | 20% |
| May | 150 | 15 | 10% |
| Total | 600 | 115 |
May stands out. The next step is to check what changed: a discount campaign, a new traffic source, or a different first product mix.
The same 600 first-time buyers, by first product:
| First product | First-time buyers | Second order within 90 days | Second-order rate |
|---|---|---|---|
| Coffee beans | 300 | 90 | 30% |
| Grinder | 200 | 20 | 10% |
| Gift set | 100 | 5 | 5% |
| Total | 600 | 115 |
Coffee beans are the gateway product. The grinder and the gift set rarely lead to a second order.
Timing: among the 115 customers who came back, the median gap was 30 days and the 75th percentile was 45 days.
What should I do to get more repeat customers in WooCommerce?
Send the right message at the gap your order data shows, starting with the products that bring customers back, and keep discounts for the groups that need them. That is how first-time buyers become loyal customers. Using the illustration above:
-
Post-purchase email timed to the typical gap. A short how-to-use email a few days after delivery, then a reorder reminder around day 25, just before the 30-day median. The replenishment email timing guide covers the details.
-
Reorder reminders for consumables. Coffee buyers get the reminder. Grinder buyers get an email about the beans that customers who bought a grinder usually add, not a reorder prompt for a second grinder.
-
A second-order offer only where it is needed. A coffee buyer who is already past day 45 without a second order can get a small coupon for the next order. Customers who come back on their own do not need one, and giving it to them only lowers your margin. Keep a group without the offer so you can see whether it created orders.
-
Light touch for one-off products. Gift set buyers get one friendly message, not a reorder sequence. If May's buyers came in through a heavy discount, review whether that campaign brought the customers you want.
When is a spreadsheet no longer enough?
A spreadsheet works for one WooCommerce store with a small catalog. It gets slow with years of orders, hundreds of products, or several stores.
Affinsy runs this analysis outside WooCommerce: you upload the CSV from the Order Exporter, or send orders by webhook or API, and the WooCommerce page shows what it reads. It covers reorder timing per product with a list of customers due to reorder, RFM segmentation into customer segments, retention by month since first order and by first product, and customer lists you export and load into your email tool yourself. Nothing installs in your store apart from the exporter, and nothing syncs to your email tool on its own.
If you would rather have the second-order rates, gateway products and reorder windows worked out from your own WooCommerce orders, the 48-hour analysis does it for you.
FAQ
How often should I recalculate my WooCommerce repeat purchase rate?
Monthly is enough for most stores. Very busy stores selling daily consumables can look every week, and small stores every quarter. Do not read much into recent cohorts, because most customers in them have not yet had time to come back.
What is a good repeat purchase rate for WooCommerce?
It depends on what you sell, the price and how fast it gets used up, so a coffee store and a furniture store are not comparable. Track your own second-order rate over time and compare cohorts before and after a specific change, such as a new post-purchase email.
How can I estimate customer lifetime value from WooCommerce orders?
Sum the valid order totals per customer, then average them by month of first purchase. Compare months at the same age, for example 6 months after the first order, so older groups do not look better simply because they have had longer to buy.
Should I count processing orders?
Yes, in most stores. A processing order has been paid and is waiting to ship. Leave out refunded, cancelled and failed orders, because none of them ended as a sale you kept.