---
title: "How do I build an Advanced discount with product groups and conditions?"
description: "Build one discount with product, order and shipping parts: product groups, conditions that must all be true, first-X limits and Shopify's data limit."
url: "https://smart-bundles.io/help/cart-discounts/advanced-discounts"
updated: "2026-11-02"
product: "SMART Bundles App & Upsells"
section: "Help center / Cart discounts"
---


# How do I build an Advanced discount with product groups and conditions?

An Advanced discount puts product, order and shipping discounts into one. First you define **Product groups**, the cart items that match all of a group's conditions. Then you add discounts on the **Product**, **Order** and **Shipping** tabs, each with its own conditions. A discount applies only when every one of its conditions is true.

## Step by step

1. In SMART Discounts, click **Create new discount** and pick **Advanced discount** under **Other discount types**. Enter a **Discount name** and choose **Automatic** or **Code**.
2. In **Product groups**, the **All products** group is already there. Click **Add product group**, give it a **Name** and set its conditions: **Specific product(s)**, **Specific variant(s)**, **Specific collection(s)**, **Product tag**, **Has selling plan (subscription based)**, **SKU**, **Has compare at price (on sale)**, **Price per single quantity**, **Compare at price per single quantity**, **Product quantity** or **Variant quantity**. Text conditions offer operators such as **contains** and **matches regex**.
3. In **Discounts**, open the **Product**, **Order** or **Shipping** tab and click **Add product discount**, **Add order discount** or **Add shipping discount**.
4. **Product discount:** pick **Percentage off**, **Amount off**, **Fixed amount** or **Volume discount**, and **Apply to**: **All products**, **Product groups** or **All products except product groups**. The first three types add **Apply to first X amount of products** (0 = all) and **Application order** (**Cart order**, **Lowest priced first**, **Highest priced first**). **Percentage off** can also **Cap discount amount** per item and **Apply based on compare at price**.
5. **Order discount:** pick **Percentage off**, **Amount off** or **Fixed amount**, and use **Exclude product groups (from calculation)** to leave groups out or include only some.
6. **Shipping discount:** pick the type, then **Delivery method names** (a rate qualifies when its name contains one; no names = all methods) and **Delivery method types**.
7. Under each discount, click **Add condition** if it should apply only sometimes. "If no conditions are added, the discount will always apply." Every discount needs a **Discount label**.
8. Check **Purchase types**, **Combines with**, **Eligibility** and **Active dates**, then click **Create**.

## Conditions you can add to a discount

| Group | Conditions | Available on |
| --- | --- | --- |
| Customer | Customer tag (is any / is not any) | Product, order, shipping |
| Product group | Product group total, Product group quantity | Product, order, shipping |
| Localization | Country (the shopper's store country), Language | Country: product, order. Language: all |
| Address | City, State/province, Postal code, Country (of the shipping address) | Shipping |

## How conditions combine

- **Inside a product group,** an item belongs to the group only if it matches every condition (the editor joins them with "and").
- **On a discount,** every condition must be true. There's no "or": for either-or rules, add a separate discount for each case.
- **One item can be in several groups.** If two groups overlap, one item can satisfy both. Keep groups apart when you need separate items.
- **Require items from several groups:** add one **Product group quantity** condition per group, such as Shirts at least 1 and Pants at least 1, then apply the discount to those groups.

## How amounts are calculated

- **Fixed amount** sets the price: each unit, the order subtotal or the shipping rate becomes that amount. It never raises a price.
- **Apply to first X amount of products** limits how many units get the discount, in the application order. It can't target cart positions such as "every second item".
- The **Volume discount** product type applies the highest tier reached to every unit in its group (All products, Product or Variant), with no first-X limit.
- **Product group total** uses item prices before other discounts. Amounts are in your store currency and converted at Shopify's rate.

## Limits

- **Data limit.** Shopify Functions don't receive settings larger than 10,000 bytes ([Shopify developer docs](https://shopify.dev/docs/apps/build/metafields/metafield-limits)), and list inputs such as tags or collections can't exceed 100 items ([Shopify developer docs](https://shopify.dev/docs/apps/build/functions/input-output)). The **Data limit** bar shows how much you use. Near 100%, use fewer products, groups or conditions, or split the discount.
- "Shipping-only advanced discounts cannot be combined with shipping discounts": with only shipping discounts, untick **Shipping discounts** under **Combines with**.
- Nothing shows on the product page. For a product page bundle of several products, see [Complete the bundle](https://smart-bundles.io/features/complete-the-bundle).
- Who can use it: the **Eligibility** card and **Customer tag** conditions. See [Customer eligibility](https://smart-bundles.io/help/cart-discounts/customer-eligibility). For a simple shipping rule, a [Shipping discount](https://smart-bundles.io/help/cart-discounts/shipping-discounts) is quicker.

**Build the discount rule you need** SMART Bundles includes an Advanced discount builder alongside bundles, free gifts and cart discounts. Free, with every feature included. [Install SMART Bundles App & Upsells on the Shopify App Store](https://apps.shopify.com/smart-automatic-discounts).

## Frequently asked questions

### Can I require products from two collections before the discount applies?

Yes. Make a product group per collection, then add a Product group quantity condition for each group to the discount.

### Can I give free shipping only on standard rates to one country?

Yes. Add a shipping discount at 100%, enter the standard rate's name under Delivery method names, and add the Address Country condition.
