Analistable

What is our repeat purchase rate?

By the Analistable team · Updated · 4 min read

Repeat purchase rate = customers with two or more orders ÷ all customers in the period. Stack the order exports, count orders per customer, and divide. In the example, 2 of 4 customers (ana@lune.fr and eva@nordic.dk) ordered more than once: a 50% repeat rate.

Part of our guide: How to answer questions across multiple spreadsheets

The data

Orders from two stores (Web and Amazon), stacked
CustomerOrderDateAmountStore
ana@lune.frO12026-01-14120Web
ana@lune.frO22026-03-0280Web
ana@lune.frO32026-08-2195Amazon
ben@hart.co.ukO42026-02-1060Amazon
eva@nordic.dkO52026-04-05200Web
eva@nordic.dkO62026-09-12150Web
kim@kiln.ioO72026-06-3045Amazon

In a spreadsheet

Customers         =UNIQUE(Orders[Customer])
Orders per customer =COUNTIF(Orders[Customer], A2#)
Repeat rate       =SUM(--(B2# >= 2)) / ROWS(A2#)

A2# refers to the whole spilled list of customers; the double minus turns TRUE/FALSE into 1/0.

In SQL

SELECT COUNT(*) AS customers,
       SUM(n > 1) AS repeat_customers,
       ROUND(100.0 * SUM(n > 1) / COUNT(*), 1) AS repeat_rate
FROM (SELECT customer, COUNT(*) AS n FROM orders GROUP BY customer);
Result
customersrepeat_customersrepeat_rate
4250.0

Choices that change the number

  • Customer key across stores: ana@lune.fr ordered on the website and on Amazon. If the stores used different IDs, she'd count twice and the rate would fall. Match on email or a shared ID.
  • Period: a 12-month window gives a higher rate than a 3-month one. Always state the window.
  • Refunded orders: decide whether a fully refunded order counts as a purchase.
  • Cohorts: “share of January's new customers who ordered again within 90 days” is more useful for comparing months than one overall rate.

Ask it in Analistable: “What share of customers ordered more than once this year, by store?” Related: customer lifetime value from orders and refunds.

In Google Sheets

Helper column F (orders per customer): =COUNTIF(A$2:A, A2)
Repeat rate: =COUNTUNIQUE(FILTER(A2:A, F2:F > 1)) / COUNTUNIQUE(A2:A)

With customers in column A, the helper counts each customer's orders and the rate divides repeat customers by all customers. Format the result as a percentage.

Why the store split matters: a second example

Repeat rate by store vs combined
ScopeCustomersRepeat customersRepeat rate
Web only22100%
Amazon only300%
Both stores, matched on email4250%

On the web shop, ana@lune.fr (O1, O2) and eva@nordic.dk (O5, O6) both reordered. On Amazon, nobody placed a second order. Combined, ana's three orders across both stores make her one repeat customer, not two partial ones. Reporting each store alone hides that Amazon is acquiring one-off buyers while the web shop holds the loyal ones.

SELECT store, COUNT(*) AS customers, SUM(n > 1) AS repeat_customers
FROM (SELECT store, customer, COUNT(*) AS n FROM orders GROUP BY store, customer)
GROUP BY store;

Related measures to report alongside

  • Orders per customer: 7 orders ÷ 4 customers = 1.75. It moves when existing repeat customers order more, which the repeat rate ignores.
  • Time to second order: for each repeat customer, the gap between first and second order. ana@lune.fr took 47 days (14 January to 2 March).
  • Cohort repeat rate: of the customers who first ordered in a given month, the share who ordered again within 90 days — fair across months because every cohort gets the same window.

Excel 2019 and older

Insert a pivot table from the stacked orders with Customer in Rows and Count of Order in Values. Next to it, =COUNTIF(B:B, ">=2") / COUNT(B:B) gives the repeat rate, where column B holds the pivot's counts (exclude the Grand Total row from the range).

Troubleshooting

If the rate looks off
SymptomLikely causeFix
Rate far too highEach order line counted as an orderCount distinct order IDs per customer
Rate far too lowSame person under two IDs across storesMatch on lower-cased email
Rate jumps between monthsWindow changes lengthUse a fixed window or cohorts

Frequently asked questions

How do I calculate repeat purchase rate?
Divide the number of customers with at least two orders by the total number of customers in the period.
Should I combine orders from different stores?
Yes, if the same person buys in both — stack the exports and match customers on email so they aren't counted twice.
What's a good repeat purchase rate?
It varies widely by product and period; compare your own cohorts over time rather than against a generic benchmark.
Does a refunded second order count as a repeat?
Decide once and apply it consistently. Many teams exclude fully refunded orders, because the customer didn't really buy again.
How long should the window be?
At least as long as your typical gap between orders; for products bought a few times a year, use 12 months or cohorts.
Is repeat rate the same as retention rate?
No. Retention looks at customers active in one period who are still active in the next; repeat rate counts anyone with two or more orders in a window.

Related guides