# Win-back and replenishment emails for online stores

> How to use replenishment and win-back emails in your store: estimate the purchase cycle, define an inactive customer, what to write, and when to stop sending.

Source: https://pidgely.com/blog/win-back-and-replenishment-emails/ · Published: 2026-10-18 · Pidgely

Replenishment and win-back are two different flows. **Replenishment** emails go to active customers just before a product runs out, based on the consumption cycle. **Win-back** goes to people who stopped buying: it fires when a customer goes **two to three times your store's normal time between orders** without coming back, has two or three emails, and ends with a clear decision: anyone who doesn't respond leaves your regular campaigns. Skip that last step and win-back becomes one more ignored email that drags down your reputation.

## Why returning customers deserve attention

Acquiring a new customer costs ads, subsidized shipping and first-order discounts. Someone who already bought knows the store, trusts delivery and has an address on file. A well-timed email is usually the cheapest way to drive the second, third and tenth order.

The problem: without rules, old customers get the same campaigns as everyone else, stop engaging, and the store keeps mailing them for years.

## Replenishment: arrive before it runs out

### Estimate the cycle

1. **From the product**: pack size divided by recommended use. A supplement with 60 capsules at two a day lasts about 30 days.
2. **From your data**: the median time between orders of the same product or category among your customers. More reliable once you have history.

Send the reminder **a few days before** the estimated end, to allow for shipping time.

### What to write

```text
Subject: Running low on {{product}}?

Hi {{first_name}}, you last ordered {{product}} on {{date}}.
If you're near the end, restocking takes one click:

[Buy again]  (link to a prefilled cart)

Order by 2pm and it ships today.
```

Good practice:

- **Link to a ready-made cart** with the same product and variant.
- **Show the last order date**: it makes the reminder feel useful, not random.
- **Offer a subscription** if you have one: monthly buyers may prefer automatic delivery.
- **Stop if they already bought** through another channel, when you know it.

## Win-back: bring back the ones who left

### Define "inactive" with your own numbers

There's no universal threshold. Use your store's time between orders:

| Store type | Typical gap between orders | When to consider inactive |
|------------|---------------------------|---------------------------|
| Consumables (coffee, pet food, skincare) | Weeks | 2 to 3 missed cycles |
| Fashion and accessories | Months | 2 to 3 times the median gap |
| Durable goods (furniture, electronics) | Over a year | Focus on accessories and add-ons |

These rows are illustrations; what counts is the gap you calculate from your own orders.

### The sequence

| Email | When | Approach |
|-------|------|----------|
| 1 | On becoming inactive | What's new since their last order, no discount |
| 2 | 7 to 10 days later | An incentive (free shipping or an expiring code) |
| 3 | 7 to 10 days later | A direct question: "Still want to hear from us?" |

**Email 1: what changed.** New arrivals in the category they used to buy, the return of a product they bought, or real improvements (faster shipping, easier returns).

```text
Subject: New in {{category}} since your last visit
```

**Email 2: the incentive.** If you use one, this is where. Free shipping often outweighs a small percentage.

```text
Subject: Free shipping on us, through Sunday
```

**Email 3: the question.** Be honest: say you'll stop if they're no longer interested.

```text
Subject: Still want our emails?

You haven't opened our emails in a while, and we don't want to
crowd your inbox. Click below to keep hearing from us.
If you don't, we'll stop sending updates.

[Keep me subscribed]
```

> The "still want our emails?" message looks like it loses contacts, but the people it removes had already stopped buying. What you gain is a better reputation for the customers who still do.

## After win-back: clean the list

Anyone who didn't engage with any of the three emails should **leave regular campaigns** (or get only a big campaign once a quarter):

- **Reputation**: mailbox providers like Gmail watch engagement; mailing lots of inactive contacts pushes every email toward spam. See [how to keep store campaigns out of spam](/blog/ecommerce-campaigns-avoid-spam/).
- **Spam traps**: long-abandoned addresses can be recycled into traps.
- **Cost**: many tools bill per stored contact, not per email sent. See [what ecommerce email marketing costs](/blog/ecommerce-email-marketing-cost/).

**Transactional emails keep going**: if the person comes back and orders, they get confirmation and shipping emails as usual.

## How to measure it

- **Repurchase rate** for people who got the reminder vs a small holdout group that didn't.
- **Reactivated customers**: inactive customers who ordered again within 30 days.
- **Unsubscribes and complaints** per email in the sequence.
- **Margin**, not just revenue: a win-back with a deep discount may bring back a customer who only returns for discounts.

Opens aren't a good signal of "active" since Apple Mail Privacy Protection; prefer purchases and clicks. More in [ecommerce email metrics](/blog/ecommerce-email-metrics/).

## How to do it today with Pidgely

On the Scale plan, the **Win-back** automation of a connected store does the win-back part for you: it starts when a customer's last paid order is 90 days old (adjustable), sends an email and a second one a week later, and stops when they order again, with the recovered revenue on the automation page. Replenishment reminders can run as a **Contact date** automation on a date property you keep updated, such as `replenish_at`. See the [automations guide](https://docs.pidgely.com/guides/automations/).

On every plan you can also drive the timing from your own system:

- Keep contact properties like `last_order_at`, `favorite_category` and `order_count`, updated from your backend ([contacts guide](https://docs.pidgely.com/guides/contacts/)).
- Build **segments** like "inactive for 180+ days" and send [broadcasts](https://docs.pidgely.com/guides/broadcasts/) with personalization and one-click unsubscribe.
- Schedule individual replenishment reminders through the API with `scheduled_at`.

If your store runs on [Shopify](/integrations/shopify/), [WooCommerce](/integrations/woocommerce/), [Nuvemshop](/integrations/nuvemshop/) or [VTEX](/integrations/vtex/), connect it and your customers become Pidgely contacts automatically. [Create a free account](https://app.pidgely.com/signup/) to start.

## Checklist

- Replenishment based on product cycle or real time between orders
- Reminder early enough to cover shipping time
- "Inactive" defined by your store's numbers
- Three-email win-back: news, incentive, question
- Non-responders leave regular campaigns
- Transactional emails continue as usual
- Measured with a holdout group and with margin in mind

## Frequently asked questions

### When should a customer count as inactive?

When they've gone well beyond the normal time between orders at your store. A practical rule is two to three times the median gap between the first and second order. For a skincare store that may be a few months; for furniture, more than a year.

### What's the difference between replenishment and win-back emails?

Replenishment goes to active customers when the product should be running out. Win-back goes to customers who stopped buying, to bring them back before they forget the store.

### What should I do with people who ignore the win-back emails?

Stop sending them regular campaigns, or cut frequency sharply. Contacts that never engage hurt your domain reputation, can turn into spam traps over time, and cost money on tools that bill per contact.

### Does a win-back email need a discount?

Not always. Real news, a product they used to buy coming back, or a direct question about what happened can work without one. If you use a coupon, save it for the second or third email and give it an expiry date.

