← Growth guides
RevenueRetentionShopifyKlaviyo

Cross-Sell Rate: The Revenue Lever Hidden in Your Shopify Data

Most DTC brands have a cross-sell rate below 10%. That means 9 in 10 customers who buy your hero product never try anything else you sell. Here is how to find yours, identify the best product pairs, and build the Shopify and Klaviyo programme that fixes it.

By Caner Veli · 26 September 2026 · 9 min read

5-7x

cheaper to cross-sell an existing customer than acquire a new one

<10%

cross-sell rate for most DTC brands with no active cross-sell programme

18-25%

achievable cross-sell rate for brands with structured post-purchase flows

Source: Purposeful Profits Brand Growth Audits, named sprint clients, 2023-2026

When I audit a DTC brand, there is one question almost nobody can answer immediately: what percentage of your customers have ever bought from more than one product category? Not repurchased the same product, not ordered twice, but genuinely crossed into a second area of your range.

The number is almost always lower than the founder expects. For most founder-led brands with a range of three to eight SKUs, fewer than one in ten customers ever buy a second product type. The rest repurchase the same SKU if they come back at all, or they leave never having been introduced to anything else you make.

That gap is your cross-sell rate problem. It is not a product problem. It is a sequencing and communication problem, and it is one of the most capital-efficient growth levers available to any DTC brand because the customer already trusts you, has already paid, and requires no paid media to reach.

What cross-sell rate actually measures

Cross-sell rate is the percentage of customers who have ever purchased from more than one product category in their lifetime. It is a lifetime metric, not a per-order metric. A customer who buys your face oil in January and your serum in March has a cross-sell in their profile even though those were two separate orders.

This makes it different from average order value (AOV), which measures how much a customer spends in a single transaction. AOV improves when someone adds a second item to a single basket. Cross-sell rate improves when someone comes back and buys from a different part of your range. Both matter. They need different tactics.

It is also different from repeat purchase rate, which simply counts how many customers return for any purchase. A customer can have a perfect repeat purchase rate (buying every two months) but a cross-sell rate of zero if they only ever repurchase the same product.

Cross-sell rate matters because customers who buy across multiple categories have substantially higher lifetime values than single-category customers. The relationship is not linear: a customer who uses three of your products is not three times as likely to stay, they are significantly more likely to stay because leaving means giving up multiple products they depend on. Brand affinity compounds. The cross-sell is the entry point to that deeper relationship.

How to find your current cross-sell rate in Shopify

Shopify does not surface cross-sell rate as a native metric. You need to calculate it from raw order data. Here is the most direct method.

1

Export your orders CSV

In Shopify Admin, go to Orders and export all orders. Choose the time range that covers your full customer lifetime, ideally at least 12 months. The CSV includes a column for customer email and one for product title or variant SKU.

2

Group by customer and list unique product types

In your spreadsheet, create a pivot table with customer email as the row and a distinct count of product type (or product category if you have those set in Shopify) as the value. Any customer with a count above 1 has cross-sold. If you haven't set product types in Shopify, group by product title instead and manually tag which products belong to which category.

3

Calculate the rate

Count the number of customers with 2 or more distinct product types. Divide by your total customer count. Multiply by 100. That is your cross-sell rate. If you have 3,200 lifetime customers and 280 of them have bought from two or more categories, your cross-sell rate is 8.75%.

4

Find your best cross-sell pairs

From the same data, filter to customers who have crossed into a second category and count which product combinations appear most frequently. If 60 customers have both your cleanser and your moisturiser but only 12 have both your cleanser and your serum, the cleanser-to-moisturiser pair is your primary cross-sell opportunity. Start there.

If you are on Shopify Advanced or Plus, the Product Analytics report shows which products are bought together in the same order. For lifetime cross-sell analysis you still need the CSV method above. Third-party tools including Triple Whale, Lifetimely, and Glew provide this analysis automatically with real-time dashboards.

Why most DTC brands have a cross-sell rate below 10%

The reasons are consistent across the brands I audit. None of them are about product quality or customer satisfaction. They are all about sequencing and visibility.

01

The post-purchase experience ends at the dispatch email

For most DTC brands, communication after purchase is limited to a dispatch notification and a review request two weeks later. Neither of those introduces the customer to the rest of your range. The window between the customer receiving their first order and forming a strong product habit, typically the first 30 days, passes without any cross-sell conversation.

This is the highest-intent window in the customer relationship. They have just bought from you, the product is on their shelf or in their routine, and they are forming an opinion about your brand. A well-timed email during this window showing them what else you make and why it complements what they already use is one of the most effective things you can send. Most brands send nothing.

02

Product pages are siloed, not connected

Most Shopify product pages describe one product and stop. They may include a you-might-also-like widget at the bottom, typically powered by Shopify's default recommendation engine, but that widget often shows related products based on tags or collections rather than actual purchase affinity data.

