For the complete documentation index, see llms.txt. This page is also available as Markdown.

🍱Bundle discount

The Bundle Discounts feature allows you to create custom product bundles with a fixed price or percentage discount. Unlike standard bundled discounts, this feature operates at the product level, giving you more flexibility and control.

It is especially useful for POS (Point of Sale) workflows where bundles need to be applied instantly based on scanned items.


Key Capabilities

  • Create bundles using specific product combinations

  • Set bundle pricing as:

    • Fixed total price

    • Percentage discount

  • Define shared components across multiple bundles

  • Control bundle priority to determine which discount applies first

  • Support for multiple bundle repetitions

  • Optimized for handling large and complex bundle configurations

  • Block specific discount codes from stacking on an active bundle


How It Works

1. Define Bundle Components

Each bundle consists of:

  • Required products

  • Optional shared components (common across multiple bundles)

Example:

  • Shared components:

    • Hydrogen (Qty: 1)

    • Oxygen (Qty: 1)

  • Bundle-specific item:

    • Liquid (Qty: 1)


2. Set Bundle Pricing

You can assign:

  • A fixed bundle price (e.g., β‚Ή100 for the full bundle)

  • Or a percentage discount


3. Create Multiple Bundles

You can create multiple bundles using the same shared components.

Example:

  • Liquid Bundle

    • Hydrogen + Oxygen + Liquid β†’ β‚Ή100

  • Snowboard Bundle

    • Hydrogen + Oxygen + Snowboard β†’ β‚Ή200


4. Configure Priority

When multiple bundles can be formed from the same cart, priority determines which bundle is applied first.

  • Higher priority bundles are applied first

  • Lower priority bundles are ignored if items are already consumed

You can adjust priority using the arrow controls in the UI.


Example Scenarios

Scenario 1: Single Bundle Application

Cart contains:

  • Liquid + Hydrogen + Oxygen

Result:

  • Bundle is formed

  • Total price becomes β‚Ή100


Scenario 2: Competing Bundles

Cart contains:

  • Liquid + Hydrogen + Oxygen

  • Snowboard + Hydrogen + Oxygen

If Liquid Bundle has higher priority:

  • Liquid bundle is applied

  • Snowboard bundle is ignored

If Snowboard Bundle has higher priority:

  • Snowboard bundle is applied

  • Liquid bundle is ignored


Scenario 3: Multiple Bundle Formation

Cart contains:

  • 2Γ— Hydrogen

  • 2Γ— Oxygen

  • 1Γ— Liquid

  • 1Γ— Snowboard

Result:

  • Both bundles can be formed:

    • Liquid bundle β†’ β‚Ή100

    • Snowboard bundle β†’ β‚Ή200

  • Total = β‚Ή300


Repetition Control

You can configure how many times a bundle can be applied:

  • Limited repetitions

  • Unlimited repetitions

If unlimited, bundles will continue forming as long as required items exist in the cart.


Reject Discount Codes

Bundles are often priced deliberately, so you may not want customers stacking coupon codes on top of an active bundle. The Reject Discount Codes card in the bundle editor lets you block specific codes at checkout while this automatic bundle discount is active, and show the customer a clear reason instead of a silent failure.

This card only appears for automatic bundle discounts. Shopify only allows an automatic discount to reject entered codes, so code-based bundle discounts don't have this option.

How to set it up

  1. Open your bundle discount and scroll to the Reject Discount Codes card.

  2. Tick Enable.

  3. Choose a Match Type:

Match Type
What it does

Fixed (comma-separated codes)

You list the exact codes to block in Discount Codes (e.g. SUMMER20, WELCOME10). Matching is exact, so list each code exactly as it's defined.

Pattern (dynamic matching)

You enter one Pattern (e.g. SUMMER or PROMO) and pick a Match Operator: Starts with, Ends with, or Contains. Ideal for apps that mint codes with a prefix.

  1. Write the Rejection Message the customer sees at checkout. It can be up to 120 characters, and you can use {code} to display the rejected code, for example: {code} can't be combined with our bundle offer. If you leave it empty, the customer sees the default: "This discount code is not valid for this order."

  2. Save the discount.

Good to know

  • Codes are rejected whenever the bundle discount is live, even on carts where no bundle has actually formed yet. If you only run the bundle occasionally, deactivate the discount (rather than relying on cart contents) to let those codes work again.

  • Pattern matching is a plain text match against the entered code; there are no wildcards to configure. Use Starts with for prefixed loyalty codes like BH_XXXX.

  • The same option exists on unified discounts, with the same behavior. See Reject discount codes for the loyalty-coupon use case in depth.


When to Use This Feature

This feature is ideal when:

  • You need precise control over bundle composition

  • Bundles share common components

  • You operate in a POS environment

  • You want to avoid cart-level discount inconsistencies

  • You manage large or complex bundle catalogs


Important Notes

  • Bundles are applied only when all required items are present

  • Items used in one bundle cannot be reused in another (unless quantities allow)

  • Priority order directly impacts discount outcomes

  • Changes in cart (adding/removing items) will re-evaluate bundle application


Summary

The Bundle Discounts feature enables powerful, flexible bundling by:

  • Combining products at a granular level

  • Supporting shared components

  • Using priority-based logic for conflict resolution

This makes it highly effective for retail, POS systems, and complex product combinations.

Last updated