> ## Documentation Index
> Fetch the complete documentation index at: https://neezon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopify bundle discount — mix & match sets on Shopify

> In Smarty, start from Mix & match set (Create discount → Select discount type). A bundle / set discount triggers only when the cart contains a required combination of products — e.g. any 4 of Product X, or 2 shirts + 2 pants. Minimum plan Lite+. Full settings: Features; condition names: Field conditions.

<Note>
  **Full setting encyclopedia:** [Features](../features) · **Condition names:** [Field conditions](../field-conditions)
</Note>

<Tip>
  Creating **Mix & match set** discounts requires **Lite** or higher — [Plans](../plans). Need a starting point? Open [Use a template](../use-templates) or browse the [Templates](../templates).
</Tip>

## What it does

A **set** (bundle / mix & match) discount triggers **only when the cart contains a required combination of products**. Each set has one or more **entries**; every entry defines:

* **Conditions** — which products count (collection, tag, specific SKUs, vendor, etc., using the same rule builder as other types).
* **Required quantity** — how many items that match those conditions the cart must include.

The discount applies **once per complete set**. If the cart contains enough for two complete sets, it applies twice. Incomplete sets get nothing.

Example:

| Set requires                                           | Cart has              | Sets found | Applied           |
| ------------------------------------------------------ | --------------------- | ---------- | ----------------- |
| **Entry 1:** 2 × any shirt · **Entry 2:** 2 × any pant | 3 shirts + 1 pant     | 0          | ❌ (entry 2 short) |
| Same                                                   | 2 shirts + 2 pants    | 1          | ✓ once            |
| Same                                                   | 4 shirts + 4 pants    | 2          | ✓ twice           |
| **Entry 1:** 4 × any mug                               | 4 mugs (mixed colors) | 1          | ✓ once            |

Per-entry quantity counts the **total matching items** across the cart — they can be the same variant or a mix. It's not per-variant.

## Discount value types

Choose what "one complete set" is worth:

| Type                      | Meaning                                                           | Example                                |
| ------------------------- | ----------------------------------------------------------------- | -------------------------------------- |
| **Percentage**            | % off every matched item in each complete set                     | 20% off all items in any complete set. |
| **Fixed amount**          | Flat \$ off per complete set                                      | \$10 off each complete 2+2 bundle.     |
| **Fixed set total price** | Every item in one set rings through so the set totals this amount | Any 4 shirts for **\$40**.             |

**Percentage** distributes across matched items. **Fixed amount** is deducted once per complete set. **Fixed set total price** is the total for **all items in a single set** (the app computes the per-item reduction needed to hit that total).

## What you can configure (by area)

These are the main areas in the editor for this type, following the current screen order. Shared controls (**Discount method**, **maximum discount uses**, **combinations**, **active dates**, **Test mode**, **Rule version**, **Debug**) also apply — see [Features](../features).

| Area                         | What it controls                                                                       | Example use cases                                            |
| ---------------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| **Discount value**           | Percentage / fixed amount per set / fixed set total price                              | 20% off; $10 off per complete set; any 4 for $40             |
| **Set requires** *(entries)* | The **slots** that define one complete set — each entry has a rule tree + required qty | 2 shirts + 2 pants; any 4 of Product X; shirt + pant + shoes |
| **Max sets per order**       | Cap how many complete sets the discount applies to in one order                        | Limit to 2 complete sets                                     |
| **Eligibility for discount** | Whether the customer / cart qualifies before set matching runs                         | VIP tag only; B2B company; minimum cart subtotal             |

## Entries — the heart of a set

Each **entry** is a group of conditions + a required quantity, rendered as a dashed block that mirrors other rule groups in the app. You can add up to 10 entries; a single entry is allowed for "any N of X" deals.

**Rules of thumb:**

* Each entry must have **at least one condition** (product / variant / collection / tag / vendor / …). An entry with only a quantity is rejected at save time — it would match every cart line.
* The required qty for an entry is a **total** across any matching items. With `collection = "Shirts"` and qty 2, the cart needs two shirt items — same SKU or different, any variant mix.
* The set discount only applies when **every entry is complete**. If any entry is short, the entire set is skipped for that "round".
* If the cart has enough for multiple complete sets, the discount multiplies up to **Max sets per order**.

## Use cases → what to configure

| Your goal                                         | Start with                                                    | Then tune                                                                   |
| ------------------------------------------------- | ------------------------------------------------------------- | --------------------------------------------------------------------------- |
| **Any 4 for \$40** (one product)                  | **Discount value** → **Fixed set total price = \$40**         | One entry: collection/SKU filter + **qty 4**                                |
| **Any 4 for \$40** (any mix from a collection)    | Same                                                          | One entry: **collection = "Summer"** + **qty 4**                            |
| **Buy 2 shirts + 2 pants, get 20% off**           | **Discount value** → **Percentage = 20%**                     | Entry 1: shirts + qty 2; Entry 2: pants + qty 2                             |
| **Outfit bundle (shirt + pant + shoe, \$15 off)** | **Discount value** → **Fixed amount = \$15**                  | Three entries, each qty 1 with its own category                             |
| **Subscription-only bundle**                      | **Eligibility for discount** → purchase type **Subscription** | Entries as usual; the set only applies to subscription carts                |
| **B2B starter pack**                              | **Eligibility for discount** → **company** / tag              | Entries for each required item; cap with **Max sets per order**             |
| **Buy 2 get 2 free (same product, mix variants)** | **Discount value** → **Percentage = 50%** *(or fixed)*        | One entry: product = X + **qty 4**, then let customers pick any variant mix |

## When this type fits vs others

| If you want…                                                            | Use                                                                     |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| A single product line with volume bands                                 | **[Amount off product](product-discounts)** with tiers                  |
| Every Nth matching unit                                                 | **[Amount off product](product-discounts)** → *Discount every Nth item* |
| Discount only full packs of N **matching items**                        | **[Amount off product](product-discounts)** → *Discount in packs of N*  |
| Buy A → free B, or gift with purchase                                   | **[Buy X Get Y / Gift](buy-x-get-y)**                                   |
| **Combinations across different slots** (2 of X + 2 of Y, all required) | **Mix & match set** (this page)                                         |
| Cart-total promos                                                       | **[Amount off order](order-discounts)**                                 |

Mix & match is the right choice when **every slot must be filled** before anything is discounted. BXGY only requires the **buy** side to match and then discounts the **get** side — there's no "all-or-nothing" constraint across multiple slots.

## Set-specific concepts

* **Entry** — one slot in the set: conditions + required qty.
* **Complete set** — one round where every entry's qty is satisfied by cart items.
* **Max sets per order** — cap on how many complete sets the discount applies to in a single order.
* **Fixed set total price** — the total for **all items in one set**; the per-item discount is computed by the app.
* Scoped rule versions (**Customer**, **Company**, **Product**) work the same way here as on other discount types — see [Features — Rule version](../features#rule-version).