The result is recommendations that are technically adjacent but not contextually compelling. A customer reading about a protein powder sees three other protein powders. They do not see the pre-workout or the recovery supplement that customers who bought the protein powder also bought. The affinity-based recommendation, grounded in real purchase data, converts significantly better than the default algorithm.

03

Email flows are built for replenishment, not expansion

Welcome series, abandoned cart, and win-back flows are the standard for most DTC brands. All three are designed around a single product. The welcome series introduces the product the customer just bought. Abandoned cart follows up on the product they didn't buy. Win-back tries to get them to repurchase. None of these, by default, introduce the customer to a different product category.

The cross-sell email flow is typically absent entirely. There is no structured trigger for when a customer has been using Product A long enough to be introduced to Product B. That gap is where the revenue is.

04

The range is launched but never introduced

Many founder-led DTC brands expand their range over time, adding two or three new SKUs in year two or three. The existing customer base, who joined when there was only one product, rarely hears about the new additions in a targeted, personal way. A newsletter announcement reaches some of them. The majority of the customer base who do not open that email never hear about the new product at all.

The fix is not sending more newsletters. It is building a segment of customers who bought Product A before Product B was launched, and then running a targeted introduction sequence to that segment specifically. This is a one-time flow per product launch and it directly addresses the knowledge gap.

The Klaviyo cross-sell flow: how to build it

The most effective cross-sell mechanism for DTC brands is an automated Klaviyo flow that triggers a week or two after a customer's first purchase, checks whether they have already bought a complementary product, and sends an educational introduction if they haven't. This flow runs quietly in the background, costs nothing to operate once built, and compounds with every new customer.

Here is how to build the first version. Start with your single best cross-sell pair from the affinity analysis above. Do not try to introduce three products at once.

Step

Action

Detail

Trigger

Placed Order (Product A)

Flow triggers when a customer purchases your primary SKU or category. Set a filter to exclude customers who have already purchased Product B.

Wait 14 days

Time delay

Give the customer time to use Product A and form a routine. Too early and the cross-sell feels pushy. 14 to 21 days is the window when curiosity is highest.

Email 1

Educational introduction

Lead with use case, not offer. Explain how Product B works with Product A. One paragraph of context, one clear product image, one CTA. No discount yet.

Wait 3 days

Check if purchased

If the customer purchased Product B after Email 1, exit the flow. If not, continue.

Email 2

Soft offer

Resend with a 10% incentive. Keep the same use-case framing but add urgency with a 72-hour expiry on the discount. This email typically drives 60-70% of cross-sell conversions from the flow.

Exit

Suppress from future cross-sell

Once a customer has purchased both products, tag their profile and exclude them from this flow permanently. Route them into a higher-tier recommendation flow for a third product.

The educational framing in Email 1 is deliberate. Customers who have just bought a product are not ready to buy a second one on day 14. They are still forming a relationship with the first. The job of Email 1 is not conversion. It is awareness and context-setting, so that when Email 2 arrives with an offer, the customer understands why the second product is relevant to them specifically.

Open rates on these flows typically run 35 to 50%, significantly above a standard promotional email, because the trigger timing is tied to a recent purchase and the content is directly relevant to what the customer already uses. The discount in Email 2 is the minimum needed to convert, not the maximum you can offer. Test 10% before 15%. The economics of a cross-sell are very different from an acquisition discount because you are not paying CAC on this customer.

Cross-sell rate on the product page: what actually works

The Klaviyo flow handles the post-purchase cross-sell. The product page handles the pre-purchase version, where a customer browsing Product A sees a reason to add Product B to the same order. Both matter. The tactics are different.

The default Shopify product recommendations widget, the one that renders automatically at the bottom of most product pages, uses a collaborative filtering algorithm based on what other customers viewed or added to their cart. It is not based on what customers actually bought together. For most DTC brands with a small product range, the default recommendations show items that are too similar to the main product (other sizes, other flavours) rather than genuinely complementary products from different categories.

Replace the default widget with a manually curated frequently bought together section for your top three to five products. Pick the cross-sell pair you identified in the affinity analysis, write a one-sentence explanation of why the two products work together, and make the add-to-cart frictionless. Apps including Rebuy, Frequently Bought Together, and Wiser allow you to manually set cross-sell pairs at the product level, bypassing the algorithm entirely and ensuring your most commercially valuable pairs always show.

The framing matters more than the placement. "Customers also buy" is generic. "Works best with [Product A]" or "Complete the routine" creates a reason why two products belong together. The cross-sell on a product page should feel like a recommendation from someone who knows the range, not a feed of random related items.

What a 5-percentage-point improvement is worth

The mathematics of cross-sell rate improvement are straightforward and the numbers are usually larger than founders expect. Here is a worked example using conservative figures.

Assume a brand with 4,000 lifetime customers, an average order value of £42, and a current cross-sell rate of 7%. That means 280 customers have bought from more than one product category. The 3,720 remaining customers have only ever bought one product type.

Improving cross-sell rate from 7% to 12% means 480 customers have bought across categories. That is 200 additional customers making a second-category purchase, each spending around £42. Total additional revenue: £8,400. No new customers acquired. No additional ad spend. No new products launched. The only change is a Klaviyo flow that runs automatically and a curated recommendation on three product pages.

