Repeat Purchase Rate on Shopify: Calculate and Raise It
Find Shopify repeat purchase rate and time to second order in your own reports, with a worked cohort, then see where raising it sits: flows, pages and timing.
Quick answer: Repeat purchase rate is the share of customers who buy a second time. The version worth tracking is by cohort: take the customers whose first order fell in one month, count how many placed a second order within a fixed window such as 90 days, and divide by the size of the cohort. Shopify’s own “returning customer rate” is a different number (returning customers divided by everyone who ordered in the period), so do not mix the two. Pair the rate with time to second order, the days between first and second order, because that tells you when a reminder should land.
It is common to know your conversion rate and roughly what a customer costs to acquire, and still not know how many of those customers come back, or how long they take. That gap matters because cost to acquire a customer and customer lifetime value are two halves of one sum, and the second half is mostly repeat orders.
This guide shows how to calculate repeat purchase rate and time to second order from reports and exports you already have in Shopify, with an illustrative worked example. Then it maps where raising the rate lives: the product page, the post-purchase and replenishment flows, and the timing of reminders.
One thing to say plainly before we start. Prism3 sells Shopify SEO, GEO and CRO. We do not run email or SMS. The flow section describes work your own lifecycle person or email agency does, with Klaviyo’s help centre as the source for how those flows are built. Where this touches our work is the product page, the measurement, and the conversion rate of the first order, which sets what each customer costs before any repeat order happens.
A note on sources. Everything below about Shopify’s reports and Klaviyo’s flows was read on their own help pages as at 31 October 2026. Report names and menus change, so check yours. I have not used any industry “average repeat rate”: a repeat rate is only comparable if its source states the stores, period and definition behind it, and I have not relied on any that does.
Three numbers that all get called “repeat rate”
Pick which question you are asking first. “Repeat rate” is used for three measurements, and they disagree without either being wrong.
| Number | The question it answers | Where it lives in Shopify |
|---|---|---|
| Returning customer rate | Of the people who bought this period, how many had bought before? | Analytics, and the New vs returning customers report |
| Cohort repeat purchase rate | Of the people I acquired in one month, how many came back within N days? | Customer cohort analysis report, or an orders export |
| Time to second order | How long until a first-time buyer buys again? | An orders export (or the Returning customers report for a shortcut) |
Returning customer rate. Shopify’s analytics fields reference defines it as the percentage of returning customers relative to all customers who placed orders, with the formula returning customers divided by customers. A returning customer, in Shopify’s customer reports, is a customer who placed an order and whose order history already includes at least one order. Shopify’s developer documentation for ShopifyQL adds that its customers figure counts each customer one time within the selected sales, even if they placed more than one order.
Repeat customer rate (all time). Shopify’s own customer retention blog gives a simple formula: customers who purchased more than once, divided by unique customers, multiplied by 100. It is a lifetime figure that moves slowly and hides whether recent customers behave differently from old ones.
Cohort repeat purchase rate. This is the one I would manage a business by, because it holds age constant. You compare customers acquired in one period at the same number of days after their first order.
Here is why the first and third disagree. Say in October 1,000 customers placed orders and 180 of them had bought before. The returning customer rate is 180 / 1,000 = 18.0%. In November a sale brings 1,800 customers, and 190 of them had bought before. The count of returning customers went up, but the rate is 190 / 1,800 = 10.6%. Nothing got worse about loyalty. The sale filled the denominator with new people. (These numbers are illustrative.)
So the returning customer rate is a mix indicator: a quick read on how dependent you are on new buyers in a month. It is a poor test of whether retention work is working. For that, use cohorts.
Step 1: Read the returning customer rate
This takes two minutes and gives you a starting point.
- In your Shopify admin, open Analytics. Shopify’s overview dashboard page lists returning customer rate among its sales insights, alongside gross sales, net sales, orders and average order value.
- For a month-by-month view, open Analytics, then Reports, filter by the Customers category and open New vs returning customers, which Shopify describes as the number of first-time and returning customers for a given period. Group by month.
- For the last 12 months, write down returning customers, first-time customers and the rate.
Look for two things. Does the rate dip in months with big acquisition pushes, as in the example above? That is a mix effect, not decline. And is the count of returning customers flat or growing over the year? Growth in that count while the rate falls usually means acquisition is growing faster.
Step 2: Get a cohort repeat rate from the cohort report
Shopify’s Customer cohort analysis report is built for this. Shopify describes it as showing data about customer acquisition and retention, with customers grouped into cohorts by the date of their first order.
To open it: Analytics, then Reports, then filter by the Customers category and choose the cohort analysis report. Shopify’s help page does not state a plan requirement for it, so if it is missing for you, check your plan and permissions.
Reading the cohort grid
- Each row is a cohort: customers who placed their first order in the same period. The Intervals menu changes the period cohorts are grouped by (Shopify’s table description refers to weeks, months or quarters).
- Choose the metric. Shopify says the Metric menu includes number of customers, customer retention rate, gross sales, net sales and average order value. Choose customer retention rate.
- Retention rate has a specific meaning here. Shopify’s analytics fields reference defines it as the percentage of customers in the given cohort who placed an order in the given period. It is per period, not a running total.
- Mind the period 0 column. Shopify says it captures returning orders by the cohort’s customers in the same period as their first order. With monthly intervals, a customer who orders on 3 March and again on 28 March is already a repeat customer in Month 0. I look at Month 1 onwards for “came back” and treat Month 0 as a separate “bought twice straight away” signal.
- Click a cell for detail. Shopify says it opens cohort details: total sales, average order value, average orders per customer, top marketing and sales channels, and a ratio of one-time to subscription purchases. Some metrics might not display for a given cohort or period.
- Use the cohort definition. You can filter who belongs to a cohort by their first order (sales channel, marketing channel, marketing type, product name, subscription) and apply customer filters such as country or email subscription status.
Why the grid is not yet your repeat rate
The retention rate in each cell counts customers who ordered in that period. A customer who orders in Month 1 and again in Month 3 appears in both cells. If you add up the cells you will overstate the share of the cohort that repeated. For a cumulative figure (“by day 90, how many had bought a second time?”) you need to count distinct customers, which the next section does.
Two other cautions:
- Young cohorts always look bad. A cohort that started three weeks ago has had no time to reorder. Compare cohorts only at the same age: this year’s March cohort at day 90 against last year’s March cohort at day 90.
- Small cohorts swing. In a cohort of 40, four extra buyers moves the rate ten percentage points. Use quarterly cohorts if monthly ones are tiny.
Our guide to reading the Shopify cohort analysis report goes through the grid cell by cell.
Step 3: Calculate the cumulative repeat rate and time to second order from an export
This is the version I do in a spreadsheet, from one export.
1. Export your orders. In Shopify admin, go to Orders, click Export, and choose to export by date range. Shopify’s help page says exports by date are emailed to you and the store owner, and a large one can take hours, so start early. The file includes the customer email, the order date (the “Created at” column), the order name and the total. If your file repeats an order across several rows, keep one row per order name.
2. Number each customer’s orders. Sort by customer email, then by order date. Add a column that counts 1, 2, 3 for each customer. Order 1 is the first order.
3. Pick your cohort. Choose a month whose customers are old enough to have had a fair chance to reorder. For a 90-day repeat rate, that is any month more than 90 days ago. Filter to customers whose order 1 falls in that month. That is your cohort size.
4. Count second orders inside the window. For each cohort customer, take the date of order 2 minus the date of order 1. That is their days to second order. Count how many cohort customers have an order 2 within 30, 60, 90, 180 and 365 days. Divide each count by cohort size.
5. Find the median. Among customers who placed a second order, take the middle value of days to second order. Use the median, not the average, which a few year-later returners drag up.
6. Check the edges. Remove test, wholesale and staff orders. Decide how to treat refunded or cancelled first orders, and write the rule down so next quarter uses the same one. Check whether automatic subscription renewals are inflating the count, because a renewal is not a customer choosing to come back. Shopify’s cohort filters include a subscription option you can use to separate them.
A shortcut, with a catch. Shopify’s Returning customers report lists every customer with two or more orders, with their first and most recent order dates and their order count. For customers with exactly two orders, most recent minus first is days to second order. The catch is that customers with three or more orders drop out of that calculation, and they are probably your most frequent buyers, so the shortcut can make the gap look slower than it is. Use it for a rough read only.
If you write ShopifyQL, its schema documentation lists the customer’s first order date and the months between first order and a later order. I have not written a query here, so check the current schema.
Klaviyo’s predicted customer lifetime value needs at least 500 customers who have placed an order (cancelled, refunded and zero-value orders do not count), plus at least 180 days of order history and orders within the last 30 days (as at 31 October 2026). Your own spreadsheet has no such minimum, which is a good reason to learn the manual method first. If you have under a hundred new customers a month, use quarterly cohorts.
A worked example (illustrative numbers)
These numbers are made up to show the method. They are not from a real store and not a benchmark. Suppose a store sells a serum that lasts 56 days if used daily, and 400 customers placed their first order in September 2025. Twelve months on, you run the export.
| Window after first order | Customers with a second order | Share of the cohort |
|---|---|---|
| 30 days | 22 | 5.5% |
| 60 days | 49 | 12.3% |
| 90 days | 64 | 16.0% |
| 180 days | 88 | 22.0% |
| 365 days | 104 | 26.0% |
The median days to second order, among the 104 who reordered, is 66.
What this tells you:
- The cohort repeat purchase rate is 16.0% at 90 days and 26.0% at 12 months. Track both, always with the window attached. “26% repeat” with no window means nothing.
- Time to second order is 66 days against a 56-day product. Customers typically reorder about ten days after the bottle runs out, so the reorder is happening, only late. That suggests room for a well-timed reminder. If the median were 40 days, customers would be reordering before the bottle runs out, and a reminder at day 47 would arrive after the moment had passed.
- Most of the repeat happens early. Of the 104 who reordered within a year, 64 did so within 90 days. That is the window where a flow has the most to work with.
What a better rate is worth, honestly
Say a lifecycle change lifts the 90-day rate from 16% to 20%. On a cohort of 400, that is 16 more second orders. If each contributes A$34 after product cost, shipping and fees (illustrative), that is A$544. If the blended cost to acquire a customer was A$40, the 400 customers cost A$16,000, and the extra A$544 is 3.4% of that.
That is a reality check, not a reason to ignore repeat purchase. A second order is the start of a pattern, the customer has already been paid for, and a 4-point lift applies to every month’s new customers, not one. But if your first order loses money after acquisition cost, a modest lift in repeat rate will not rescue it. Both halves of the sum need work. Our guides to customer lifetime value on Shopify and CAC payback period show how to put them together. Timing matters there: if the median second order arrives on day 66, repeat cash comes back well after the first order, which changes how long a customer takes to pay for themselves.
Where raising the rate actually lives
Repeat purchase is not a setting you change. It is the result of four things, owned by different people: what the product page promises, post-purchase email and SMS, the timing of the reorder reminder, and the product, delivery and service themselves. No flow fixes a customer who did not like what arrived. The middle two are lifecycle work done in an email platform.
The product page: set expectations that create a reorder moment
This is the part closest to what we do. What follows is my practitioner view, not a measured result. A customer who does not know how long the product lasts cannot know when they will need more. Check whether a shopper can answer these without leaving the page:
- How long does one unit last with normal use? (“About eight weeks with daily use” beats “a premium size”.) State it only if it is true for typical use.
- How should I use it, and what should I notice, by when? A realistic expectation protects the second order. Someone who expected a result in a week and got it in six may not reorder.
- Is there a way to avoid running out? Shopify’s retention blog says subscriptions fit repeat-use items and products that need regular replenishment, and suggests “pause before cancel” options. If you offer one, say in plain text what it costs and how to skip, pause or cancel.
- What happens if I buy a larger size? A multi-pack can push the second order later and lower your repeat rate while raising revenue per customer. Watch both numbers.
Our product page CRO checklist covers the page elements. The “how long will it last” line is also the input to your replenishment timing below.
Post-purchase flows: the lifecycle team’s job
Klaviyo’s help centre sets out the building blocks. I am describing them so you know what to ask your email person for, not offering to build them.
- A post-purchase flow is triggered by a Placed Order event. Klaviyo lists four types: thank you, cross-sell, upsell and product review flows.
- Delays differ by type. Klaviyo recommends time delays for product review, cross-sell and upsell flows, and does not recommend them for thank you flows.
- Split new from returning. Klaviyo’s example splits on the condition Placed Order equals 1 over all time, which picks out first-time buyers. A first-time buyer and a fifth-time buyer should not get the same message.
- Use Smart Sending. Klaviyo suggests it to limit how many messages someone receives in a set period.
For how these flows fit together on a Shopify store, see our guide to the post-purchase flow in Klaviyo.
Replenishment: timing matters most
Klaviyo’s replenishment flow guidance is useful because it is specific.
- Trigger and product. Use the Placed Order trigger, and for a single product add a trigger filter (such as items contains that product) so only orders containing it start the flow. If your products have different lifespans, another Klaviyo help article, on predictive analytics, recommends separate Placed Order triggered flows for products with distinct replenishment cycles, because its expected date of next order does not consider which products were ordered.
- Timing from the buying cycle. Klaviyo’s example is a 30-day supply with the first reminder around day 25.
- Number of messages. Klaviyo’s rule of thumb is two reminder emails, then one follow-up after the projected buying cycle has passed, with an incentive in that follow-up. It also says not to badger customers.
- Stop filter. A profile filter of Placed Order zero times since starting the flow prevents someone who has reordered from getting a reminder. Klaviyo notes it does not remove them from the flow, and for product-specific flows the filter should be limited to that product, or a purchase of something unrelated could stop the reminder.
Now connect that to your own numbers from the worked example. A rule I would use:
- Start from the product’s real use-up date, which you know (56 days in the example). Copying Klaviyo’s ratio of day 25 for a 30-day supply gives roughly day 47 for a 56-day product.
- Check it against the measured median days to second order. If customers actually reorder around or after the use-up date (66 against 56), a reminder shortly before it is well placed.
- If the median is well before the use-up date, people are reordering early. Move the first reminder earlier or rethink what the flow is for.
- Put any incentive in the follow-up after the cycle, as Klaviyo suggests. My view is that a discount in the first reminder teaches people to wait for it.
This is also the reason to measure time to second order at all. Without it, the delay in a replenishment flow is a guess.
SMS: consent first
If your lifecycle team uses text messages, those are Klaviyo’s own platform rules: its thank-you flow article says the SMS steps send to customers who have opted in to text message marketing, and that “Placing an order alone does not provide that consent.” Its replenishment article says “Replenishment SMS messages require SMS marketing consent.” What the law requires in Australia is a separate question, so read our guide to SMS marketing consent for Australian Shopify stores and the regulator’s own pages (the Australian Communications and Media Authority, ACMA). This is general information, not legal advice.
What not to count as a win
Three “improvements” can lift the rate and lower profit: a discount on every reminder (the second order happens at a margin that may not cover product and shipping), automatic subscription renewals counted as customers choosing to come back, and pulling a reorder forward by a month without increasing how much people buy in a year.
Measuring whether a change worked
- Compare at the same age. The cohort that saw the new flow, measured at day 90, against the cohort before it, at day 90. Do not compare a young cohort with an old one.
- Split cohorts that behave differently. Use Shopify’s cohort definition to separate customers by first product, first-order sales channel, marketing channel, and subscription versus one-time. A blended cohort can hide a product that reorders well and one that never does.
- Mark your sale cohorts. Customers who arrive during a heavy discount often behave differently from full-price buyers. If you ran a Black Friday or Cyber Monday offer in November 2026, tag that cohort and read it separately at day 90, in late February 2027.
- Change one thing at a time where you can. If the product page, the flow and a subscription all change in one fortnight, you will not know which moved the number.
- Expect the flow report and the cohort not to match. A flow report credits orders to messages. Your Shopify cohort counts every second order, whatever caused it.
- Do not claim a cause you cannot show. A cohort that repeats more after a change is evidence, not proof. Seasonality or a shipping delay can do the same.
How this fits with acquisition cost
The point is to see one system, not two departments. What you pay for the first order is what repeat orders have to help recover, so if acquisition is the bigger problem, start with what to do first when CAC is high and lifetime value is low. Conversion rate sits inside acquisition cost: if fewer visitors buy, each customer costs more, and that is the part of the system we work on, after the click. Repeat purchase decides how many orders each customer eventually produces, and time to second order decides when that revenue arrives.
Watch the cohort numbers side by side: what the cohort cost, what it had paid back by day 30, 60 and 90, and what share came back.
Key takeaways
- Three numbers get called “repeat rate”: returning customer rate, cohort repeat purchase rate and the lifetime repeat customer rate. Know which one you are reading.
- Shopify’s returning customer rate is returning customers divided by everyone who ordered in the period, so it falls when acquisition rises.
- Calculate the cohort rate yourself: customers in one first-order month with a second order inside a fixed window, divided by cohort size. Measure time to second order from an orders export and use the median.
- Compare cohorts at the same age, split by first product, channel and subscription.
- A modest lift in repeat rate is real but small next to acquisition cost, so work on both halves of the sum.
- Raising the rate sits in the product page, post-purchase flows and replenishment timing. Your lifecycle team does the flows, not Prism3.
- Klaviyo’s SMS flows require opt-in marketing consent, and Klaviyo says placing an order alone does not provide it. Check Australian requirements with the regulator (not legal advice).
FAQs
How do I calculate repeat purchase rate on Shopify?
Pick a cohort: the customers whose first order fell in one month. Count how many placed a second order within a fixed window, such as 90 days, and divide by the cohort size. An orders export lets you count distinct customers inside your window.
What is the difference between repeat purchase rate and returning customer rate?
Returning customer rate is returning customers divided by all customers who ordered in the period, so it moves with how many new customers you acquired. Cohort repeat purchase rate follows one group of first-time buyers and asks how many came back within a set number of days. The second is the better guide to whether retention work is working.
What is time to second order and why does it matter?
The days between a customer’s first and second order; use the median across customers who reordered. It shows when repeat revenue arrives, when a replenishment reminder is best sent, and how long acquisition spend takes to pay back.
What is a good repeat purchase rate for a Shopify store?
I cannot give you an honest single number. A benchmark only means something if its source states the stores, period and definition behind it, and I have not relied on any that does. Shopify’s own analytics field reference prints a typical range for returning customer rate, but the field entry does not say which stores or period it covers, so I have not used it. A better target is your own cohort trend: is this quarter’s 90-day rate above last year’s at the same age?
Does Shopify show repeat purchase rate automatically?
Shopify shows returning customer rate in its analytics and has New vs returning customers, Returning customers and Customer cohort analysis reports. The cohort report gives retention per period. I did not find a report that gives a cumulative “second order within 90 days” figure directly, so the export method above is worth doing once.
When should a replenishment email go out?
Base it on the product’s buying cycle. Klaviyo’s help centre uses a 30-day supply with a first reminder around day 25 as its example, and suggests two reminders followed by one after the cycle has passed, with the incentive in that last message. Check the plan against the median days to second order from your own data.
Does Prism3 run email or SMS flows?
No. We sell Shopify SEO, GEO and CRO, and we do not run ads, email or SMS. Your lifecycle person or email agency builds the flows. Where we help is the product page, the tracking that makes your cohort numbers trustworthy, and the conversion rate of the first order, which sets how much each customer costs.
Keep reading
- How email lifts customer lifetime value on Shopify
- The DTC growth system: paid, organic, CRO and email
Want a second pair of eyes on what your first order costs?
A repeat rate counts the customers who came back; it does not show how many left before the first order. Book a free 30-minute diagnostic: we look at where your store loses buyers after the click, using your own numbers, and tell you what to fix first. We do not run ads or email. No pitch. No email gate.
If the first order is where the money leaks, our Shopify CRO service starts with a six-phase forensic audit that includes a tracking check.
Free 30-min diagnostic
Seen enough?
Book a free diagnostic.
We'll look at where your store loses buyers after the click and what to fix first. No pitch. No email gate. 30 minutes.
More from Prism3
Afterpay vs Zip vs Shop Pay Instalments: Shopify AU
Afterpay, Zip and Shop Pay Instalments compared for Australian Shopify stores: merchant fees, payouts, approval, checkout placement and a worked margin example.
AI-Referred Orders on Shopify: What Is Real and What Is Hype
What Shopify has disclosed about AI-referred orders, why the 13x headline needs context, how to find AI traffic in GA4 and Shopify, and what to do now.
AI Visibility Tools for Shopify: What They Measure and Miss
What AI visibility tools for Shopify stores really count: mentions, share of voice and citations, where the data is sampled or unstable, and how to use them.