Skip to content

Product offers (older)

The older Product offers block, previously called Upsell / Cross sell, shows a list of products with an add button, or swaps a product in the cart for a better one.

Requires: Shopify Plus and the Buddy plan.

A Product offers block in the Linear layout offering ski wax with a variant dropdown and Jalapeno lime at a discounted price

Checkout Buddy has two kinds of product offers in checkout. The table shows how to tell them apart. In the editor, new offers have cards such as Offer type, Offers and Who sees it; older offers open in the block editor described on this page.

Product offers Older product offers
Made With the new Product offers editor Before it came out
In Customizations Product offers Cross sell (older), Upsell (older), Checkbox product offer (older)
In the checkout editor The Product offers app block, with Block IDs The Checkout Buddy (v1) app block, with Fixed block ID
Where it shows Checkout, and your store’s product pages, cart page and cart drawer Checkout only
Free gifts Added, resized and removed by tier, and checked to be free Add free products to cart automatically, one block per tier
Discounted price shown The price text you type Discount markings, from a discount that applies to Checkout components
Product discount applies to Product offers (items they add) Checkout components
When several offers match All show, one under the other One is picked at random, unless the app block uses Multiple block IDs
Amounts in other currencies Converted at Shopify’s rate Compared as typed
Replacing a product in the cart No Yes
Data on the order Hidden line properties on added items; __buddy_offers_seen only with Record views for Analytics on __buddy_data, and _buddy_data on added items
Guide Product offers This page, and Checkbox product offer

Older offers keep working and keep their editor. Stores that installed Checkout Buddy from October 30, 2026 can’t create new ones. Stores installed before then still see the Product offers (older) and Checkbox product offer (older) cards under Create customization, but we recommend Product offers for anything new. Line item upsell is now part of the Cart line editor.

  1. Create a Product offer for the same products: Customizations → Upsells → Create customization → Product offers. A template, such as Free gift over a spend or Discounted add-on, sets most of it up.
  2. For a free gift or a % off price, check Discount at checkout and set up the discount it asks for. See discounts for product offers.
  3. Publish it, and add the Product offers app block in Shopify’s checkout editor.
  4. Turn off the older offer, so buyers don’t see both, and the two don’t undo each other. Also turn off any Line item remover you set up for its gift.

Layouts have new names. See older layouts.

The rest of this page is about older Product offers.

Offer type decides what the button does:

  • Add to cart (cross-sell): Adds the offered product as a new item. Use it for accessories, add-ons, and free gifts.
  • Replace a product in the cart (upsell): Swaps a product already in the cart for the offered product, for example a larger size or a premium version.

An upsell needs to know which cart product to replace, so it must have a Cart products condition that lists the products to upgrade from. You’ll see Cart products condition required if it’s missing.

Choose products by has five options:

Option What customers see
Select products manually The products and variants you pick, in a random order each time. Untick Randomize order to set the order yourself.
Select products by collections Products from the collections you pick (up to 50 per collection). Untick Randomize order to keep the collection’s order.
Select products by tags Products with any of the tags you enter, separated by commas (up to 50)
Select related products (Shopify algorithm) Shopify’s related product recommendations for a product in the cart
Select complementary products (Shopify Search & Discovery) The complementary products you’ve set up in Shopify’s Search & Discovery app

When you pick products manually, only the variants you tick are offered. If you tick more than one variant, customers get a dropdown to choose. Tick one variant to hide the dropdown.

Manually picked products show in a random order by default. If you pick more products than Products shown at once, which ones show changes too.

To choose the order, untick Randomize order under the product list. Up and down arrows appear next to each product. Use them to put the products in the order customers should see them. If you pick more products than Products shown at once, the first ones in the list show, and Enable pagination lets customers page to the rest. Products you add later go to the end of the list.

Variant B products in an A/B test use the same Randomize order setting, and you sort them the same way.

For the two recommendation options:

  • Recommend based on: Which cart item to get recommendations for: First item in cart, Last item in cart, Highest priced item in cart, or Lowest priced item in cart.
  • Exclude products and Excluded tags: Products you never want recommended. Tags are comma-separated and not case-sensitive.

Exclusions only apply to recommendations. For the other options, just don’t pick those products.

For manually picked products, click Manage next to a product to set a Call-to-action link. The button then opens that link instead of adding the product to the cart. It’s useful for products that need personalizing on the product page first.

Setting What it does
Add quantity How many to add: 1, 2, 3, Match the sum of all line item quantities, or Match the sum of line item quantities in the Cart products condition. The last one matches the quantity of the cart products listed in that condition, which is handy for “one per item” add-ons like protection plans.
Hide product if already in cart Hides each offered product once any variant of it is in the cart
Hide customization if cart already contains offer product Hides the whole block once any offered variant is in the cart
Add free products to cart automatically Adds the product without a click, if its price at checkout is $0. Use it with a 100% product discount for free gifts.
Add products only once per checkout session (if automatically added) Stops a free product from being added again after the customer removes it
Setting What it does
Layout Linear, Classic, Compact, Compact 2, or Compact (columns). A preview shows under the setting.
Products shown at once How many products show at a time. Defaults to 2.
Image size Product image size in pixels, for Classic and Compact. Defaults to 130.
Apply borders Draws a border around the block
Enable pagination Adds arrows to page through all products. Show page count adds the page number, such as “1 / 3”.
Setting What it does
Heading Optional heading above the products
Body text Optional text. Supports dynamic text, links, and bold.
Text under each product Optional short line under every product, such as “Ships with your order”
Button text Defaults to “Add”
Button style Primary, Secondary, or Plain
  • Show vendor
  • Show product description (Classic and Compact layouts)
  • Show quantity selector (Linear layout; Classic always has one)
  • Show checkmark upon adding product: Replaces the button with a check mark once the product is in the cart. The block hides itself once every product shown is in the cart.
  • Hide discount copy: Hides the discount line under discounted products.
  • Hide price: Only use this if you show the price somewhere else, such as in the heading.

Tick Enable A/B testing and choose a second set of products under Variant B products. Each time the block is shown, it picks set A or set B at random, 50/50.

Compare the two sets in analytics, which reports orders from each set separately.

Products can show a discounted price, with the original price struck through, when they have an automatic product discount that applies to Checkout components (upsells, cross-sells, etc.), marked Legacy on the Discount page. See discounted upsells.

Under Devices, in the Where it shows card, choose Always show or Show on selected devices only, then tick Mobile / tablet and/or Desktop. The device type comes from the customer’s browser, so resizing a desktop window doesn’t change it.

  • The block hides itself when there’s nothing to offer. This happens when every product is sold out, already in the cart (with the hide options on), excluded, or unavailable in the customer’s market. It also happens when Shopify has no recommendations, or when the checkout doesn’t allow adding products, which can happen with some B2B and draft order checkouts.
  • Sold-out variants are never offered. They’re removed automatically.
  • Subscription products: products that can only be bought on a subscription are only offered when you pick products manually. The first selling plan is preselected, and customers can switch if there’s more than one.
  • Prices and titles match the customer’s market and language. Products that aren’t available to the customer’s market aren’t shown.
  • Upsell with several matching cart items: if more than one cart item matches the Cart products condition, the offered product is added and one unit of each matching item is removed. For clean swaps, list one product per upsell block.
  • Products shown at once on the block takes priority over Number of products shown in the Checkout Editor.
  • “Cart includes component product” conditions only work when products are picked manually. With collections, tags, or recommendations, the block doesn’t know its products until checkout.
  • Every product added records the block in the order’s _buddy_data line item property, for analytics and product discounts.