The compounding effect is where it gets more significant. Customers who cross into a second product category have markedly higher retention rates than single-category customers. Research from DTC analytics platforms consistently shows that multi-category customers have 40 to 60% higher 12-month retention than single-product buyers. A customer who uses three of your products is unlikely to switch brands. Their churn risk is lower precisely because switching involves replacing multiple things they trust, not just one.

The immediate revenue gain from the cross-sell conversion is real and measurable. The long-term LTV gain from improved retention is larger still. Both come from the same programme built once and automated from there.

A real example: wellness brand moving from 6% to 14%

A wellness brand selling protein powder, collagen peptides, and a greens blend came to us with a cross-sell rate of 6%. They had 5,800 lifetime customers. Their email programme was limited to a welcome series and monthly newsletters. The post-purchase experience ended at the dispatch email.

The affinity analysis showed that customers who bought both protein and collagen had done so almost entirely by accident, mostly when both were on promotion at the same time. There was no programmatic introduction of collagen to protein buyers or vice versa. The greens blend had been live for eight months and fewer than 3% of existing customers had ever bought it.

We built two Klaviyo flows: one introducing collagen to protein buyers 18 days post-purchase, framed around recovery and skin health as a complement to a training routine. One introducing greens to all existing customers who had never bought it, framed as the third piece of their daily nutrition stack. We also updated the protein product page to feature collagen in a manually curated "Complete the stack" section with a two-sentence explanation of why the two products work together.

Ninety days later, their cross-sell rate had moved from 6% to 14%. The Klaviyo flows were converting at 4.2% on Email 1 and 7.8% on Email 2 (the discount email). Total additional revenue in the 90-day window: £18,600. The programme took three days to build and runs on autopilot. It will generate that revenue again in every subsequent 90-day window as new customers enter the top of the flow.

Find out what your cross-sell rate is hiding

The free scorecard covers cross-sell and post-purchase strategy alongside conversion rate, paid media, and email attribution. It takes three minutes and will show you immediately which lever represents the most untapped revenue in your business.

If you want the full analysis, the Brand Growth Audit includes a complete cross-sell rate calculation from your Shopify data, identification of your highest-value product pairs, and a built Klaviyo flow brief ready for your team to implement. Three days, Loom walkthrough, prioritised PDF report.

Frequently asked questions

What is cross-sell rate for a DTC brand?

Cross-sell rate measures the percentage of customers who have purchased products from more than one category or product line in their lifetime. A cross-sell rate of 12% means 12 out of every 100 customers crossed into a second product category. It measures how well you are expanding customer value beyond the first purchase, and it is distinct from repeat purchase rate, which counts repurchases of the same product.

How do I find my cross-sell rate in Shopify?

Export your orders CSV from Shopify Admin, open it in a spreadsheet, and group by customer email. Count customers who appear with two or more distinct product types and divide by total customers. Shopify Analytics on Advanced or Plus shows products bought together in the same order, but for lifetime cross-sell analysis you need the CSV method. Third-party tools including Triple Whale and Lifetimely provide this automatically.

What is a good cross-sell rate for a DTC brand?

For founder-led DTC brands with three to eight SKUs, a cross-sell rate of 10 to 18% is typical once a post-purchase programme is in place. Brands with no active programme typically see 5 to 8%. The most useful benchmark is your own rate over time: a 5-percentage-point improvement on 4,000 customers at a £42 AOV is over £8,000 in additional revenue without acquiring a single new customer.

What is the difference between cross-selling and upselling for DTC brands?

Upselling encourages a customer to spend more on the same purchase, for example upgrading from a 30-day to a 90-day supply. Cross-selling encourages a customer to buy from a different product category, for example adding a face oil to a moisturiser purchase. Both improve average order value, but cross-selling also improves lifetime value by expanding the customer into multiple product relationships and significantly reducing their churn risk.

How do I use Klaviyo to cross-sell to existing customers?

Build a flow triggered by a first purchase from Product A. Add a conditional split to exclude anyone who has already bought Product B. Wait 14 to 21 days, then send an educational email explaining how Product B complements Product A. If no click after 3 days, send a second email with a 10% offer and a 72-hour expiry. Open rates on these flows typically run 35 to 50% because the customer is warm and the content is directly relevant to what they already use.

Which products should I cross-sell first?

Start with the cross-sell pair that already has the highest natural affinity in your order data, meaning products customers are already buying together without any prompt from you. Export your orders, find which two SKUs appear most frequently in the same customer's history, and build your first flow around that pair. Once you have a working template and a measured conversion rate, expand to the next pair.

About the author

Caner Veli founded and exited Liquiproof, scaling from zero to 3,000+ retailers globally in under 6 years. He now runs Purposeful Profits, a focused growth consultancy for founder-led DTC and CPG brands. 12 named sprint clients. 518% average growth. 27x highest ROAS. Read more about Caner →