Replenishment Email: How to Calculate Your Reorder Window
A replenishment email lands just before a customer runs out. Find your median reorder window per product from a Shopify export, then test the send day.

A replenishment email is a reorder reminder sent when a customer is about to run out of a consumable they bought before. The send is triggered by time since their last order of that product, and the whole job is timing: too early and it reads as pushy, too late and they have already bought from someone else.
A common default is "send it after 30 days", which is a guess. Your order history already holds the real answer, and a spreadsheet is enough to extract it.
Quick Answer
Your replenishment cycle is the median number of days between two orders of the same product by the same customer. Export your Shopify orders, work out that gap per customer and SKU, take the median per SKU, and send the first reminder at about 80 percent of that window. Treat 80 percent as a test: compare it with a later send day and with a no-email group, and judge it on extra reorders, not clicks.
Table of Contents
- What a replenishment email is and which products fit
- How to calculate your replenishment window
- A worked example with illustrative numbers
- Time to second purchase is the same calculation
- Replenishment email examples: subject lines and copy
- Replenishment email flow: timing, suppression, follow-up
- Email, SMS or WhatsApp for reorder reminders
- How to test the send day
- Where Tranthor fits
- FAQ
What a Replenishment Email Is and Which Products Fit
A replenishment email is closer to a reminder than a promotion, but it is still marketing: you are saving the customer the effort of remembering, and you want the order. That only works if the product has a usage clock, meaning the customer uses it at a fairly steady pace and notices when it is gone.
| Product type | Fit | Why |
|---|---|---|
| Coffee, tea, pet food, supplements | Strong | Steady daily use, fixed pack size, running out is felt |
| Skincare and beauty refills, filters, razor blades | Strong | Routine use with a visible end point |
| Fashion basics, underwear, socks | Weak | Replacement follows wear, not a clock |
| Furniture, electronics, appliances | None | One purchase lasts years, so use cross-sell or care content |
| Gifts and occasion purchases | None | The trigger is a calendar date, so build occasion reminders |
Do not force weak or none products into this flow. The second purchase campaign guide covers what to send instead.
Treat the reminder as a marketing message and send it only to customers who agreed to marketing. Shopify's order export includes an Accepts Marketing column you can filter on. For where replenishment sits in a wider plan, see the Shopify retention strategy post.
How to Calculate Your Replenishment Window
You need one export and one spreadsheet. Shopify's documented customer reports tell you who came back, but none gives the days between consecutive orders of the same product; the closest, "Average days since last order" in the RFM report, measures recency. So you build it from the order export.
Step 1: Export your orders
In Shopify admin, open Orders and click Export. In the Export orders window, choose Orders by date, set the start and end dates, pick a CSV file under Export as, and click Export orders. Per Shopify's documentation, an export by date is emailed to you rather than downloaded, so allow time for it to arrive.
Use 12 to 24 months if you have it. Less than a few reorder cycles and the median is noise.
Step 2: Clean the file
Shopify puts extra line items of one order on separate rows and leaves many fields blank on them. Before anything else:
- Fill down
EmailandCreated atfrom the first row of each order, keyed onName(the order number). Check a few orders by hand. - Drop any row where
Canceled atis filled, and any order whoseFinancial Statusshows it was refunded or voided. Check the values in your own file. - Drop subscription orders. They arrive on a fixed schedule and drag every median toward it. If your subscription app tags its orders, look in
TagsorSource. - If
Created atimports as text, convert it to a date (for example=DATEVALUE(LEFT(C2,10))) and spot-check one row.
Step 3: Calculate the gap between orders
Sort the sheet by Email, then Lineitem SKU, then Created at, oldest first. The row above is now the same customer's previous order of that SKU, if there is one. Use SKU rather than product name because names change with variants and renames.
Columns: A Email | B Lineitem SKU | C Created at | D Lineitem quantity | E Gap days | F Days per unit
E2: =IF(AND(A2=A1, B2=B1), C2-C1, "")
F2: =IF(OR(E2="", E2=0), "", E2/D1)
Dividing by the earlier order's quantity gives days per unit: a customer who bought three bags and reordered after 60 days used one bag per 20 days, not one per 60. Zero-day gaps are duplicates or split shipments, not usage, so the formula drops them.
Step 4: Take the median per product
On a second tab, list each SKU once and calculate the median and 25th percentile of its gaps. The median beats the average because a few stockpilers or holidaymakers skew an average.
Median days per unit: =MEDIAN(FILTER(F:F, B:B=H2, F:F<>""))
25th percentile: =PERCENTILE(FILTER(F:F, B:B=H2, F:F<>""), 0.25)
Window for a pack: = median days per unit x units in the pack you are reminding about
Those are Google Sheets formulas. In Excel 365 the median line is =MEDIAN(FILTER(F:F,(B:B=H2)*(F:F<>""))). Count the gaps behind each SKU: with fewer than about 20 repeat gaps, treat the result as rough (a rule of thumb, not a statistical test) and consider grouping similar SKUs. Keep first-to-second-order gaps in a separate column. Because both dates are order dates, delivery time is already inside the gap, so you do not add transit days.
Step 5: Choose the send day
The send day is a fraction of the window, counted from the order date:
send_day = median window x 0.8 (first test)
At 100 percent of the median, half of your historical repeat buyers had already reordered, so you would mostly be emailing people who have bought. At 80 percent you reach more of them while they still have product left, and suppression removes the ones who already reordered. Treat 0.8 as a hypothesis to beat, not a benchmark, and test 0.65 and 0.95 next.
A Worked Example With Illustrative Numbers
The numbers below are invented to show the arithmetic. They are illustrative, not benchmarks.
First, the sorted export for two customers on one SKU:
| Lineitem SKU | Created at | Gap days | |
|---|---|---|---|
| a@example.com | COF-250 | 2026-01-05 | blank |
| a@example.com | COF-250 | 2026-01-31 | 26 |
| a@example.com | COF-250 | 2026-02-26 | 26 |
| b@example.com | COF-250 | 2026-02-02 | blank |
| b@example.com | COF-250 | 2026-03-08 | 34 |
Then the summary tab, one row per SKU, one unit per order for simplicity:
| Product | Repeat gaps in export | Median days | 25th percentile | First send day (80% of median) |
|---|---|---|---|---|
| Coffee beans, 250 g | 412 | 27 | 21 | day 22 |
| Vitamin C serum, 30 ml | 188 | 48 | 38 | day 38 |
| Dry cat food, 2 kg | 305 | 34 | 28 | day 27 |
| Protein powder, 1 kg | 96 | 41 | 30 | day 33 |
| Leather wallet | 14 | 212 | 118 | not a replenishment product |
Read the coffee row. The median gap is 27 days, so the first test send is day 22. The 25th percentile is 21 days, so roughly a quarter of repeat buyers had already reordered before day 22 and get suppressed; the other three quarters are still deciding. The wallet row shows a bad fit: a thin sample and a gap of months, which is a replacement pattern, not a usage clock.
Time to Second Purchase Is the Same Calculation
"Time to second purchase" in ecommerce is the days between a customer's first and second order: your replenishment window applied once, to the first reorder. Keep it apart from later-order gaps, because new customers are still deciding whether to stay. Shopify's Returning customers report gives first and most recent order dates and an order count for customers with two or more orders. For customers with exactly two orders, the difference between those dates is their time to second purchase; with more orders it becomes an average gap, and it is never per product. For the metric definition and the second-order rate, see second purchase meaning.
Replenishment Email Examples: Subject Lines and Copy
Good reorder reminders are plain. They state what the customer bought, roughly when, and make the reorder a single click. These patterns are original; adapt the wording to your voice.
| Pattern | Example subject line | When it works |
|---|---|---|
| Run-out estimate | "Your coffee should be getting low around now" | Strong usage clock, single SKU |
| Question | "Still have enough serum for next week?" | Skincare and routine products |
| Same as last time | "Your usual 2 kg bag, one click away" | Repeat buyers with a stable order |
| Delivery-aware | "Order today and it lands before you run out" | Longer shipping times or cross-border delivery |
A body that fits any of them:
Hi [first name], you bought a 2 kg bag of [product] on [order date]. A bag like that usually lasts [median days] days, so you may be getting close. Same size, same price: [reorder button]. If you have changed brands or your plans, ignore this and we will stop reminding you about it.
Fill the median from your own spreadsheet, and drop that sentence if you cannot back it up. Show the exact product and variant, add an image, and make the unsubscribe link work. Do not open with a discount: the customer already has intent, and a coupon on every reminder trains them to wait for it. The second purchase campaign guide covers when an incentive is worth it, and repeat purchase campaign examples shows other campaign shapes.
Replenishment Email Flow: Timing, Suppression, Follow-Up
A replenishment email flow needs little structure. Three rules cover it.
- Trigger on the order date. Wait for the SKU's send day, then check conditions at send time, not when the order was placed.
- Suppress before sending. Skip anyone who already reordered that SKU, anyone not opted in to marketing, and anyone with an open complaint or return on that product.
- Send at most two reminders. The first at about 80 percent of the window, the second around 110 to 120 percent for people who still have not reordered, with a different angle: ask whether they still need it, offer another size, or mention a subscription if you run one. Then stop and let the customer fall into your normal win-back path.
Count these sends against your overall contact frequency. A customer who gets a weekly promotion and a reminder in the same week experiences one noisy brand.
Email, SMS or WhatsApp for Reorder Reminders
Email is the default: it is cheap, carries an image and a one-click reorder, and is easy to ignore. SMS and WhatsApp suit a short second nudge to opted-in customers who did not open the email, and both bring rules email does not.
| Channel | Good for | Rules to plan around |
|---|---|---|
| First reminder, product image, one-click reorder | Marketing consent, working unsubscribe | |
| SMS | Short second nudge | Explicit consent, local telecom rules, easy opt-out |
| Customers who already talk to you there | Opt-in, approved templates, per-message charges |
Three points from Meta's documentation matter for WhatsApp.
Opt-in comes first. Meta's opt-in guidance says businesses must obtain opt-in before messaging people, that the opt-in should state the person agrees to hear from your named business, and that you stay responsible for complying with applicable law. It suggests covering the message categories you will send, or collecting separate opt-ins per category. If you already message customers on WhatsApp, check what your existing wording covers before adding reorder reminders.
A reorder nudge is business-initiated. Outside the 24-hour customer service window, which opens when the customer messages you, only approved template messages can be sent. Meta's template categorization guide treats retargeting, such as a cart reminder, as marketing and reserves utility for non-promotional messages. It does not name replenishment, so this is our reading: plan on the marketing category for a reorder reminder.
Marketing templates cost money and are capped. Meta's pricing page says marketing templates are charged per delivered message, with rates that vary by recipient country. Per-user limits mean WhatsApp may cap how many marketing templates one person receives, and if a customer has stopped marketing messages from you, the API does not send them.
For the consent rules in the Gulf, read WhatsApp marketing in the UAE and Saudi Arabia.
How to Test the Send Day
A replenishment email is easy to credit for orders it did not cause, because the people who click are the people about to reorder anyway. Measure it against a holdout.
- Choose one SKU with enough volume, and test one product at a time through a full cycle if volume is thin.
- Split eligible customers into three groups: send at 80 percent of the window, send at a later day such as 100 percent, and a holdout that gets nothing.
- Fix the primary metric first: reorders of that SKU within, say, 14 days after the send. Opens and clicks are secondary.
- Read the result as incremental reorders: treated reorder rate minus holdout reorder rate.
- Watch the costs: unsubscribe rate, discount share of reorders, and refunds on reminded orders.
- Re-run the spreadsheet every quarter. Windows move when pack sizes, pricing or customer mix change.
If both send days beat the holdout, keep the earlier one only if its unsubscribe rate does not rise. If neither beats it, the product probably has no usage clock, so stop sending it.
Where Tranthor Fits
The spreadsheet is the manual version of a job that never ends: find the moment a customer is likely to reorder, draft the message, and send it within limits you approve. Tranthor starts from your Shopify orders and looks for customers who bought once and have not come back. The first run of every playbook starts in review, so you approve or request changes before anything sends, and limits you approve, such as contact frequency and spacing, are enforced at send time. It respects subscriptions and unsubscribes. The AI CRM for ecommerce page shows the approach.
You do not need it to run this method. A spreadsheet, a holdout and an hour a quarter will tell you whether replenishment email is worth building.
Sources: Shopify: export orders, Shopify: customer reports, Meta: obtaining user opt-in, Meta: send messages and the customer service window, Meta: template categorization, Meta: WhatsApp pricing, Meta: marketing templates, Meta: per-user marketing template limits.
Frequently asked questions
What is a replenishment email?
A replenishment email is an automated reminder sent when a customer is likely to be running low on a product they bought before. It is triggered by time since the last order of that product, not by a calendar campaign. It works for consumables such as coffee, pet food, supplements and beauty refills, where usage is steady and running out is noticeable.
How do I calculate my replenishment window in Shopify?
Export your orders as CSV, sort by customer email, product SKU and order date, and calculate the days between each customer's consecutive orders of the same SKU. Divide each gap by the quantity on the earlier order, then take the median per SKU. That median is your replenishment cycle, and your first send day is a fraction of it.
When should a reorder reminder email be sent?
Start by sending at roughly 80 percent of the median reorder window, counted from the order date, because that reaches most repeat buyers before they reorder. Treat that fraction as a test, not a rule. Compare it against a later send day and a no-email holdout, and keep whichever produces the most extra reorders, not the most clicks.
Which products suit replenishment emails?
Products that are used up at a steady pace and bought in a fixed pack size suit them best: coffee, pet food, supplements, skincare and beauty refills, filters and similar consumables. Durable goods, one-off gifts and seasonal purchases do not have a usage clock, so occasion dates or product education usually work better than a reorder reminder.
Can I send reorder reminders on WhatsApp or SMS instead of email?
Yes, if the customer has given explicit opt-in for that channel. On WhatsApp, a business-initiated reminder outside the 24-hour customer service window must use an approved template, and Meta treats retargeting-style reminders as marketing, which carries a per-message charge. Email is usually the default, with SMS or WhatsApp as an opted-in extra.
What is time to second purchase in ecommerce?
Time to second purchase is the number of days between a customer's first order and their second order. It is usually summarised as a median across a cohort. It is the same calculation as a replenishment window, applied to the first reorder, and it tells you when a second-purchase message should land.
Keep reading

The Shopify Win-Back Email Campaign That Actually Reactivates Lapsed Customers
A practical guide to building a Shopify win-back email campaign for lapsed customers: how to define lapsed by vertical, a four-message sequence, and multichannel reactivation.

First-Time Buyer Retention Campaigns: 7 Plays for Ecommerce
Turn new customers into repeat buyers with first-time buyer retention campaigns for education, replenishment, cross-sell, review, loyalty, and win-back timing.

Repeat Purchase Campaign Examples for Ecommerce Retention
Seven repeat purchase campaign examples for ecommerce teams, including replenishment, cross-sell, second purchase, win-back, VIP, and churn-risk flows.