flows

The Cross-Sell Email Flow: 1 Product, From Your Own Orders

Most cross-sell emails show a grid of products on the same day as the review ask. Send 3 emails from day 14 after delivery, show 1 product, and pick it from what your past customers bought on order 2.

Oct 7, 2026

A cross-sell email flow sells a first-time buyer the next product they are most likely to want. Send 3 emails, 14, 21 and 28 days after delivery. Show 1 product per email, picked from past second orders.

A cross-sell email flow sells a first-time buyer the next product they are most likely to want. Send 3 emails, 14, 21 and 28 days after delivery. Show 1 product per email, picked from past second orders.

When should you send a cross-sell email?

Ask 5 sources and you get 5 answers.

Source When to send GetResponse "Right after a visitor leaves your store" Omnisend "A few days or a few weeks, the decision is yours" Klaviyo help center 14 days after Fulfilled Order Repeat A predicted day per customer, then 2 to 3 days apart Klaviyo's paid product analysis A "best cross-sell date" per product

Right after the order is too soon. The customer has not opened the box. You are asking them to buy a second thing before they know if they like the first.

Klaviyo gets closer. Its help center says you may want to wait until the customer has the order. That is why its default flow sends 14 days after the order is fulfilled.

But Fulfilled Order fires when the box leaves your warehouse, not when it lands. If shipping takes 2 days, they have used the product for 12. If it takes 9, they have used it for 5.

So count from delivery. Send the first email 14 days after the box arrives. No delivery event in Klaviyo? Use Fulfilled Order and add your real average shipping time to the delay. Check that number against carrier data, not your shipping policy page.

How do you pick which product to cross-sell?

Look at what your customers bought on their second order. That is the whole method.

Klaviyo has 2 ways to do this for you. Neither is a sure thing.

  • The "products a customer may also like" feed. Klaviyo says it uses collaborative filtering. That means it guesses what someone will buy next from what similar customers bought. It skips items the person already bought, which is right for a cross-sell. But it needs order history to work. On the Klaviyo forum, one store found the feed showed its fallback products to every customer they tested.
  • The dynamic cross-sell flow. It picks a "best cross-sell date" for each product. It also needs Advanced KDP or Marketing Analytics. Klaviyo says those are not part of its standard app.

You do not need either. You need one spreadsheet.

  1. In Shopify, go to Orders and click Export. Pick the last 12 months. Big exports come by email.
  2. Open the file. Keep 3 columns: Email, Created at, and Lineitem name. An order with 3 products shows up as 3 rows.
  3. Sort by Email, then by Created at. Each customer's orders now sit together, oldest first.
  4. Find the customers with 2 or more orders. For each one, write down the first product and what they bought on order 2.
  5. Cross out any row where order 2 is the same product as order 1. That is a reorder, and your replenishment email flow handles it.
  6. Build a pivot table. First product down the side, second product across the top, count in the middle.

Read across each row. The biggest number is your cross-sell for that product. If you sell 40 products but most first orders are 3 of them, you only need 3 answers.

Shopify's community forum lands in the same place. Shopify does not label order 1, 2 and 3 for you. Export and sort it yourself.

How many products should a cross-sell email show?

Most guides say "a few." Klaviyo's tool is a product feed, a grid of products. A grid looks generous. It also hands the customer a choice they did not ask for.

The pivot table already made the choice. You know what people like this person bought next. Show that one product and say why. For example: "People who started with the cleanser came back for the moisturizer." Then one button.

If you want a number in the email, use your own. Count it from the pivot table: of the people who bought A and came back, how many bought B. If the count is small, leave the number out. The reason still works without it.

Should the cross-sell go in the review request email?

No. Klaviyo ships a built-in product review and cross-sell flow. Both asks go out on the same day. Klaviyo's own review flow doc treats the review as its own flow.

Split them. One email, one job.

A review request asks for a favor. A cross-sell asks for money. Put them in one email and you make the customer pick. You only need them to do one thing at a time.

Your review request email goes 7 days after delivery for products used right away. That flow is done by day 12. The cross-sell starts on day 14. No overlap.

Products that need time to prove themselves get their review ask on day 14. For those, push the cross-sell back a week. Since you split the flow by product anyway, that is one delay change on one branch.

How many cross-sell emails should you send?

  1. Then stop.
Field Value Trigger Delivered. Fallback: Fulfilled Order plus your average shipping time Filter Has not placed an order since starting this flow Split Trigger split on the product in the first order Emails 3 Timing 14, 21 and 28 days after delivery Exit condition Placed order One job Get the second product into the second order

The filter matters most. Klaviyo checks it before every send. Someone who buys after email 1 never sees email 2.

Email 1, day 14. The recommendation. One product, one reason, one button. No discount. They have had the first product for 2 weeks. If they like it, this is a tip, not a pitch.

Email 2, day 21. The proof. One real review from a customer who bought both products. Use their words. If no one has reviewed both yet, use a review of the second product alone.

Email 3, day 28. The soft offer. Still no order? Now a small push: a bundle of both, or a small discount on the second product. Then the flow ends.

Where this sits in the system

The post-purchase flow gets the first product used. The review request turns that use into a review. The cross-sell turns it into a second order with a second product.

For consumables, the replenishment flow sells the same product again. The cross-sell sells a different one. Keep both. A customer who buys 2 different products from you has 2 reasons to come back.

If 28 days pass with no order, the cross-sell is done. Do not add a fourth email. A customer who goes quiet for too long is a job for the winback flow.

For the full build order, start at the ecommerce customer retention hub.

Get the whole system

This is 1 flow of 12.

12 flows, 37 emails, one job: repeat purchases. Every trigger, every send delay, every exit condition, written out so you can build them this month.

12 flows, 37 emails, one job: repeat purchases.

Send me this plus the 12-flow guide.

Questions

When should you send a cross-sell email?
14 days after delivery, once the customer has used the first product. Klaviyo's default counts 14 days from Fulfilled Order, which is when the box ships. If you have no delivery event, add your average shipping time to the delay.
How do you pick which product to cross-sell?
Export your Shopify orders, sort by customer and date, and count what customers bought on order 2 after each first product. Leave out reorders of the same product. The most common second product is your cross-sell.
How many products should a cross-sell email show?
1. A grid of products hands the customer a choice. Your order data already made it. Show the one product people like them bought next, with one reason and one button.
Should you put the cross-sell in the review request email?
No. Klaviyo ships a combined review and cross-sell flow, but one email with two asks makes the customer pick. Send the review request first and start the cross-sell once it is done.
How many cross-sell emails should you send?
3: the recommendation on day 14, a real review on day 21, and a small offer such as a bundle on day 28. Then stop. A customer who stays quiet after that is a job for the winback flow.