You are planning a post-purchase email or a second-order offer, and you need a day to send it on. Picking day 30 because everyone else does is a guess. Your order history already shows the right time: when first-time buyers actually come back, and when the ones who have not come back are unlikely to return on their own.
Key takeaways
-
Time to second purchase is the number of days between a customer's first and second order.
-
Read it as a distribution, not an average: the median, the 75th percentile and the 90th percentile tell you when most second orders arrive and where the window closes.
-
Only count customers whose first purchase is old enough to have had the full window, or recent buyers drag every number down.
-
The window often differs by first product, so a supplement buyer and a skincare kit buyer should not get their emails on the same day.
-
Send a nudge before the median, put any offer near the late end of the window, and stop the second-order flow once the window has passed.
What is time to second purchase?
Time to second purchase is the number of days between a customer's first purchase and their second. Someone who first buys on 1 March and orders again on 20 March has a gap of 19 days.
You measure it per customer, then look at the spread across all customers who came back. Customers who never placed a second order have no gap, so they do not appear in it. They do appear in the second-order rate, a retention rate for first-time buyers: the share who ordered again within a set number of days. You need both numbers, and the difference between them matters later in this article.
Time to second purchase is narrower than general purchase frequency, which looks at the gaps between all orders. The first gap decides whether a new customer makes a repeat purchase or stays among your one-time buyers, so it gets its own measurement.
How do I measure time to second purchase from my order data?
Identify each customer's first and second purchase in an order export, subtract the dates, and keep only customers whose first purchase is old enough to have had the full window. A spreadsheet is enough.
You need one row per order with:
-
Customer id or email, cleaned so the same person always has the same key.
-
Order id.
-
Order date, stored as a real date.
-
The main product in the order, for splitting by first product later.
If your export has one row per line item, reduce it to one row per order first. Remove cancelled and refunded orders. On WooCommerce, Affinsy's Order Exporter plugin gives you a line-item CSV with these columns.
Then:
-
Sort by customer, then by order date, oldest first.
-
Add an order number per customer. In Google Sheets or Excel, with customer ids in column A,
=COUNTIF($A$2:A2, A2)in the first row and filled down gives 1 for the first order, 2 for the second, and so on. -
Keep rows with order number 1 or 2, and put each customer's first and second order date side by side.
-
Subtract: second order date minus first order date gives the days between first and second purchase.
-
Decide your window, the latest day you want to read, for example 120 days. Remove every customer whose first purchase is less than that many days before the export date, whether or not they have ordered again.
Step 5 is the one most people skip. A customer who bought 50 days ago could still come back on day 100. Leaving recent buyers in pulls every number toward the short gaps, because only their fast repeaters have shown up yet.
Why does the average mislead, and which numbers should I use?
Because a few very late second purchases pull the average days far past the point where most second orders actually happen. Three metrics describe the window much better: the median, the 75th percentile and the 90th percentile.
-
Median: half of the customers who came back did so by this day. It is your center.
-
75th percentile: three quarters of returning customers were back by this day.
-
90th percentile: the late edge of the window. Past it, few customers come back on their own.
In a spreadsheet, with the day gaps in column D: =MEDIAN(D:D), =PERCENTILE.INC(D:D, 0.75) and =PERCENTILE.INC(D:D, 0.9).
Remember that these percentiles describe only the customers who came back within your window. They tell you when second orders arrive, not how many first-time buyers place one. For that, you need the curve.
Reading the second purchase window as a curve
Plot the share of all first-time buyers (the denominator includes the ones who never came back) who have placed a second order by day 30, day 60, day 90 and so on. The curve climbs fast at first and then flattens. Where it flattens, your post-purchase window is closing.
To build it, take the customers who passed the step 5 filter. For each checkpoint, count how many had a second order within that many days, and divide by the total number of first-time buyers in the group. Because every one of them has had the full window, each checkpoint compares like with like.
Two shapes to look for:
-
A steep start, then flat. Most second orders come early, and a customer who is past the flat point is unlikely to return without a push. Move them to a win-back flow.
-
Still rising at your last checkpoint. The window is longer than you measured. Wait for older groups of customers before you set the late edge.
A customer who passes the late end of the window is, for planning purposes, a lapsed first-time buyer. How you define lapsed customers is covered in this guide to the lapsed customer definition.
Does time to second purchase differ by first product?
Often, yes. A product that runs out on a schedule tends to bring customers back in a tight, predictable window with steady purchase patterns, while a product that lasts longer brings them back later and more spread out, if at all.
To check, group customers by the main product in their first purchase, or by product categories, and repeat the whole calculation for each group: the curve and the percentiles. Keep only groups with enough first-time buyers to trust; a few dozen customers is a sensible floor.
The first product is also a clue to the second: a trial size often leads to the full size, a kit to a refill. Use that when you write the email.
Worked example: two first products, two windows
Illustration with round numbers, not a benchmark.
A store sells a 30-day supplement and a skincare kit. It exports its orders and keeps first-time buyers whose first purchase is at least 120 days old, so everyone has had the full 120-day window.
Share of first-time buyers who have placed a second order:
| First product | First-time buyers | By day 30 | By day 60 | By day 90 | By day 120 |
|---|---|---|---|---|---|
| Supplement | 1,000 | 200 (20%) | 350 (35%) | 400 (40%) | 410 (41%) |
| Skincare kit | 500 | 25 (5%) | 75 (15%) | 125 (25%) | 150 (30%) |
Days to second order, among customers who came back within 120 days:
| First product | Came back | Median | 75th percentile | 90th percentile |
|---|---|---|---|---|
| Supplement | 410 | 32 days | 50 days | 70 days |
| Skincare kit | 150 | 60 days | 82 days | 100 days |
The two tables agree. For the supplement, 200 of the 410 repeaters were back by day 30, just under half, so the median lands a little past day 30. Between day 90 and day 120 only 10 more supplement buyers came back: that curve is flat, and the window has closed.
The skincare kit is different. Its curve is still climbing at day 120, so its true late edge is probably further out. The percentiles for the kit describe only the customers seen so far, and the store should recheck them once older groups of kit buyers are available.

