Skip to content
Tek Labs

How to Price a Bundle Without Wrecking Your Margin

By Linh LT 18 min read
How to Price a Bundle Without Wrecking Your Margin
On this page
  1. Key takeaways
  2. Why most bundle discounts are guessed
  3. The hypothetical store and its bundle
  4. The question that decides everything: who else would have bought it?
  5. Choosing the discount format
  6. Shopify mechanics that change your price after you set it
  7. The “compare at” trap
  8. A pricing process you can repeat
  9. Common mistakes
  10. Setting this up in practice
  11. Frequently Asked Questions

Price a bundle by working backward from the contribution margin you need per order, not forward from a round discount. Add up every cost that rises when one more bundle ships (product cost, payment fees, packaging, pick and pack, shipping you absorb), pick a minimum contribution you will accept, and solve for the lowest price. In the hypothetical example below, a 15 percent bundle discount keeps about 39 percent contribution margin, but it only beats selling the items separately if fewer than about 42 percent of bundle buyers would have bought the full set anyway.

Mobile bundle builder showing Set 1 Outerwear and Set 2 Accessories and dresses with four products, a $0.00 total and an Add bundle to cart button
Bundle sets with one pick per set on a phone. Source: Tek Labs demo store, mobile.

Key takeaways

  • A bundle discount is paid out of margin, so start from the price floor (variable cost divided by one minus the contribution margin you need), then choose a discount that sits above it.
  • Count order-level costs, not just product cost. Payment fees, packaging, pick and pack, and free shipping are what turn a 66 percent gross margin on paper into 47 percent contribution before any discount is applied.
  • The real test is cannibalization: the share of bundle buyers who would have paid full price for the same items. Deeper discounts tolerate far less of it (61, 42, and 22 percent at 10, 15, and 20 percent off in our example).
  • Shopify Bundles does not update a bundle price when a component price changes, so a price rise on one item silently deepens your discount. Put a re-pricing check on the calendar.
  • “Compare at” and “you save” claims need a real reference price. The FTC pricing guides treat inflated reference prices as deceptive.
Key takeaways from How to Price a Bundle Without Wrecking Your Margin: 5 points summarized
Key takeaways at a glance. Graphic: Tek Labs.

Why most bundle discounts are guessed

