To cross-sell specific products on Shopify, you build a short list of rules: this product triggers this offer. Then you decide where the offer appears, on the product page, in the cart, at checkout or in a popup, and how it is priced. Shopify’s own recommendation tools handle part of this, but they suggest what sells together rather than what you decide to push, so most stores pair them with an app or a theme block.
What cross-selling specific products means for a Shopify store
A cross-sell is a complementary item offered next to something the shopper is already buying. An upsell is a different move: more of the same item, a larger size, a bundle, or a gift once the cart passes a threshold.
Rule-based cross-selling means you write the pairing yourself instead of letting an algorithm guess:
- Trigger: the product that has to be in the cart or on screen.
- Offer: the one product you want to add.
- Placement: where the offer appears.
- Price: full price, a discount when both are bought, or free above a threshold.
Keep the list to three to five rules you will actually maintain. Fifty rules nobody checks are worse than three that work.
A worked example: someone buys a candle, so you offer the matches; someone buys a refill pouch, so you offer the glass bottle. The offer is cheap, obviously related, and does not slow the decision down.
Why Shopify’s default recommendations often miss the products you want to push
Shopify’s recommendations are generated from order history and product data. That has two consequences. First, they need volume to say anything useful, so a new product with no orders tends to stay invisible. Second, they surface what already sells together, which is often not the accessory you want to move: slow stock, a high-margin extra, or the item the whole offer was built around.
Shopify does let you take over. Its Search & Discovery app lets you hand-pick related products and complementary products for an individual product, so you can point a specific product at a specific add-on. What you cannot control is how loudly it appears. Usually the theme renders recommendations as a quiet row under the buy box or in the cart, and shoppers scroll past quiet rows.
The real gap is the trigger. Native recommendations say “these two go together”. They do not say “only when the cart contains this exact item, in the drawer, at a discount”. That kind of rule needs an app, a theme section with those settings, or a popup.
Setting up product-page cross-sells for chosen items
The product page is where the shopper is still deciding. Cross-sells work best here when the offer is small and the copy explains the connection.
- Choose the trigger and offer products. Both should be in stock, and both should be simple to add. A cross-sell that opens a size picker adds friction at the worst moment.
- Pick the mechanism. You can curate the pairing in Shopify’s recommendations app, use a theme section built for “frequently bought together” where the theme lets you set products per product, use a bundle app when the two items are really one product, or use a popup.
- Decide the price treatment. If you want a discount when both items are in the cart, use a Shopify automatic discount so the shopper never types a code. Shopify’s discounts documentation covers how automatic discounts work.
- If the mechanism is an app, it will usually appear as a block you add in the theme editor, which means you can position it without touching theme code and remove it the same way later. Shopify’s theme app extension documentation explains that block model.
- Check mobile. On a phone, the product page cross-sell competes with the gallery and the add-to-cart button. If it pushes the button down the page, you have traded one sale for another.
- Walk the whole flow with a real test order, including whatever happens at checkout.
The trade-off with the product page is timing. The shopper has not committed yet, so a soft, related suggestion works and an aggressive one backfires.
Adding cart and checkout cross-sells that target specific products
The cart is the strongest spot for a low-price add-on. The shopper has decided, the total is visible, and one more small item does not restart the decision.
To target a specific product in the cart, you need something that reads the cart contents: an app with cart-based triggers, a theme section with those settings, or custom theme code. This is the part Shopify does not do natively.
A note on the cart drawer. Whether a cross-sell can appear inside the drawer depends on your theme. Themes built for Online Store 2.0 usually let you add app blocks to the drawer section, so an app’s block can sit in there. Older themes, or drawers that were custom-coded, often accept only their own markup. If you cannot place a block in the drawer, you have three options: put the offer on the cart page instead, use a popup that opens when an item is added, or have a developer add the block to the drawer template.
Checkout itself is locked down. Shopify controls what can appear there, so you cannot inject an arbitrary cross-sell. The realistic entry points are checkout UI extensions, which depend on your plan and on Checkout Extensibility, and the post-purchase page, where an app can offer one add-on after payment that the shopper confirms in a single click and that is charged to the same payment method. Post-purchase offers are seen by everyone who pays, but the decision is already made, so the offer has to be genuinely relevant to land.
For a deal like “buy three, get one free”, do not build it as a cross-sell at all. Set it up as a Buy X get Y automatic discount in Shopify so it applies to any qualifying cart. If you would rather sell the three items as a single unit at a fixed price, a bundle app or a bundle product is the better shape.
Using popups to cross-sell a specific product at the right moment
A popup gives you the most control of any surface: you choose the product, the image, the copy, the trigger and who sees it. That control is what makes it useful when you are pushing one particular product rather than whatever an algorithm picks.
Triggers worth using for a specific cross-sell:
- Page rules, so the popup only appears on the trigger product’s page.
- Cart value, so the offer only appears once the cart passes a threshold you set.
- Exit intent, for shoppers about to leave the product page.
- A click on the checkout button, which catches the shopper at the last moment before they commit.
Keep one offer per popup. Show the product’s photo, title and price, keep the copy to a sentence, and give the shopper two buttons: add it, or not now. A popup that asks the shopper to configure anything will lose more than it gains.
PopupGenius is one option for this step. Cross-sell popups can show on product pages, the cart page and when a shopper clicks checkout, and its templates fill with a real product from your catalog, photo, title and price included. Items added through a popup can carry an automatic checkout discount, so the shopper never types a code and it still applies with Shop Pay, Apple Pay and Google Pay.
How to measure which cross-sells actually add to cart
Track the offer, not the popup. For each rule, look at four things: how many shoppers saw it, how many added the offered product to the cart, how many bought it, and the revenue attributed to the offer. An offer can look healthy on add-to-carts and still be a loss if the discount on it is larger than the margin.
Then watch the primary sale. If the trigger product’s own conversion drops when the offer is switched on, the cross-sell is costing you the sale it was meant to grow. A popup that covers the buy button, or an exit-intent offer that appears before the shopper has read anything, will do exactly that.
Compare against a control rather than a hunch. Split your traffic so half the shoppers see the offer and half do not, then compare revenue per visitor between the two groups, not just the popup’s own numbers. PopupGenius can run that split between two variants and report views, add-to-carts, purchases and attributed revenue for each, which is the cleanest way to tell whether the offer is doing anything.
Change one thing at a time: the placement, the offered product, or the discount. If the offer is a free gift, count its cost as part of the test. And if your traffic is too thin for a split test to say anything, judge by whether the offered product’s sales moved at all and by what customers say at checkout.
FAQ
Can I cross-sell only when a specific product is in the cart?
Shopify has no native “if this is in the cart, show that” rule, so you need an app that reads cart contents, a theme section with those settings, or custom code. Before you install anything, check what the trigger is based on: some tools only trigger on cart value or on the page being viewed, which is not the same as a specific product. Test with the exact product you care about.
Where should I put the cross-sell: product page, cart or post-purchase?
Each surface catches a different state of mind. The product page catches shoppers still deciding, so the offer has to be small and self-explanatory. The cart catches shoppers who have decided, so a low-price add-on is easy to accept. The post-purchase page catches everyone who pays, but the decision is already made, so only a genuinely relevant offer works there. Running the same offer in two places and comparing the results is a reasonable first move.
How do I set up buy three get one free on Shopify?
That is an automatic discount, not a cross-sell. Use a Buy X get Y discount so it applies at checkout without a code, and set the “get” item as the same product at full discount if you want a free unit. If you would rather sell the three items as one fixed-price unit, use a bundle app or a bundle product instead.