When should I send a second-order email or offer?
Send a helpful nudge before the median, put any offer near the late end of the window, and stop the second-order flow once the window has passed. For the store in the example:
Supplement buyers
-
Around day 25, a reminder that the bottle is running low, before the 32-day median.
-
Around day 70, at the 90th percentile, an offer for customers who have still not ordered.
-
After day 90, no more second-order emails. Customers who have not returned move to the win-back flow.
Skincare kit buyers
-
In the first weeks, shipping updates and how-to-use content so the kit actually gets used.
-
Around day 55, a reminder about the refill, before the 60-day median.
-
Around day 100, the offer.
-
No stop date yet, until older data shows where the curve flattens.
Why the offer goes late: customers who come back by the median were coming back anyway, so a discount at that point mostly gives away margin. The offer can be a small discount, free shipping or a loyalty program reward. The second-order discount guide covers when an incentive pays. For customers past the window, the win-back email timing guide picks up where this window ends.
Where Affinsy fits
The spreadsheet method works, but it gets tedious for every product, every month. Affinsy reads your order history from a CSV upload, or orders sent by webhook or API, and shows reorder timing per product (the typical days between orders) along with a list of customers due to reorder. It also shows retention by month since first order and by first product bought.
From there you can build a customer list for a reorder window, export it, and load it into your email tool yourself, with copy-paste steps for setting up the flow by hand in Klaviyo, Mailchimp or Omnisend.
Next steps
-
Export your orders and calculate the days between first and second purchase, keeping only customers whose first purchase is older than your window.
-
Find the median, 75th percentile and 90th percentile.
-
Build the curve of first-time buyers who ordered again by day 30, 60, 90 and 120, and see where it flattens.
-
Split both by first product.
-
Build your second purchase strategy on it: the nudge before the median, the offer near the late end, and the stop date where the curve goes flat.
-
Repeat every quarter, comparing cohorts of first-time buyers at the same age.
If you would rather have the second-order windows per product worked out from your own orders, the 48-hour analysis delivers them, along with the list of customers who are due now.
FAQ
How often should I recalculate time to second purchase?
Every quarter, or after a big change in your product range, pricing or acquisition channels. Seasonal stores should look at customers won in each peak season separately, because they often come back on a different schedule.
Should I exclude customers whose first order was discounted?
Segment them rather than removing them. Customers who started with a deep discount often come back later, or not at all, and mixing them in moves the whole window. Comparing the two groups also tells you whether the discount brought in customers worth having.
What if my product lasts a long time?
The method is the same; the window is just measured in months. Look at any second purchase, not only a repeat of the same item: accessories, care products and other items in the same category often come first. Stretch your observation window to match, and keep only first orders old enough to have had all of it.
What is the difference between time to second purchase and second order rate?
The time between first and second purchase tells you when returning customers come back. Second order rate tells you how many first-time buyers come back at all within a set number of days. A store can have a short gap and a low rate: the few who return do so quickly. You need both to time your emails and to judge whether they work.