Understanding bundle pricing and weight price algorithm in Simple Bundles 2.0
When you purchase a bundle of products through Simple Bundles 2.0 on Shopify, the final price you pay is calculated using a specific pricing mechanism. This guide explains how bundle pricing works and how the weight price algorithm allocates the bundle price across its individual components, including what changes when a discount is applied.
How is the bundle price calculated?
In Simple Bundles 2.0, the final price of the bundle is based on the bundle product price, plus any additional adjustments if present.
For example, if you're purchasing a bundle that includes a T-shirt and a pair of shorts, and the bundle price is $50, the final price you pay is that $50 bundle price, plus any applicable adjustments.
How does Shopify split the bundle price across each component? (the weight price algorithm)
Once you proceed to checkout, Shopify uses a weight price algorithm to allocate the final bundle price across each component. This allocation is based on the weight of each component line, where weight is calculated as unit price multiplied by quantity (unit price × quantity).
Here's a step-by-step example:
- Consider a bundle with the following component lines:
- 1 t-shirt (unit price: $10, quantity: 1)
- 2 shorts (unit price: $20, quantity: 2)
- 3 socks (unit price: $30, quantity: 3)
- The weight of each component line:
- T-shirt: $10 × 1 = $10
- Shorts: $20 × 2 = $40
- Socks: $30 × 3 = $90
- Total weight of all component lines: $10 + $40 + $90 = $140
- The weight price algorithm allocates the final bundle price proportionally based on each line's weight. For example, if the amount to be allocated is $100:
- T-shirt: (10 / 140) × $100 = $7.14
- Shorts: (40 / 140) × $100 = $28.57
- Socks: (90 / 140) × $100 = $64.29
This way, each component line receives a fair portion of the final bundle price, based on its individual weight.
Why does a discount make one bundle item's price drop to $0.01 or $0?
When a discount is applied to a bundle, the proportional allocation above can break down. Instead of distributing the discounted amount across all items proportionately, Shopify may deduct the entire discount from only a few items, sometimes reducing their price to a negligible amount, like $0.01 or even $0, while other items retain their original price.
This behavior isn't ideal, and Shopify is actively looking into refining this allocation method to make it more consistent. In the meantime, it's important to understand this when reviewing order summaries.
Example: how a BFCM discount gets distributed across bundle items
Original order without discount
You purchase the "Traveler's Delight" bundle priced at $179.94, which includes:
- 2 units of "Sunset Perfume" at $19.99 each (due to the penny problem)
- 3 units of "Ocean Breeze Perfume" at $19.99 each (due to the penny problem)
- 1 unit of "Mountain Air Perfume" at $20.00
- 1 unit of "Desert Sand Perfume" at $20.00
- 2 units of "Forest Trail Perfume" at $19.99 each (due to the penny problem)
The subtotal for these 9 items comes to $179.94.
Applying the "BFCM" discount
Applying the "BFCM" discount deducts a total of $59.98. However, instead of being distributed evenly across all items, the entire discount is deducted only from "Ocean Breeze Perfume" and "Forest Trail Perfume":
- "Sunset Perfume" retains its original price of $19.99 each
- "Ocean Breeze Perfume" is reduced to $0 for all 3 units
- "Mountain Air Perfume" retains its original price of $20.00
- "Desert Sand Perfume" retains its original price of $20.00
- "Forest Trail Perfume" is reduced to $19.98 total for 2 units
The final amount paid after the discount is $119.96.
While this may look confusing on an order summary, the total discount is always applied correctly to the order overall; it's only the distribution across individual items that can vary.
Why isn't my quantity-based discount (like free shipping over 12 items) applying to orders with bundles?
Simple Bundles 2.0 uses Shopify's Cart Transform API to expand bundles into their individual child SKUs at checkout. However, Shopify's discount engine treats each bundle as a single item, meaning the child components inside aren't counted individually when evaluating quantity-based discounts.
Example
If you offer free shipping on 12+ items and a customer adds 8 individual jars plus one 4-pack bundle, Shopify counts that as 9 items (not 12), so the discount won't apply, even though the customer expects to have met the threshold.
This applies to both code-based and automatic discounts.
Workaround: use a minimum purchase amount instead
Use a minimum purchase amount ($) condition instead of a quantity-based threshold. Since this is based on cart value rather than item count, it applies correctly whether the cart contains individual items, bundles, or a mix of both.