What is a Magento Bundle Product?
Short answer A Magento Bundle Product is the product type for "build your own" kits and packages. The shopper picks from groups of items, and each item is a simple or virtual product of its own. An option can be required or optional, a quantity can be fixed or editable, and the bundle’s price, weight and SKU can be dynamic (worked out from the children) or fixed. I use it for PC builds, gift hampers, meal kits and B2B parts kits.
- Define the bundle parent (name, SKU, optional fixed price) 01
- Add bundle options: each option is a group of choices 02
- Link child products to each option (with qty + user-pick toggle) 03
- Configure pricing model and shipping behaviour 04
- Frontend renders the option picker; cart stores parent + selected children 05
Most common mistake Choosing Bundle when Configurable is the right type
Five steps to build a Magento bundle, from admin to cart
A bundle looks simple on the storefront, but setting one up takes five separate steps in the admin. Do them in this order and the product behaves the way you expect, from the product page through to the shipment.
-
01
Define the bundle parent (name, SKU, optional fixed price)
In the admin I go to Catalog → Products → Add Product → Bundle Product. It gets a name, a SKU, a description, and the Dynamic or Fixed choice for SKU, price and weight. With dynamic settings the parent carries no price or weight of its own; both come from the children the shopper picks. I think of the parent as an empty shell the customer fills in.
-
02
Add bundle options: each option is a group of choices
An option is a group such as "Pick a CPU" or "Pick a side dish". Each one has a title, a Required checkbox and an input type: Drop-down, Radio Buttons, Checkbox or Multiple Select. The shopper can’t add the bundle to the cart until every required option has a choice. Optional ones can stay empty. You drag options to set the order they show on the product page.
-
03
Link child products to each option (with qty + user-pick toggle)
Inside each option you click Add Products to Option and pick existing simple or virtual products. Per child you set a default quantity, whether the shopper may change that quantity (User Defined), and which child is selected by default. The children have to exist as their own products first. Unlike a configurable product, a bundle does not generate them for you, and the same child can sit in as many bundles as you like.
-
04
Configure pricing model and shipping behaviour
With Dynamic price the bundle total is the sum of the chosen children at their own catalogue prices. With Fixed price the bundle has its own base price, and each selection can add a fixed or percentage amount on top. Ship Bundle Items is either Together (the bundle ships as one item) or Separately (each child can be shipped on its own shipment). I use Separately when parts of a kit leave the warehouse at different times.
-
05
Frontend renders the option picker; cart stores parent + selected children
On the product page each option renders with its input type, usually behind a Customize and Add to Cart button. The price updates in the browser as the shopper picks. In the cart and on the order you get the bundle as a parent line with the chosen children as child items underneath, each with its own price and quantity. Stock is deducted from each child SKU, not from the bundle.
Four scenarios where Bundle is the right product type
Bundle is a narrow tool. These are the four cases where I pick it over Configurable, Grouped or Custom Options.
-
Computer / PC configurator builds
The classic bundle. The shopper picks a CPU (required, radio), a GPU (required, radio), RAM (required, drop-down), storage (checkbox, so SSD and HDD both work) and optional extras like a mouse or keyboard. Every part is its own simple product with its own stock and price. With dynamic pricing the build price is just the sum of the parts, so nobody has to keep a price table up to date.
-
Gift hampers and curated packs
Christmas hampers, wedding gift sets, corporate welcome boxes. A fixed-price bundle lets you advertise one price for the hamper and still let the customer swap one wine for another, choose chocolate or biscuits, or pick a card design. The headline price in your marketing stays the same. Ship Together fits here, because it all goes out in one box.
-
"Build your own meal" food kits
Meal kits, click-and-collect menus, recipe boxes. The customer builds a meal: a protein (required, radio), a side (required, drop-down), a sauce (optional, checkbox) and a drink (optional, radio). Each item is a simple product with its own stock and barcode, which helps with picking and allergen labels. Dynamic price adds the meal up correctly without anyone maintaining it.
-
B2B kitting and parts assemblies
Distributors selling electrical, plumbing or repair kits, where a kit is mostly a fixed parts list but buyers sometimes swap one component. I set the core parts as required options and accessories as optional ones, and use Ship Separately when parts come from different places. Because stock sits on each child, the kit shows the right availability when one part is out.
Three traps that turn a bundle launch into a support backlog
Every bundle rescue project I have been called in to fix made one of these three mistakes early. Avoid them and the launch ships clean.
-
Choosing Bundle when Configurable is the right type
Bundles are packages (a CPU + a GPU + RAM = one build). Configurables are variants of one parent (a t-shirt in size S/M/L, in red/blue/green = one t-shirt with options). If your "options" are colour and size on the same physical item, you want Configurable, not Bundle. Picking Bundle for a clothing variant ships you into multi-SKU chaos, broken stock, and a PDP that looks wrong. The rule of thumb: if the customer ends up with one item, use Configurable; if they end up with several items, use Bundle.
-
Forgetting to set "Ship Separately" on heavy or bulky kits
Default shipping for bundles is "Ship Together", Magento adds the child weights, picks one parcel size, and sends one carrier rate. For furniture kits, large electronics builds, or anything fragile, this single carton becomes oversized and triggers premium freight rates. Switching to "Ship Separately" lets each child generate its own rate, often saving 30-60% on shipping for bulky kits. Audit the shipping mode every time you launch a new bundle category.
-
Dynamic price catching admins out on promo rules
When pricing is Dynamic, the bundle parent does not own a price: the children do. Catalog price rules, special prices, and cart price rules applied to the parent may not flow to children automatically; they often need to be applied per-child or scoped to a category that contains the children. Test every promo rule against a dynamic bundle before launching a campaign. The classic failure mode is "10% off all bundles" that does nothing on the storefront because the rule has no child price to discount.
Magento Bundle Product: frequently asked questions
-
Bundle vs configurable: what is the actual difference?
Configurable products are variants of one item: a t-shirt with size and colour options always resolves to one physical t-shirt. The variants share a parent product page but each combo (size M, colour red) is its own underlying simple product with its own SKU and stock. Bundle products are packages of several items: a PC build, a hamper, a meal kit. The customer ends up with multiple distinct items, each a separate simple product in your catalogue. Rule of thumb: if the cart contains one item at the end, use Configurable; if the cart contains several items grouped under one parent, use Bundle. -
Can a bundle child be a configurable product?
No. Magento restricts bundle children to simple or virtual product types only. You cannot attach a configurable, grouped, or another bundle as a child. The reason is dependency depth, if a child were configurable, the bundle picker would need to expose a nested configurable picker (size, colour) inside each option, and the cart line would need to track parent + bundle + configurable variant. Magento dodges that complexity by keeping bundle children flat. Workaround: create simple-product variants of your configurable, attach the variants directly as bundle children, and let the bundle option act as the size/colour picker. -
How does Bundle Pricing Dynamic vs Fixed actually work?
Dynamic Pricing: bundle total is the sum of selected children's catalogue prices, multiplied by their selected quantities. The parent product has no price of its own. Use this for "pay for what you pick" builds like PC configurators or meal kits. Fixed Pricing: the parent has its own single price that overrides children. The children's catalogue prices are ignored at the parent level: Magento displays only the fixed parent price regardless of what is selected. Use this for fixed-price hampers, subscription boxes, or any kit where you want a consistent headline price (e.g. £75 gift box) regardless of which child variants the customer picks. -
Do bundle line items show separately in the order and invoice?
Yes. On the order, invoice, shipment, and credit memo, Magento displays the bundle parent as the main line item with the selected children as nested rows beneath it. Each child row shows its own name, SKU, quantity, and price (price column appears for Dynamic pricing; for Fixed pricing the children show qty + SKU but not price). This is important for warehouse picking, your fulfilment team sees the individual SKUs to pick from the shelf, and for tax reporting in jurisdictions that require per-item line detail. Some accounting integrations need extra configuration to round-trip the nested structure correctly. -
Can I set per-item quantity limits inside a bundle option?
Partly. At the child level you can set a default quantity and a "User Defined Quantity" toggle: if off, the customer is locked to that qty; if on, they can change it. Magento does not natively expose min-qty or max-qty per child inside an option: only the default and the on/off toggle. For per-child min/max enforcement you either: (1) add custom JavaScript validation to the PDP, (2) write a quote validator plugin that rejects out-of-range qtys at add-to-cart, or (3) use a paid extension like Amasty Bundle Options or Mageworx Bundle Options Pro that adds the missing fields to the admin UI. -
How do tax and shipping rules apply to bundles?
Tax: by default, tax is calculated per child based on each child's tax class, not the parent's. So a hamper containing a 20%-VAT bottle of wine and a 0%-VAT food item taxes each child correctly. Override: set "Tax Class" on the parent and enable "Use Fixed Tax" on dynamic bundles only if you need uniform tax across all children. Shipping: controlled by the "Shipping" setting on the bundle parent, Together bundles the children into one parcel using the parent's weight (sum of child weights for dynamic, fixed weight for fixed-price), and Separately generates a shipping rate per child. Use Separately for kits where children ship from different warehouses or where multi-parcel rates are cheaper than a single oversized carton.
Need a custom bundle or configurator built on Magento?
Send me your kit, configurator, or hamper requirement: I will reply with a fixed-price quote, recommended product-type setup, and earliest start date. 24-business-hour turnaround.