Discounts

Why an offer discount applies to fewer items than expected

Your offer discount applied — but to fewer items or variants than you expected. Here's the variety cap that does it, by design, and how to tune it.

Sometimes an offer discount works, but not on everything you thought it would. The shopper qualifies, the discounted price shows up — yet two of the five matching items in the cart are still at full price, or raising the quantity of one item didn't extend the deal. This is almost never a bug. It's the max products variety cap doing its job: a built-in limit that stops a single offer from discounting an unlimited number of items in one cart. This page explains exactly how the offer discount is matched to cart lines, what the cap counts, and how to get the behavior you actually want.

This page is about an offer discount that applies partially — it applied, but to fewer items or variants than expected. If your discount isn't applying at all (nothing is discounted, or it vanishes when a coupon is present), that's a different path — see Discount not applying at checkout.

How an offer discount is matched to cart lines

An offer discount isn't attached to a product in the abstract — it's attached to the condition that triggered it. When a shopper adds a product through a campaign's offer widget, the app tags that cart line with the ID of the condition that made it eligible. At checkout, the discount runs through three steps for every line:

  1. Line → condition. Read the condition ID carried on the cart line.
  2. Condition → variant. Look up the rules for that condition and find the rule that matches the line's specific product variant.
  3. Variant → discount. Apply the discount value (percentage or fixed amount) that the variant rule points to.

If any link in that chain is missing, the line gets nothing.

The same product added outside the offer widget gets no discount. The discount follows the condition tag on the cart line, not the product itself. If a shopper adds the discounted product a second time from a product page or collection — instead of through the offer — that second line carries no condition tag, so the chain breaks at step one and it stays at full price. This is the single most common reason "the same item shows two different prices in the cart."

The max products variety cap — exploitation prevention

Even when every line is correctly tagged, an offer won't discount unlimited items. Each condition has a max products variety ceiling. Think of it as a fixed number of "variety slots" the offer is allowed to fill in a single cart.

Here's the rule, exactly as the discount engine runs it. As it walks the cart lines, it keeps a running count of the distinct variants it has already discounted for that condition:

  • The first time it discounts a new, distinct variant, it spends one variety slot — the remaining count drops by one.
  • A variant it has already discounted does not spend another slot.
  • Once the remaining count hits 0, every further qualifying variant gets nothing, even though it matches the offer.

Worked example: "Buy 3 different products, get 20% off"

Suppose the offer's variety limit is 3, and a shopper loads the cart with five distinct qualifying products. Walking the cart in order:

Item addedDistinct variant?Variety slots leftResult
Product AYes (new)3 → 220% off
Product BYes (new)2 → 120% off
Product CYes (new)1 → 020% off
Product DYes (new)0No discount
Product EYes (new)0No discount

The first three distinct variants are discounted; the moment the count reaches 0, products D and E are excluded — by design.

It counts variety, not quantity

The cap measures how many distinct variants get discounted, not how many units. Adding ten of the same variant still consumes only one variety slot — they're all the same variant.

This is why raising the quantity of one item never extends the discount to a different product. Ten units of Product A occupy exactly one variety slot, the same as one unit. If you want a fourth type of product discounted, you need another variety slot — not more quantity. (How many units of each variant get discounted is governed separately — see allowedQuantity per variant below.)

The Total limit setting

The variety cap isn't hidden — you control it directly with the Total limit setting on the campaign. Total limit is the max products variety value: whatever number you set there becomes the number of distinct variants a single condition is allowed to discount in one cart.

Total limit valueEffect on the cart
1Only the first distinct qualifying variant is discounted. Everything else stays full price.
3The first 3 distinct qualifying variants are discounted; the 4th onward gets nothing.
HigherMore distinct variants can be discounted before the cap kicks in.

Raising Total limit lets more distinct variants receive the discount in one cart. Lowering it restricts the offer to fewer variants. It exists for one reason: exploitation prevention. Without it, a shopper could load a cart with dozens of qualifying products and pull a "buy a few, get a discount" offer across their entire order. The cap keeps the deal scoped to the number of items you intended to reward.

The default behavior caps the offer to the variety you configure. If you want every qualifying variant in the cart discounted with no ceiling, set Total limit high enough to cover the largest cart you expect to reward.

allowedQuantity per variant

There are two independent caps, and they answer different questions. Don't confuse them.

CapQuestion it answersScopeDefault
Total limit (max products variety)How many distinct variants can be discounted?The whole conditionSet per campaign
Allowed quantityHow many units of one variant get discounted?Each variant rule1

Each variant rule inside the offer carries its own allowed quantity — the number of units of that specific variant that receive the discount once the variant has claimed a variety slot. The default is 1 unit.

So the two caps stack: the variety cap decides which variants get discounted; the allowed quantity decides how many units of each of those variants get the price cut.

A variant with allowed quantity 1 discounts only the first unit. If a shopper adds 5 of that variant, only 1 unit is discounted and the other 4 stay at full price — even though the variant occupied a variety slot. This often reads as "the discount only applied to one of them." It's the per-variant unit cap, not the variety cap, and the fix is to raise the allowed quantity for that variant.

Why it can look like a bug but isn't

Every symptom below is the variety cap or the per-variant quantity cap working as designed — not a malfunction.

SymptomWhat's actually happeningThe lever
Discount applies to some lines but not othersThe variety cap (Total limit) was reached; later distinct variants are excluded.Raise Total limit
Discount stops after exactly N distinct itemsTotal limit is set to N; the (N+1)th distinct variant gets nothing.Raise Total limit
Raising the quantity of one item doesn't extend the discountQuantity doesn't buy variety slots — extra units of the same variant share one slot.Raise Total limit for more variety; raise allowed quantity for more units
Only one unit of a variant is discountedThe variant's allowed quantity is 1.Raise that variant's allowed quantity
Same product, two prices in the cartOne line was added through the offer (tagged), the other wasn't (untagged).Add the item through the offer widget

How to get the behavior you want

Pick the recipe that matches your goal and set the two caps accordingly.

After changing Total limit or a variant's allowed quantity, save the campaign and test in a fresh cart. Rule changes sync to the checkout asynchronously; if a recent change isn't reflected, use the Sync action on the campaign to force a refresh, then retest.

Where this page ends and the others begin

This page owns one thing: an offer discount that applied to fewer items or variants than expected. Two neighbors cover the adjacent cases — the boundary is deliberate so you always land on the right page.

If nothing is discounted at all, or a discount disappears when a coupon code is present, that's not the variety cap — it's an unmet condition, a discount limit, or a Shopify combination conflict. Go to Discount not applying at checkout instead. This page assumes the discount is applying, just not as widely as you expected.

On this page