Search for bundle pricing advice and you get lists: tiered discounts, charm pricing, anchor pricing, “pure” versus “mixed” bundles. Those are useful vocabulary, and you can find solid versions of them in [Shopify’s own bundling guide](https://www.shopify.com/blog/product-bundling) and in articles from app vendors. What they rarely show is the arithmetic that tells you whether a given discount makes money. The usual rule of thumb (“10 to 20 percent off”) ignores the one thing that varies most between stores: how much each order costs you to fulfill.

Mobile product page for the Reasonable Jacket with a Build your layered look bundle block, a progress bar toward 5 items for 20% off and Set 1 Outerwear picks
A mix and match bundle builder with a progress bar on a phone. Source: Tek Labs demo store, mobile.

Here is why that matters. Gross margin (price minus product cost, divided by price) is the number most merchants know. But a bundle changes more than the price. It changes the box you ship in, the shipping label, the pick time, sometimes the payment fee, and whether a customer clears your free shipping threshold. Those are variable costs: they rise and fall with every order. The metric that includes them is contribution margin, meaning revenue minus all variable costs, before rent, salaries, and software. SureCart’s guide on the same topic gives the formula in this form: [minimum price equals total variable cost divided by (1 minus target contribution margin)](https://surecart.com/blog/product-bundle-pricing-strategies/). We use that same logic here, then add two things it leaves out: the break-even share of cannibalized orders, and the platform traps that move your price after you set it.

One academic point is worth keeping in mind before any math. Stremersch and Tellis, in a widely cited paper in the Journal of Marketing, define [price bundling as “the sale of two or more separate products as a package at a discount, without any integration of the products”](https://personal.eur.nl/stremersch/artikels/Strategic%20Bundling%20of%20Products%20and%20Prices%20A%20New%20Synthesis%20for%20Marketing.pdf) and note that the immediate impact of price bundling is to increase revenues, not profit. Whether it raises profit depends on contribution margin and on how much extra volume the discount creates. That is the whole subject of this post.

The hypothetical store and its bundle

Everything below is a hypothetical store with made-up numbers. Replace them with your own. The point is the method, not the figures.

The store sells coffee gear. A bundle contains three items that customers often buy together:

ItemRegular priceProduct cost
———
Item A (gooseneck kettle)$32.00$11.00
Item B (pour-over dripper)$24.00$8.00
Item C (filter pack)$18.00$6.00
Total$74.00$25.00

Order-level assumptions for this example:

  • Payment fee: 2.9 percent of the order total plus $0.30 (an assumption for the example; look up the rate on your own plan and gateway).
  • Shipping: the store offers free shipping on orders of $50 or more and pays $8.00 to ship the bundle. Smaller orders pay $5.99 and cost the store $6.50.
  • Pick and pack: $2.00 per bundle order.
  • Packaging: $1.50 for the bundle box.

If you use a third-party payment provider rather than Shopify Payments, remember that [Shopify’s pricing page lists an extra transaction fee on top of the provider’s own fees](https://www.shopify.com/pricing) (2 percent on the Basic plan, 1 percent on Grow, 0.6 percent on Advanced, and 0.2 percent on Plus when we read it on October 1, 2026). That belongs in your fee line.

Step 1: Build the cost stack

At full price ($74.00) the three-item order looks like this:

LineAmount
——
Revenue$74.00
Product cost$25.00
Payment fee (2.9% + $0.30)$2.45
Shipping paid by store$8.00
Pick and pack$2.00
Packaging$1.50
Total variable cost$38.95
Contribution$35.05 (47.4%)

Gross margin on this order is 66.2 percent ($49 divided by $74). Contribution margin is 47.4 percent. That gap of almost 19 points is the reason a discount that looks affordable on a gross margin basis can wreck the order.

Step 2: Run three discount depths

Now apply 10, 15, and 20 percent off the $74.00 total. Product cost, shipping, pick and pack, and packaging stay the same. Only the payment fee moves, because it is partly a percentage of the order.

Full price10% off15% off20% off
—————
Bundle price$74.00$66.60$62.90$59.20
Product cost$25.00$25.00$25.00$25.00
Payment fee$2.45$2.23$2.12$2.02
Shipping, pick and pack, packaging$11.50$11.50$11.50$11.50
Contribution$35.05$27.87$24.28$20.68
Contribution margin47.4%41.8%38.6%34.9%
Contribution lost per ordern/a$7.18$10.77$14.37

Two things stand out. First, each discount point costs more than it appears to, because the $11.50 of order-level cost does not shrink with the price. Second, the dollars lost per order rise in step with the discount, but the extra volume you need to win them back rises faster, which brings us to the next steps.

Mix and match bundle on the Tek Labs demo store showing a Build your layered look set with a progress bar toward saving 20 percent on 5 items
A tiered mix and match offer is a pricing decision, so the discount depth should come from a table like the one above. Source: Tek Labs demo store.

Step 3: Find the price floor and the maximum discount

Instead of testing discounts one at a time, decide the contribution margin you will not go below and solve for price. In this example the fixed costs per order are $25.00 (product) + $8.00 (shipping) + $2.00 (pick and pack) + $1.50 (packaging) + $0.30 (fixed part of the fee) = $36.80. The variable part of the fee is 2.9 percent of price. So:

Minimum price = $36.80 divided by (0.971 minus target margin)

Target contribution marginMinimum priceMaximum discount off $74.00
———
45%$70.634.6%
40%$64.4512.9%
35%$59.2619.9%
30%$54.8425.9%

If this store insists on a 40 percent contribution margin per bundle order, it cannot go much deeper than about 13 percent off. If it can live with 35 percent, 20 percent off is the ceiling. Notice that the 15 percent bundle from the previous table (38.6 percent) fails a 40 percent floor but passes a 35 percent one. The floor is a business decision. The table only tells you what the decision costs.

The question that decides everything: who else would have bought it?

A margin table tells you what each bundle order earns. It does not tell you whether the bundle is profitable overall, because some bundle buyers would have paid full price anyway. Those buyers do not add revenue; they just take the discount. Price bundling can still pay off, but only if the discount brings in enough new orders or bigger orders to cover that leakage.

Stremersch and Tellis give a blunt example in the same paper. Two products priced at $100 and $800, with costs of $80 and $700, are bundled at $810 (10 percent off). The bundle earns only $30 contribution, so [the sales increase must be 300 percent to make bundling profitable](https://personal.eur.nl/stremersch/artikels/Strategic%20Bundling%20of%20Products%20and%20Prices%20A%20New%20Synthesis%20for%20Marketing.pdf). A second example in the paper, with high-margin software at the same 10 percent off, needs only a 12 percent increase. The lesson is that the required lift depends on margin, which is exactly why you need the contribution stack first.

A simple break-even model

For our coffee store, assume that every bundle buyer falls into one of two groups:

  • Full-price-anyway buyers would have bought all three items at $74.00 and earned the store $35.05.
  • Trade-up buyers would have bought only Item A. That order is $32.00 plus $5.99 shipping, with costs of $11.00 (product), $1.40 (fee on $37.99), $6.50 (shipping), $2.00 (pick and pack), and $0.50 (packaging). Contribution is $37.99 minus $21.40, which is $16.59.

Let a be the share of bundle buyers who are full-price-anyway. The bundle breaks even when:

a x $35.05 + (1 – a) x $16.59 = bundle contribution per order

Bundle discountBundle contributionBreak-even share of full-price-anyway buyers
———
10% off$27.8761%
15% off$24.2842%
20% off$20.6822%

Read the table like this: at 15 percent off, if more than about 42 percent of the people who take the bundle would have bought all three items anyway, the bundle earns less than those same people would have earned without it. At 20 percent off the tolerance drops to 22 percent. Check the arithmetic for the 15 percent row: 0.417 x $35.05 = $14.62, and 0.583 x $16.59 = $9.67. Added together, that is $24.29, which matches the $24.28 bundle contribution within rounding.

This model is deliberately crude. It ignores buyers who would not have ordered at all, who make the bundle look better, and it ignores returns and repeat purchase effects. But it gives you a number you can actually watch: of the customers taking the bundle, how many would have bought the whole set anyway? If your bundle is a “complete the set” offer shown only to people who already have one or two items, that share is low. If it sits on a product page where most visitors already intend to buy the whole kit, it is high.

Desktop product page for the Reasonable Jacket with a Build your layered look bundle block beside the product photos
A mix and match bundle block in context on a desktop product page. Source: Tek Labs demo store.

Contribution dollars per order beat AOV

Bundles nearly always raise average order value, so AOV alone will tell you the bundle is working even when it is not. Track contribution dollars per order (or per session) instead. If you do not have that report, a spreadsheet with the bundle orders and the cost stack above gets you close. The [glossary](https://tek-labs.app/glossary/) covers the definition of AOV, and our post on [mix and match versus fixed bundles](https://tek-labs.app/mix-and-match-vs-fixed-bundles/) helps you decide which format generates more incremental orders for your catalog.

Choosing the discount format

Once you know your floor and your cannibalization tolerance, the format is easier to pick.

Flat percentage on a fixed set

This is the simplest to model and the easiest to explain: “Save 15 percent when you buy the set.” The example above uses it. It works best when the set is one most customers would not assemble themselves.

Tiered pricing on mix and match

“Buy 3, save 10 percent; buy 5, save 20 percent.” The deeper tier is only safe if its price still clears your floor at the larger basket, and larger baskets usually shift the mix toward your lowest-margin items. Run the contribution table for the tier, not just for the entry level. Our post on [holiday gift bundles](https://tek-labs.app/holiday-gift-bundles-shopify/) goes through how to choose between a fixed set, pick any three, and build a box.

Fixed price for the set

A fixed bundle price ($62.90 for the three items) is clearer on the page than a percentage and avoids rounding issues. It also has the trap we describe in the next section: the number stays put when your item prices move.

Quantity breaks on one product

A quantity break is the same idea on a single SKU. Because shipping and packaging are shared across units, quantity breaks often protect contribution better than a multi-product bundle at the same percentage (run the numbers to confirm for your own costs). The listing for [Mix & Match Bundles](https://apps.shopify.com/tek-labs-bundle) names fixed pricing, tiered pricing, quantity breaks, flat and percentage discounts, free shipping, and BOGO among the supported discount types, so you can model any of these formats and compare them. If you are choosing between a percentage off and a free item, the margin comparison in our [BOGO versus percentage off](https://tek-labs.app/bogo-vs-percentage-off-margin-math/) post uses the same method.

Buy more save more quantity tiers on the Tek Labs demo store with Buy 1, Buy 2 and Buy 3 options and a free gift on one tier
Quantity tiers share shipping and packaging across units, so each step needs its own contribution check. Source: Tek Labs demo store.

Shopify mechanics that change your price after you set it

The bundle price does not follow component prices

Shopify’s help center is explicit: [when the price of one of the bundled products updates, either manually or from price imports, the bundle price does not update](https://help.shopify.com/en/manual/products/bundles/shopify-bundles). In Shopify Bundles you can edit the bundle price manually, and you must.

Popup reading An inclusive discount code awaiting for you, showing the code GIFTFORYOU, with a sticky Get 10% off now button
Discount code popup with a sticky button. Source: Tek Labs demo store.

What that means in dollars: suppose the store raises Item A from $32.00 to $36.00 in a spring price update. The three components now total $78.00. The bundle is still $62.90. The “15 percent off” bundle is now 19.4 percent off ($62.90 divided by $78.00 is 0.806). The customer sees the same price; your margin quietly dropped. The cost side works the same way: if a supplier raises Item A’s cost from $11.00 to $13.00, contribution falls from $24.28 to $22.28 (35.4 percent) and the bundle price does nothing about it.

The fix is procedural. Whenever you update prices or import a price CSV, filter your bundle products and recalculate them. Put it on the same checklist as updating shipping rates.

Discounts on a bundle are calculated on the parent first

The same Shopify page says that [when a discount is applied to a bundle, the discount calculates on the parent bundle product first](https://help.shopify.com/en/manual/products/bundles/shopify-bundles) and is then distributed among the individual products based on each product’s proportional price. Per-product revenue in your reports therefore comes from that proportional split. The page also says taxes calculate on the individual components and that SKUs are listed for the individual items in orders, not for the bundle SKU, so build any margin report from component lines.

Stacking codes on a bundle

Shopify’s rule is that [product discounts apply first to individual items, order discounts apply to the revised subtotal after product discounts, and shipping discounts apply last](https://help.shopify.com/en/manual/discounts/discount-combinations). If you allow a welcome code to combine with your bundle, price it in. In our example, a 15 percent bundle plus a 10 percent order code on top gives a price of $56.61 (0.90 x $62.90). Contribution falls to $18.17, or 32.1 percent, below even the 20 percent row in the earlier table. If your floor is 35 percent, either exclude bundles from the code or build the floor into the bundle depth. Our [discount combinations test plan](https://tek-labs.app/shopify-discount-combinations-test-plan/) shows how to confirm the cart result before a sale starts.

Limits to know before you design the offer

Shopify’s native Bundles app has limits: [fixed bundles support up to 30 components, with a maximum of 3 options and 100 variants per bundle](https://help.shopify.com/en/manual/products/bundles/shopify-bundles), and bundles do not track inventory by location, only overall stock. Shopify’s developer documentation adds that [bundles cannot be sold with selling plans such as subscriptions, pre-orders, and try-before-you-buy](https://shopify.dev/docs/apps/build/product-merchandising/bundles). If your pricing plan includes a subscribe-and-save discount on the bundle, the native bundle product cannot do it, which is worth knowing before you build the margin model around it.

The “compare at” trap

Showing a crossed-out price next to a bundle price is persuasive, so it is also where merchants get into trouble. Two separate things are going on.

What Shopify displays. The compare-at price field lets you set the original price of a product, and [both amounts can be displayed on product and collection pages, but only the sale price is displayed at checkout](https://help.shopify.com/en/manual/products/details/product-pricing/sale-pricing). Discounts are different: Shopify notes that savings from automatic discounts or discounts that need a code are always displayed with a crossed-out price at checkout, while showing strikethrough savings from discounts on product pages needs a third-party app or a custom build. So decide whether the saving lives in a compare-at price or in a discount, because customers will see different things at checkout.

What the reference price must be. In the United States, the FTC’s Guides Against Deceptive Pricing treat a former-price comparison as legitimate only when the former price is [the actual, bona fide price at which the article was offered to the public on a regular basis for a reasonably substantial period of time](https://www.law.cornell.edu/cfr/text/16/233.1). The guide’s own example is a retailer that inflates a price for a few days before advertising the “reduction,” which it calls not genuine. A separate section on offers that depend on buying other merchandise warns against any seller that [increases the regular price of the article required to be bought](https://www.law.cornell.edu/cfr/text/16/233.4). And for retail price comparisons, the guide says the advertised higher price [must be based upon fact, and not be fictitious or misleading](https://www.law.cornell.edu/cfr/text/16/233.2).

Practical rules that follow from this (we are not lawyers, and this is not legal advice; check your own state and, if you sell in the EU or UK, the local rules too):

  • Do not raise component prices shortly before a bundle launch to make the saving look bigger.
  • If the claim is “save $11.10 versus buying separately,” the three items should actually be sold separately at those prices.
  • If the claim is a former price, you should be able to show that the former price was really charged for a substantial period.
  • Keep a dated record of price changes. It is the easiest evidence if anyone ever asks.

A pricing process you can repeat

  1. List variable costs per order. Product cost, payment fee (percentage and fixed), packaging, pick and pack, shipping you absorb, and any return allowance you want to include.
  2. Compute contribution at full price. This is your baseline per order for the same set of items.
  3. Set a contribution margin floor. Use the formula to get the minimum price and the maximum discount.
  4. Estimate the cannibalization tolerance. Use the break-even model with your own single-item alternative, then compare it with how you will expose the bundle (product page, cart, post-purchase).
  5. Check stacking. Test the worst realistic combination of bundle plus any code that can combine, and confirm the result is above the floor.
  6. Launch with a review date. Pick a date two to four weeks out. Compare bundle orders, contribution dollars, and the share of buyers who would have bought the set anyway.
  7. Re-price on every cost or price change. Because Shopify Bundles does not update the bundle price for you, make this a standing task.
7-step diagram: A pricing process you can repeat
The steps as a diagram. Graphic: Tek Labs.

Common mistakes

  • Pricing from gross margin. A 66 percent gross margin turned into 47 percent contribution in our example before any discount. Use contribution.
  • Forgetting the fixed payment fee. The $0.30 matters more on small orders and less on large ones, so it changes the ranking of bundles by price point.
  • Showing the bundle to people who were already buying the set. Place offers where they change the decision: before the second item, in the cart, or after the first item is added.
  • Setting the discount once and leaving it. Component prices change, shipping rates change, and the bundle price does not follow.
  • Using a crossed-out price you cannot support. Keep the reference price real and documented.
  • Judging success by AOV. A bundle can raise AOV and lower profit per order. Look at contribution dollars.
  • Letting the free shipping threshold and the bundle price fight each other. Baymard’s list of reasons shoppers abandon a cart puts [extra costs that are too high (shipping, tax, fees) first at 40 percent](https://baymard.com/lists/cart-abandonment-rate), so a bundle that lands just under your free shipping line can undo its own appeal. If bundles clear the threshold by design, as in our example, you remove that friction.

Setting this up in practice

Most of the work is the spreadsheet above. Once you know your price floor, the app only has to apply it. [Tek Labs Mix & Match Bundles](https://tek-labs.app/mix-and-match-bundles/) supports fixed and tiered pricing, quantity breaks, flat or percentage discounts, free shipping, and BOGO, with a theme-matching preview and a free plan, and you can see what a tiered offer looks like on the [demo store](https://demo-bundle-app-r3ujxc7n.myshopify.com) (store password: 1). If you would rather start with Shopify’s own free Bundles app, the limits above tell you when it is enough: a fixed set, up to 30 components, no subscriptions.

Today offers side drawer listing a BOGO offer, a buy X quantity gift offer and a popup gift with a claim button
Today offers drawer listing the store’s live offers. Source: Tek Labs demo store.

Frequently Asked Questions

What discount should a bundle have?

There is no universal number. Use the price floor formula: variable cost divided by (1 minus your minimum contribution margin). In our hypothetical store a 40 percent floor allows about 13 percent off and a 35 percent floor allows about 20 percent off.

Should I price a bundle from gross margin or contribution margin?

Contribution margin. It includes payment fees, packaging, pick and pack, and shipping you absorb, which are the costs a bundle changes. In our example gross margin was 66 percent while contribution margin was 47 percent at full price.

Does Shopify update the bundle price when I change a product price?

No. Shopify’s help center says the bundle price does not update when a bundled product’s price changes, manually or through a price import. You have to update the bundle price yourself.

Can I show a “compare at” price on a bundle?

Yes, but the reference price has to be real. The FTC’s pricing guides describe a legitimate former price as one actually offered to the public on a regular basis for a reasonably substantial period. Check your local rules and keep records of past prices.

How do I know if a bundle is cannibalizing full-price sales?

Estimate the share of bundle buyers who would have bought the full set anyway and compare it with the break-even share for your discount (22 to 61 percent in our example, depending on depth). Then review it after two to four weeks of real orders.

Keep reading

All articles →

Tell us the gift offer you want to run.

Tiered gifts, gifts for VIP customers, a different gift each sale week: our team sets it up with you, and checks it on your theme before it goes live.

Free until your gift offers bring in orders. Built for Shopify. Rated 5.0 from 550+ reviews.