Tiered Pricing + Variable Products: Do Variation Quantities Count Together?
WooCommerce Guide
Your Tier Was Hit. But Nobody Got the Discount.
How WooCommerce counts quantities across product variations β and what that means for your bulk pricing.
A customer is shopping your apparel store. They want six t-shirts β three in Medium, three in Large. Your tiered pricing campaign says: buy 6 or more, get 15% off. So they add 3 + 3, hit checkout, and see the full price. They message you asking why the discount didn’t apply. You check the campaign. It looks fine. You test it by adding 6 of the same size β and it works perfectly.
This is one of the most common sources of confusion in WooCommerce bulk pricing, and it almost always comes as a surprise. The customer did everything right. The campaign is set up correctly. And yet the discount doesn’t fire β because of something fundamental about how WooCommerce handles variable products in the cart.
This post explains exactly what’s happening, why it works this way, when it causes real commercial damage, and what your options are depending on how your store is built.
The question everyone hits eventually
The question usually surfaces on support forums worded something like: “Why isn’t my bulk discount working when customers buy different sizes of the same product?”
The short answer is: in WooCommerce, each variation of a variable product is a separate line item in the cart. A customer buying 3 of Size M and 3 of Size L doesn’t have “6 units of the t-shirt” from WooCommerce’s perspective β they have two distinct cart items, each with a quantity of 3.
When a tiered pricing rule checks “how many of this product did the customer buy?”, it’s checking the quantity on that line item. It finds 3 β not 6 β and awards the Tier 1 rate (or no discount at all if your bottom tier starts at 6).
This isn’t a bug or a plugin limitation. It’s the foundational data model WooCommerce uses, and it’s the same whether you’re using native WooCommerce sale prices, a third-party plugin, or a campaign-based system like Smart Cycle Discounts.
How WooCommerce sees variations in the cart
Understanding this requires a quick look at how WooCommerce structures cart data. When a product is added to the cart, WooCommerce creates a cart item β an entry that contains the product ID, the variation ID, the quantity, and the price. Each unique combination of variation attributes creates its own cart item.
So if you have a t-shirt with color and size variations, and a customer adds:
- Blue / Medium Γ 3
- Blue / Large Γ 3
- Red / Medium Γ 2
That’s three separate cart line items, not “8 blue t-shirts” or “8 t-shirts from the same parent product.” WooCommerce sees them as three independent purchases.
When a tiered discount runs, it processes each cart item individually. The Medium gets a quantity of 3. The Large gets a quantity of 3. The Red Medium gets a quantity of 2. Each is evaluated independently against your tier thresholds.
The parent product connection: Variations do belong to a parent variable product in the database, and discount plugins can use that relationship to find campaigns. But “finding a campaign” and “pooling quantities across variations” are two different things. The campaign can apply to all variations β but the quantity check still happens per cart line item by default.
Why it matters commercially
For many stores, this behavior is perfectly fine. If you sell widgets and each widget is a separate SKU, per-line-item quantity counting makes complete sense. But for certain store types, it creates a real problem.
The apparel store problem
An apparel store selling a t-shirt in five sizes is selling, commercially speaking, one product in five sizes. The customer who orders 3 Medium and 3 Large is buying 6 of your t-shirt. They should get the six-unit tier. From a pure business perspective, you want to reward that customer β they’re buying the same volume whether they split across sizes or not.
But WooCommerce sees it as two 3-unit orders for two different products.
The accessories and consumables problem
The same issue affects stores selling accessories in different options (color variants of a phone case, different scents of a candle) or consumables in multiple formats (tablet vs. capsule vs. powder for the same supplement). A buyer stocking their retail shelf might want 12 units spread across 4 variants. They should hit the 12-unit tier. They won’t.
The silent cart abandonment problem
What makes this especially damaging is that the customer often doesn’t know what’s happening. They see the tiered pricing table on your product page promising a 15% discount at 6 units. They add 6 units across multiple variations. They don’t get the discount. They might contact support β but a lot of them just leave. They don’t complain; they just don’t convert. That’s the expensive version of this problem.
The two quantity models β and which one you actually have
Before deciding how to handle this, it helps to understand that there are two conceptually different models for how tiered pricing could work with variable products:
Model A: Per-line-item quantity
The tier discount applies based on the quantity of that specific variation in the cart. 3 Γ Medium gets evaluated at quantity 3. 3 Γ Large gets evaluated at quantity 3. They hit different tiers independently.
This model is simple, predictable, and works correctly for products where variations are genuinely distinct items (different colors that serve different use cases, for example).
Model B: Pooled quantity across the parent product
All variations of the same parent product have their quantities summed before the tier is evaluated. 3 Γ Medium + 3 Γ Large = 6 units of the parent product. The tier is determined by 6, and that tier’s discount applies to all those line items.
This model matches commercial intuition for stores where variations are just size/color options of the same product. It’s harder to implement and less common as a native option.
Which model does WooCommerce use natively? Model A. Per-line-item. There is no native WooCommerce mechanism to pool variation quantities for tiered pricing. This behavior is consistent regardless of whether you set sale prices manually, use WooCommerce’s built-in pricing, or add a tiered pricing plugin.
Most tiered pricing plugins also default to Model A because it’s what WooCommerce’s cart data naturally supports. Some offer Model B as an option, but it requires custom cart aggregation logic and comes with its own edge cases (what if only one of the variations is in your campaign scope? what if a variation has a different base price?)
Per-item mode: what it does and what it doesn’t
When tiered pricing is set up in per-item mode β where the discount reduces the unit price for each item in that line β the calculation looks at the quantity on that specific cart line to decide which tier applies.
A customer buying 6 Γ Medium gets the 6-unit tier rate applied to every one of those Medium units. A customer buying 3 Γ Medium and 3 Γ Large gets the 3-unit tier rate (or no tier at all if your minimum is 6) applied to each line separately.
This is true across WooCommerce tiered pricing implementations generally. The discount strategy receives a per-item quantity context drawn from the cart line item’s own quantity. It has no visibility into what else is in the cart from the same parent product.
There’s also an order-total mode available in some setups β where a quantity threshold unlocks a fixed amount or percentage off the cart total rather than reducing individual unit prices. That mode has the same limitation: the threshold check still runs per cart item unless the plugin explicitly aggregates across variations.
The campaign-level approach to variable products
There’s an important distinction between which products a campaign applies to and how the quantity check works. These are two separate questions, and conflating them is a common source of confusion.
Targeting the parent product covers all its variations
When you create a tiered pricing campaign and target a variable product (the parent), that campaign applies to every variation of that product. You don’t need to list each variation individually β the campaign lookup checks both the variation ID and its parent product ID, so any variation gets matched.
This is the right way to set up a tiered campaign for a variable product. If you only target one specific variation, only that variation gets the discount. Target the parent, and all variations participate in the campaign.
Smart Cycle Discounts Pro handles this automatically. When it looks up applicable campaigns for a variation in the cart, it checks both the variation’s own ID and its parent product’s ID. So a campaign targeting the parent variable product will fire for every variation without you needing to do anything extra.
What the campaign lookup doesn’t change
What campaign-level targeting doesn’t change is the quantity context used to evaluate the tier. Each cart line item is processed individually. The variation with 3 units looks up the campaign, finds it, and checks: does a quantity of 3 qualify for any tier? The answer depends on your tier configuration, not on what other variations are in the cart.
This is the accurate picture: campaign targeting is per-parent, quantity evaluation is per-line-item. Understanding both halves prevents you from either misconfiguring your campaigns or setting false expectations with customers.
Practical setup recommendation: If your tiered campaign is meant to cover all sizes of a variable product, target the parent product, not individual variations. This ensures the campaign applies consistently. Then set your tier thresholds with realistic per-variation quantities in mind β not the total units a customer might buy across all sizes.
When to set lower tier thresholds
One practical response to the per-line-item model is to configure your tiers to reward the quantities that customers realistically add in a single variation. If your goal is to incentivise customers to buy 6 units, and you know that most of those purchases will be split across 2β3 variations, consider whether a threshold of 2β3 per variation better matches how your customers actually shop.
The tradeoff: lower thresholds are easier for customers to hit, but they also reduce the volume lift you’d otherwise get from pushing customers toward higher single-variation quantities. It depends on whether your primary goal is rewarding existing purchase behavior or actively nudging customers toward larger per-variation quantities.
Transparency over workarounds
Another option β honestly the most underrated one β is to communicate clearly on your product page. If your tiered pricing table shows “6+ units: 15% off,” add a note clarifying that this applies per variation, not across the entire product. It’s a small amount of copy. It prevents a lot of confused support tickets and a lot of checkout abandonment caused by customers feeling deceived by a discount that didn’t fire.
It’s less satisfying than having pooled quantities work automatically, but it’s honest β and customers respond well to clarity.
What to tell your customers (and where to say it)
If you run tiered pricing on variable products, the product page is doing your customers a disservice if it doesn’t explain how the thresholds work. Here’s the kind of language that helps:
Example copy: “Tier discounts apply per size. To get the 6-unit price, add 6 or more of the same size. Mix-and-match sizing is charged at the standard single-unit rate.”
You can add this as a short note beneath the pricing table, or directly in the product description for your variable products. It won’t win any design awards, but it will prevent the most common source of customer frustration with variable product tiered pricing β which is the expectation gap between what the page implies and what the cart does.
Alternatively, if your store relies heavily on customers buying across multiple sizes (common in apparel), and you genuinely want to reward that behavior, it’s worth evaluating whether a fixed percentage-off campaign with a lower spend threshold (e.g., “spend $X and save 15%”) might serve you better than a per-unit tier. A cart-value threshold doesn’t care which variation the units belong to β it just looks at the total.
That’s a different type of discount, but it avoids the quantity-pooling problem entirely.
FAQ
Do variation quantities count together for WooCommerce bulk discounts?
No. By default, WooCommerce treats each variation as a separate cart line item with its own quantity. A tiered discount checks the quantity of that specific line item β it doesn’t pool or combine quantities from different variations of the same parent product. 3 Γ Size M and 3 Γ Size L count as two 3-unit line items, not one 6-unit purchase.
Why doesn’t my WooCommerce quantity discount apply when customers buy multiple variations?
Because the tier threshold is evaluated per cart line item. If your minimum tier is 6 and a customer adds 3 of one variation and 3 of another, each line item has a quantity of 3 β below the threshold. This is how WooCommerce’s cart data is structured and it affects all tiered pricing implementations, not just specific plugins.
If I target a variable product with a tiered pricing campaign, does it cover all variations?
Yes. Targeting the parent variable product in a campaign means all its variations are covered β you don’t need to list them individually. The quantity evaluation still runs per variation line item, but every variation is eligible for the campaign discount. Targeting only a specific variation restricts the discount to that one SKU.
Is there a way to pool quantities across variations for tiered pricing in WooCommerce?
Not natively. Standard WooCommerce doesn’t support cross-variation quantity pooling. Some advanced tiered pricing plugins offer this as an option, but it adds complexity and can create edge cases β for example, when variations have different base prices, or when only some variations are in scope for a campaign. Communicating clearly about per-variation thresholds is often the more reliable path.
What’s the best tiered pricing strategy for an apparel store with many size options?
Two approaches work well: (1) set lower per-variation tier thresholds that match realistic per-size quantities, or (2) use a spend threshold discount instead of a unit-count tier. A spend threshold (e.g., 15% off orders over $150) doesn’t care which variations the units belong to β it applies to the cart total, which naturally reflects all units. This avoids the quantity-pooling issue entirely.
Does Smart Cycle Discounts Pro pool variation quantities for tiered pricing?
No. SCD Pro’s tiered strategy evaluates the quantity per cart line item, as described above. Campaigns that target a parent variable product apply to all variations β but the tier threshold is still checked against each line item’s own quantity. The honest recommendation is to set your tier thresholds with per-variation quantities in mind, or use a spend threshold campaign where a cross-cart total makes more commercial sense.
Should I set a tiered pricing campaign on the parent product or on individual variations?
Target the parent product. When a campaign is set on the parent variable product, it automatically applies to all its variations β no need to add each one individually. If you target only a specific variation, only that variation gets the discount. For most stores running tiered pricing across an entire product line, targeting the parent is simpler and more reliable.
The clearest path forward
The per-variation quantity behavior in WooCommerce isn’t going away β it’s built into the cart data model. The stores that handle it well do one of three things: they adjust their tier thresholds to match how customers realistically shop, they switch to a spend-threshold approach for products where cross-size buying is common, or they explain the rule clearly on the product page so customers know what to expect before they add to cart.
None of these require custom development or a plugin change. They require understanding exactly how the system works β which is what you now have.
If you want to learn more about setting up tiered pricing effectively in WooCommerce, the tiered pricing setup guide covers tier structure planning and the tradeoffs between per-item and order-total modes. And if a spend threshold approach sounds like a better fit for your store, the spend threshold guide walks through the AOV math and threshold-setting logic in detail.