Tranthor logoTranthor
Lifecycle Marketing

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.

VukVuk
Replenishment Email: How to Calculate Your Reorder Window

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

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:

  1. Fill down Email and Created at from the first row of each order, keyed on Name (the order number). Check a few orders by hand.
  2. Drop any row where Canceled at is filled, and any order whose Financial Status shows it was refunded or voided. Check the values in your own file.
  3. Drop subscription orders. They arrive on a fixed schedule and drag every median toward it. If your subscription app tags its orders, look in Tags or Source.
  4. If Created at imports 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:

Email 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.

  1. Trigger on the order date. Wait for the SKU's send day, then check conditions at send time, not when the order was placed.
  2. 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.
  3. 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
Email First reminder, product image, one-click reorder Marketing consent, working unsubscribe
SMS Short second nudge Explicit consent, local telecom rules, easy opt-out
WhatsApp 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.

  1. Choose one SKU with enough volume, and test one product at a time through a full cycle if volume is thin.
  2. 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.
  3. Fix the primary metric first: reorders of that SKU within, say, 14 days after the send. Opens and clicks are secondary.
  4. Read the result as incremental reorders: treated reorder rate minus holdout reorder rate.
  5. Watch the costs: unsubscribe rate, discount share of reorders, and refunds on reminded orders.
  6. 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