Skip to content
Browse documentation

Bundle discounts

Percent off, amount off or a fixed bundle price — applied only to what was actually bought together.


A bundle discount gives shoppers a reason to take the whole bundle rather than the one thing they came for. It is set under Appearance on a Buy together widget, and applied at checkout by a Shopify Function.

The three kinds

TypeWhat it does
Percent off the bundleA percentage off every bundled line. Behaves predictably in every currency.
Amount off the bundleA flat sum off, spread across the bundled lines.
Fixed price for the bundleThe whole bundle for one price, whatever the items add up to.

It only reaches the bundle

The discount applies to the items a shopper actually added from the widget. Someone who puts the same products in their cart another way does not get it, and neither does a second copy of one of those products added separately afterwards.

This is the whole point, and it is why the discount is a Shopify Function rather than an automatic discount or a code. An automatic Buy X get Y fires whenever the products are in the cart, however they got there — which turns your bundle offer into a discount on sales you were already making. A discount code is shareable and collides with your other codes. Only a Function can read the marker the widget wrote and discount exactly those lines.

Alongside your other discounts

The bundle discount is a Shopify automatic app discount and follows Shopify’s own combination settings. If it is not combining with a code the way you expect, check the discount combination rules in your Shopify admin — that decision is Shopify’s, not ours.

Testing it

  1. Set a discount on a Buy together widget and save.
  2. On the storefront, tick the items and press Add selected items.
  3. Open the cart. The saving appears against those lines. Add one of the same products separately and confirm the extra one is not discounted — that is the behaviour working, not failing.

Something here wrong or missing? Tell us — we would rather fix the page than answer the same question twice.