How to count repeat purchase rate honestly
Repeat purchase rate is the share of your customers who bought more than once. According to Shopify's guide on retention programs (June 2025), the repeat customer rate is the number of customers who bought more than once, divided by all customers. The sum is easy. The choices behind it change the answer.
Four choices decide whether your number is honest.
- Name the window. Say 90 days or 180 days. The same buyers give a lower rate at 90 days than at 180.
- Start from first-time buyers. Take the people whose first order fell in one month and follow only them. Old buyers who order again in that month would flatter the rate.
- Count orders that were kept. A parcel refused at the door or sent back is not a customer. Leave it out of the group, and leave it out of the sum.
- Count customers, not orders. A buyer who orders three times is one repeat customer.
Two other names turn up in this field. According to Shopify India's blog (1 September 2026), retention rate is customers at the end of a period, minus new customers, divided by customers at the start, times 100. The page says retention means bringing first-time buyers back, and that it differs from loyalty, which aims for an emotional bond. According to Wikipedia (last edited March 2026), retention is the ability to keep customers over a specified period. Both name a period.
Our reading: a brand with no contracts finds the repeat rate of one named group of first-time buyers easier to read. You can see who is in the group, and you can check each name. More of the D2C numbers are in our guide on D2C marketing cost and metrics.
A worked example: a made-up tea brand
Say a tea brand sells a 250 g pack for ₹450 on its own site. All figures here are made up. The product costs ₹150, packing and shipping ₹90, payment charges ₹10, and the brand sets aside ₹20 for returns. That leaves ₹180 on an order, or 40% of the price, before marketing.
In January, 220 people ordered for the first time. Twenty refused the parcel at the door or sent it back. That leaves 200 first-time buyers who kept the order. Within 90 days, 46 of those 200 bought again. Between them they placed 58 orders. Within 180 days, 70 had bought again, with 100 repeat orders.
| How it was counted | The sum | Result | What to say about it |
|---|---|---|---|
| First-time buyers who kept the order, customers, 90 days | 46 ÷ 200 | 23% | Honest. The group and the window are named. |
| The same, with refused and returned orders left in the group | 46 ÷ 220 | About 21% | Counts 20 people who never kept the tea. The rate looks lower than it is. |
| Repeat orders counted instead of customers | 58 ÷ 200 | 29% | Counts some buyers twice. It is not a share of customers. |
| The same honest count, a longer window of 180 days | 70 ÷ 200 | 35% | Honest, if you say 180 days. Never set it beside a 90 day rate. |
Read the first and last rows together. Same buyers, same brand, 23% and 35%. Only the window changed. So write the window next to every rate you report.
We state no good repeat rate. We did not open a named page that gives a dated figure for Indian D2C brands. What is good for you depends on how fast the product runs out, its price and your margin. Compare each month's group with the months before it, using the same window.
How to find your natural reorder time
The natural reorder time is the usual number of days between a buyer's first and second kept order. The term is ours. A pack of tea that lasts five weeks has a different time from a face serum or a gift box. A message that comes too early feels like a push. One that comes too late may find the buyer has already bought elsewhere.
Use your own orders. You need one sheet with these columns: customer ID, order date, order number and order status. Then follow these steps.
- Export your orders and keep only the ones that were kept. Drop refused, returned and cancelled orders.
- Keep customers who have two or more orders. Put the date of the first order and the date of the second in one row for each customer.
- Add a column for the gap in days: the second date minus the first date.
- Find the middle gap with the MEDIAN formula. Find the two ends of the middle half with QUARTILE. That range is your window for the reminder.
- Send the reminder a few days before the middle gap. Then check the next month's group.
Here is a made-up sample of seven rows from the tea brand.
| Customer | First kept order | Second kept order | Days between |
|---|---|---|---|
| C1 | 3 Jan | 1 Feb | 29 |
| C2 | 5 Jan | 7 Feb | 33 |
| C3 | 8 Jan | 11 Feb | 34 |
| C4 | 10 Jan | 15 Feb | 36 |
| C5 | 12 Jan | 19 Feb | 38 |
| C6 | 15 Jan | 26 Feb | 42 |
| C7 | 18 Jan | 14 Mar | 55 |
The middle gap is 36 days. Half of the gaps fall between about 34 and 40 days. So the brand plans its reminder for day 30, a few days before the pack runs low.
Two cautions. First, buyers who have not reordered yet are not in the sheet. Early on, the sheet shows only the quick reorderers, so the gap looks shorter than it will be. Run it again when your oldest group is old enough. Second, one product can have several times. A 100 g pack and a 1 kg pack will not run out on the same day, so keep a sheet for each. To get a customer ID on every order, see our page on analytics and tracking.
Channels and the rules on their own pages
Choose a channel for each message, and read its own page before you send. Here is what the pages we opened say.
| Channel | What the page says | Page and month |
|---|---|---|
| You need opt-in permission from the person, confirming they want later messages. A separate opt-in for each message category is good practice. You must respect every request to stop, on or off WhatsApp. Outside the 24-hour customer service window, you may send only approved message templates. | WhatsApp Business Messaging Policy, last updated 23 September 2026 | |
| Senders of more than 5,000 messages a day to Gmail accounts must follow the bulk sender rules. They need three checks that show the mail really came from their domain, called SPF, DKIM and DMARC. Their marketing and subscribed messages must support one-click unsubscribe and carry a clearly visible unsubscribe link in the body. The page asks for a spam rate below 0.30% in Postmaster Tools, and advises keeping it below 0.10%. | Google Workspace Admin Help, email sender guidelines, October 2026 (no date on the page) | |
| SMS | We did not open an official text on India's SMS rules, so we state none. Ask your SMS provider, and a lawyer, what applies before you send a reminder. | None opened |
Our reading of the WhatsApp page: a reorder reminder sent a month after the order falls outside the 24-hour window, unless the buyer messaged you in the last day. So it must go as an approved template. Ask at checkout, with a separate tick box for order updates and for reminders and offers. Say what you will send, and give an easy way out. See our guides on the WhatsApp Business guide and on the DPDP Act for marketers, and our WhatsApp marketing page.
Our reading of the Google page: a small tea brand may send far fewer than 5,000 emails a day. Even so, a visible unsubscribe link and a low rate of spam complaints suit any sender. Email also fits the longer messages, such as the how-to-use guide. See our email marketing page. We state no Indian rule on consent here, because we did not open an official text. Ask your lawyer.
Keep one record for each person: when they agreed, how, to what, and when they asked to stop. A stop request must reach every tool you use, or the next campaign will message them. A CRM (customer relationship management) tool can hold that record. See our page on marketing automation and CRM.
Subscriptions, bundles and reminders: three options
According to Shopify India's blog (1 September 2026), subscriptions give steady repeat revenue for products that are used again and again or need replenishing. The page offers a curation box as a lower commitment option, and it suggests offering a pause before a buyer cancels. Here are the trade-offs in plain words. We give no figures, because they depend on your product.
| Option | How it helps repeat buying | The trade-off | Fits when |
|---|---|---|---|
| Subscribe and reorder | The next order arrives on the day you set, without a message. | The buyer must say yes to a plan at the first visit, and many will not. A buyer who no longer needs the pack must cancel, so offer a pause. You must ship on time every cycle and deal with failed payments. | The product is used up at a steady rate. |
| Bundle or multi-pack | A larger first order brings cash sooner. | The pack lasts longer, so the next purchase moves out and your reorder time changes. A bundle price also cuts the margin on that order. | The buyer already knows the product. |
| Reminder only | No commitment from the buyer. | It depends on the buyer acting. It needs the right day and the buyer's permission. | The brand or product is new, or the use rate is uneven. |
Our reading: start with the reminder. It teaches you the reorder time. Then offer a subscription to the buyers who reorder on time. Measure the reorder time again after any bundle.
Loyalty points without a discount habit
Shopify India's blog (1 September 2026) lists points that turn into store credit, gift cards or vouchers, and free shipping, as reward ideas. It says discounts make sense only when your margins can carry them. Our reading: a buyer who gets a coupon on every reorder learns to wait for the next one.
Say the tea brand gives ₹50 off every reorder. A repeat order that left ₹180 now leaves ₹130, which is 28% less. The next section shows what this does to payback. A coupon may also lift the repeat rate. So test it against a group that gets none before you decide.
Rules we would write for a points scheme:
- Give points for actions that help the brand: a second order, an honest review or a friend who buys. Do not give them only for spending.
- Pay in things that cost less than a price cut. Early access to a new blend, a sample in the parcel or a hand-written card cost you the product cost, not the price.
- Set a floor in your sheet. No reward may take an order below the margin you set.
- State the rule in plain words when a buyer joins, including when points end.
- Keep a group of buyers with no reward, and compare their repeat rate with the rest.
What to avoid
- Messaging people who never agreed, or sending after a stop request.
- A discount on every reorder.
- Counting refused and returned orders as customers.
- Quoting a repeat rate with no window, or setting a 90 day rate beside a 180 day rate.
- One fixed date for every product. A small pack and a large pack run out at different times.
- Asking for a review from a buyer whose complaint is still open.
- Copying another brand's rate or schedule. Your product, price and margin are your own.
How retention changes the payback on customer acquisition cost
Customer acquisition cost (CAC) is what it cost to win one new paying customer. CAC payback is the time a customer takes to give back that cost. Our guide on customer acquisition cost gives the formula, and the lifetime value entry in our glossary, LTV, gives the long view.
Say the tea brand's CAC is ₹300 for a customer who kept the order. This is made up. The first order leaves ₹180. So the first order does not cover it. Here is the margin earned per customer as repeat orders come in. Every repeat order is taken to leave ₹180, with no coupon.
| Time since the first order | Repeat orders per kept customer so far | Margin earned per customer so far | Covers a CAC of ₹300? |
|---|---|---|---|
| First order | 0 | ₹180 | No |
| 90 days | 0.29 (58 orders ÷ 200) | ₹232 | No |
| 180 days | 0.50 (100 orders ÷ 200) | ₹270 | No |
| 270 days | 0.70 (140 orders ÷ 200) | ₹306 | Yes |
In this made-up case, the CAC is earned back by day 270. Now say a reminder on day 30 lifts the repeat orders at 180 days from 0.50 to 0.70 per customer. The margin at 180 days becomes ₹180 plus 0.70 times ₹180, which is ₹306. The CAC is earned back by day 180, not day 270.
Now put the coupon back. Say each repeat order leaves ₹130 because of the ₹50 coupon. At 270 days the margin is ₹180 plus 0.70 times ₹130, which is ₹271. That does not cover ₹300. The coupon would need to lift repeat orders enough to make up the ₹50 on every one of them.
A payback of nine months needs cash that can wait. Ask your finance team how long your cash can carry it. Judge ads on the first order alone and you will see ₹180 against ₹300, and may stop ads that pay back later. Our guides on return on ad spend and on marketing return on investment show the first-order view and the longer view.
A monthly retention sheet
Copy the table into a sheet. One row for each month of first orders. Fill the row in as the months pass. A row for February cannot show a 90 day rate until May. The example row is the made-up January group.
| Month of first order | First-time buyers who kept the order | Bought again in 90 days | Repeat rate, 90 days | Bought again in 180 days | Repeat rate, 180 days | Repeat orders per customer, 180 days | Share who agreed to messages | Stop requests |
|---|---|---|---|---|---|---|---|---|
| January (made up) | 200 | 46 | 23% | 70 | 35% | 0.50 | 60% | 3 |
Add two columns if you can: reorder time for the group, and the message that went out on day 30. Review the sheet on a fixed day each month. Keep the definitions fixed too. A rate that moves only because the window changed tells you nothing. For a D2C brand, see also our D2C and ecommerce page.
Questions to ask an agency
If an agency runs your retention messages or reports your repeat rate, ask these.
- How do you define a repeat customer, and which window do you use?
- Are refused and returned orders left out of the group?
- Can I see the repeat rate by month of first order, in a sheet I own?
- How did you find the reorder time, and how often will you check it?
- Which message goes on which channel, and where is the record of each person's permission?
- What happens when someone asks to stop? Does it reach every tool?
- Will you test each reminder with and without an offer, and show me the result?
- Who owns the customer list, and will it come back to me if we stop working together?












































