# What should a Shopify store email after the order?

> A playbook for Shopify post-purchase, review request, replenishment and win-back emails, with timing and example copy, plus exactly what Broadcast can run today through a tag or a segment.

Source: https://sendbroadcast.net/how-to/shopify-post-purchase-and-win-back-flows

Four flows do most of the work after a sale. Post-purchase follow-up, a review
request, a replenishment reminder for things that run out, and a win-back for
customers who stopped buying.

This page covers what each one is, when it goes out, and what to say. The last part
shows what Broadcast can run today and what it cannot.

## Shopify's order confirmation is not a flow

Shopify already sends the order confirmation and shipping updates. Those are
transactional and go to every buyer. The flows on this page are marketing email,
so they go only to customers who agreed to it.

## Post-purchase follow-up

**What it is.** One to three emails after the first order. They help the customer
use what they bought and tell them who you are.

**Timing.** The first email a day or two after the order, a second about a week
after delivery.

**Example copy:**

> Subject: Getting the most out of your order
>
> Thanks for ordering from us. Three things most customers ask in the first week:
> how to care for it, how returns work, and how to reach us. Here are the answers.
> Reply to this email if anything is not right.

Keep it about the customer. A hard sell in the first email after a purchase reads
as greedy. For a reference point, Klaviyo's
[2025 Benchmark Report](https://www.klaviyo.com/wp-content/uploads/2025/02/2025-Benchmark-Report_AMER.pdf)
puts the average open rate of post-purchase flows at 59.77%, the highest of any
flow, with a 0.48% placed order rate. People read these. They do not buy from them
much.

## Review request

**What it is.** One email asking for a review, with one reminder at most.

**Timing.** After the product has arrived and been used. For most products that is
one to two weeks after delivery, not after the order.

**Example copy:**

> Subject: How is it working out?
>
> You have had your order for a couple of weeks. Would you tell other customers what
> you think? It takes a minute. [Write a review]

Link to the page where reviews live. With one product per store or per collection,
that link can be fixed in the email.

## Replenishment reminder

**What it is.** A nudge to reorder a product that runs out: coffee, skin care, pet
food, filters.

**Timing.** A few days before the product is likely to run out. A 30-day supply gets
a reminder around day 25.

**Example copy:**

> Subject: Running low?
>
> Your last order should be getting low about now. Reorder in one click and it will
> arrive before you run out. [Reorder]

This flow only works when the timing matches the product. One reminder for a whole
store of mixed products does not.

## Win-back

**What it is.** Emails to customers who bought before and have not bought in a
while.

**Timing.** Start at about twice your normal time between orders. For many stores
that is 60 to 120 days after the last order. Send two or three emails a week or two
apart, then stop.

**Example copy:**

> Subject: It has been a while
>
> We have added a few things since your last order. Here is what is new. If you
> would rather not hear from us, the unsubscribe link is below and we will not mind.

The last win-back email is a good place to offer a reason to come back, or to ask
whether they still want to hear from you. People who never respond are better off
your list.

Shopify has its own ready-made templates for welcome, win-back and first-purchase
upsell automations
([Shopify](https://www.shopify.com/marketing-automation)). If you run those in
Shopify, do not run the same flow in a second tool.

## What Broadcast can run today

Broadcast has no Shopify app and does not receive Shopify events. These flows work
in Broadcast through a small do-it-yourself connection. A paid order calls the
[Subscribers API](https://sendbroadcast.net/docs/api-subscribers), which adds the tags `customer` and `ordered`
and stores `last_order_at` in custom data.
[Connecting Shopify to Broadcast](/how-to/connect-shopify-to-broadcast) has the
setup, including a short script and a Shopify Flow recipe.

With that in place:

| Flow | How it starts in Broadcast | Needs the connection? |
|------|-----------------------------|----------------------|
| Post-purchase | A sequence with the tag trigger `ordered` | Yes |
| Review request | A delay step in the same sequence, then the review email | Yes |
| Replenishment | A delay step sized to the product, then the reminder | Yes |
| Win-back | A segment: tag `customer` and `last_order_at` not within the last 90 days | Yes |

### Post-purchase, review and replenishment as one sequence

1. Create a sequence and set its **Tag trigger** to `ordered`.
2. Add the follow-up email, a delay, the review request, a delay, and the
   replenishment reminder.
3. After the review request, add a condition on whether the previous email was
   clicked, and tag the people who clicked. A segment on that tag can then
   leave them out of later review asks.

See [branching a sequence](/how-to/branching-sequences) for the step types.

### Win-back as a segment

Segments can match a custom data date. Build a segment with two rules: tag is
`customer`, and custom data `last_order_at` is not within the last 90 days. Set it
as the **Segment trigger** on a win-back sequence. Broadcast checks every 15
minutes and enrolls people who match. See
[triggering a sequence from a segment](/how-to/trigger-a-sequence-from-a-segment).

Add a second segment for customers who ordered in the last 90 days, and set it as an
**Excluded segment** on the win-back sequence. A customer who orders again in the
middle of the sequence then gets no more win-back emails.

Store `last_order_at` as an ISO 8601 date. Shopify's `processed_at` already is one.
The [Segments API](https://sendbroadcast.net/docs/api-segments) explains how custom data dates are compared.
A subscriber with no `last_order_at` matches neither date rule. Customers from a CSV
import have none until their next order, unless you add the value yourself.

### Limits to plan around

- **Once per customer.** A subscriber goes through a given sequence once. A second
  order does not start the post-purchase sequence again, and a customer who lapses
  twice gets the win-back sequence only the first time.
- **No product content.** There are no product blocks. An email cannot list what
  was in the order with images and links. You can store a few values in custom data,
  such as the order number, and print them with `{{ custom_data.last_order_name }}`.
  The next order overwrites them.
- **One replenishment clock.** The delay in a sequence is the same for everyone in
  it. Stores with products that run out at different rates need one sequence and one
  tag per product type, set by your own connection code.
- **Email only.** Broadcast cannot send SMS.

Native Shopify event support is planned. Watch the [roadmap](/roadmap) for it.
Abandoned checkouts are a separate case: see
[Shopify abandoned checkout emails](/how-to/shopify-abandoned-checkout-emails).

## Frequently asked questions

### When should a Shopify post-purchase email go out?

A day or two after the order for the first email, and about a week after delivery
for the second. Send the review request after the product has been used, usually one
to two weeks after delivery.

### How long after the last order should a win-back email start?

At about twice your normal time between orders. For many stores that is 60 to 120
days. Send two or three emails, then stop.

### Can Broadcast send a win-back email to Shopify customers?

Yes, with a do-it-yourself connection. Your connection stores the last order date
on each subscriber, a segment finds customers with no order in 90 days, and the
segment starts a sequence. Broadcast has no Shopify app.

### Can a Broadcast email show the products a customer bought?

No. Broadcast has no product blocks. It can print values you stored in custom data,
such as an order number, but not a list of the items in each order.

---

The API reference for this setup: [Subscribers API](https://sendbroadcast.net/docs/api-subscribers),
[Sequences API](https://sendbroadcast.net/docs/api-sequences) and [Segments API](https://sendbroadcast.net/docs/api-segments). Comparing
tools for a Shopify store? See the [Klaviyo alternative](/compare/klaviyo-alternative)
page and the [e-commerce use case](/use-cases/ecommerce).
