Shopify · June 11, 2023
How to Set Up Upsells & Cross-Sells
Setting up Shopify upsells and cross-sells means adding the right offer at the right moment: pre-purchase bundles on the product page, cart-level add-ons, and post-purchase upgrades at checkout. Here is a step-by-step approach that works with any theme, including ours.
By Polo Themes
Shopify upsells and cross-sells work best when they are placed at three distinct moments: on the product page before the shopper adds anything to cart, in the cart itself before checkout, and immediately after purchase. Getting this right is less about installing a single app and more about matching the right offer type to each moment, then keeping the presentation clean enough that it does not feel like friction. This guide walks through the setup step by step, with theme considerations along the way.
A quick note on terms, since they get mixed up constantly: an upsell offers a better or bigger version of what the shopper is already considering (a larger size, a bundle, a premium variant). A cross-sell offers something different but complementary (a case for a phone, a cleaning cloth for glasses, a matching accessory). Both matter, and both need a place to live in your store's layout — which is where theme structure starts to matter as much as app configuration.
Step 1: Decide Where Each Offer Type Belongs
Before touching any app or theme setting, map out where each offer will actually appear. Trying to cram every upsell idea into one spot is the most common reason merchants end up with cluttered product pages that convert worse, not better.
Product page: bundles and premium variants
The product page is the right place for upsells that change the purchase decision itself — a frequently-bought-together bundle, a suggestion to size up, or a nudge toward a premium option. This works because the shopper is still actively evaluating; a well-placed bundle block below the buy box (or beside it, if you have the layout room) can lift average order value without feeling pushy, since it is framed as a smarter way to buy rather than an interruption.
Cart: complementary add-ons
The cart drawer or cart page is the natural home for cross-sells — small, complementary items the shopper has already implicitly agreed they need the main product for. A cart-level suggestion works because the purchase decision is basically made; you are only adding to it. Keep this to one or two low-friction suggestions rather than a long list, and make sure the "add" action is a single tap, not a detour to another page.
Post-purchase: one-tap upgrades
Shopify's native post-purchase upsell (available through Shopify Functions and post-purchase apps) shows one offer after checkout is complete but before the order confirmation page, using the payment method the shopper already entered. This is the highest-intent moment for a single, well-chosen upgrade offer — but it should be used sparingly. One offer, clearly priced, with an obvious skip option, performs far better than a stack of unrelated products.
Step 2: Choose Your Setup Method
You have two broad paths: a dedicated upsell/cross-sell app, or theme-native sections plus Shopify's built-in "Complementary products" and "Related products" recommendation APIs. Neither is strictly better — the right choice depends on how much customization and automation you want.
- App-based: apps like Shopify's own recommendation blocks or third-party upsell apps handle the logic (which products to suggest, A/B testing, analytics) and inject blocks into your theme via app embeds or app blocks. Faster to set up, less design control.
- Theme-native: your theme's product and cart templates include sections built for bundles or related items, and you curate the relationship manually (metafields, manual product lists, or Shopify's admin-managed "related products" recommendations). More design control, more manual curation.
- Hybrid: most merchants land here — a native bundle section on the product page for hand-picked pairings, plus an app for cart drawer cross-sells and post-purchase upgrades, since those need dynamic logic a static theme section cannot provide on its own.
Step 3: Set Up the Product Page Upsell
Start here, since it is the easiest to get right and the most visible. In the Shopify theme editor, look for a "Bundle," "Frequently bought together," or "Related products" section on your product template. If your theme does not have one, this is a strong signal to check its section list before you build a workaround with apps.
- Identify two or three genuinely complementary pairings per product category — not every product needs a bundle, and forcing one where there is no natural fit will just look like padding.
- Add the bundle or related-products section to your product template in the theme editor, and connect it to Shopify's native product recommendations or a manually curated product list, depending on what your theme supports.
- Price the bundle with a small, clearly stated discount (even 5-10% reads as a deal) rather than hiding the saving in vague language.
- Preview on mobile first — bundle blocks with multiple product images are the layout most likely to break or feel cramped on a small screen.
If you are choosing or evaluating a theme with this feature in mind, look for one where bundle and related-product sections are built in rather than bolted on. Our Optics bundle and Course Whiz bundle themes, for example, ship with pre-configured section patterns for exactly this kind of pairing, so you are arranging existing blocks instead of building the layout from scratch.
Step 4: Set Up the Cart Cross-Sell
Next, add a small cross-sell block to your cart drawer or cart page. This is usually the highest-leverage, lowest-effort upsell surface because the shopper is already committed to checking out.
- Pick one to three low-price, high-relevance add-ons per product category (a cleaning cloth, a protective case, a small accessory) — cart cross-sells convert best when the add-on is cheap relative to the cart total and obviously useful.
- Configure the cart drawer section in your theme editor to show these, either through a native "you may also like" block or a cart-specific app.
- Make the add-to-cart action from the cross-sell block a single click that keeps the shopper in the cart drawer, not a redirect to a product page.
- Test that the cross-sell block does not push the checkout button below the fold on mobile — this is the single most common mistake, and it quietly kills conversion on the cart step it was meant to help.
Step 5: Add a Post-Purchase Offer (Optional but High-Value)
If your Shopify plan and app stack support Shopify Functions-based post-purchase offers, this is worth setting up even if you skip everything else. Because the shopper's payment details are already on file, the "yes" action is a single click with no new checkout flow — which is why post-purchase acceptance rates tend to be meaningfully higher than pre-purchase upsell rates.
- Choose exactly one offer per order type — a size upgrade, a companion product, or a limited-time bundle addition.
- Keep the price difference small and the value obvious in one sentence; this is not the place for a long pitch.
- Always include a clear, unpressured "no thanks, continue to order confirmation" option.
- Check the offer renders correctly on mobile checkout, since a large share of post-purchase views happen there.
Step 6: Measure and Prune
Once the three offer points are live, give it a few weeks of real traffic, then look at which offers are actually being accepted. It is normal for a cart cross-sell to convert far better than a product-page bundle, or for one post-purchase offer to outperform another by a wide margin. Cut anything with a near-zero acceptance rate — a low-performing offer still adds visual clutter and page weight, and clutter has a cost even when nobody clicks it. Keep the layout as lean as the data supports, and revisit the pairings every quarter or two as your catalog changes.
A theme with clean, well-structured product and cart templates makes this whole loop easier, because you are swapping which products appear in an existing block rather than rebuilding the block itself every time you test a new pairing. If you are shopping for a theme with this in mind, browse our Shopify themes to compare how each one handles bundle and cart sections before you commit.
Frequently Asked Questions
Do I need an app to set up upsells and cross-sells on Shopify?
Not necessarily. Product-page bundles can often be built with theme-native sections and Shopify's built-in product recommendations. Post-purchase upgrade offers, however, generally need Shopify Functions or a dedicated app, since that surface is not part of the standard theme template.
How many upsell or cross-sell offers should one product page show?
One well-chosen bundle or related-products block is usually enough. Stacking multiple upsell blocks on a single product page tends to overwhelm the shopper and slow the page down, which can hurt conversion more than the extra offer helps it.
What is the difference between a cross-sell and Shopify's related products feature?
Shopify's related products recommendations are algorithmic — they surface products based on order history and catalog data. A cross-sell, in the context of this guide, is a deliberately chosen pairing (a case with a frame, a cleaning cloth with lenses) that you curate by hand for relevance, rather than leaving entirely to the algorithm.
Will adding upsells slow down my store?
It can, if the offer blocks load extra product images and scripts on every page regardless of whether they are used. Favor theme-native sections and lazy-loaded images over heavy third-party embeds, and keep the number of active offer blocks per page small.