Description
BundleBoss adds a configurable bundle product type to WooCommerce. Unlike classic bundle plugins where every slot is fixed, BundleBoss lets customers configure each individual unit. A “3 t-shirts” bundle can be three different sizes and colours, chosen in a guided, step-by-step configurator.
Highlights
- Per-unit configuration: every unit of a bundle item can be configured independently
- Guided configurator: collapsible cards with sticky headers, one-line summaries and full keyboard support
- “All the same” toggle: large quantities configured in one tap
- “Apply to the rest”: configure one unit, then copy its picks to the others in a tap, each unit still editable
- Three unit layouts: arrange a multi-quantity item’s units as stacked cards, compact cards, or a comparison table, chosen per bundle
- Progress-to-discount nudge: the cart shows “Add 1 more to unlock 15% off” with a progress bar and a one-click button to add another identical bundle
- Colour swatches: give attribute terms a colour and chips become swatch circles
- Two pricing modes: percentage discount or fixed bundle price
- Quantity tier discounts: “buy 3+, save 20%”
- Sale countdown timer: live countdown bar with start/end scheduling
- Related bundles carousel: cross-sell between bundle pages
- Oversell-proof stock: component stock validated while configuring, at add-to-cart and at checkout, reduced on sale and restored on refund
- Fulfilment-ready orders: pick list with component SKUs and quantities on every order
- Shipping weight modes: automatic (sum of chosen components) or manual
- Shareable build links: customers copy a finished build to a link anyone can open and buy
- Export / import: move every bundle between sites as one JSON file
- Multilingual: WPML and Polylang supported out of the box
BundleBoss Pro
The Builder lives in BundleBoss Pro. It turns a fixed bundle into a full configurator:
- Choice slots: customers pick each component from pools you define (PC-builder style), with live pricing on every option
- Compatibility and quantity rules: stop impossible combinations, enforced on the server, not just in the browser
- Per-item personalisation: optional add-on fields (names, options, notes), each able to carry a fee, captured per unit and shown on the order and the warehouse pick list. Built for team kit, workwear and promo
- Logo and file upload: customers attach a logo or artwork to an item; secure upload, a download link on the order, GDPR export and erase included
- Hero slots: the customer’s chosen product takes over the page’s main product image
- Deal badges: products on sale and featured products surface in the chooser
- Step-by-step layout: walk customers through one item at a time, with progress and free navigation
- Migrate from Composite Products: one click converts existing composites to draft bundles
The free plugin is complete on its own; Pro adds the Builder described here. Everything in the Highlights list above stays free.
Requirements
- WordPress 6.4+
- WooCommerce 8.0+
- PHP 8.0+
Privacy
BundleBoss does not collect, store or transmit any personal data of its own.
- Customers’ bundle selections (which products, quantities and options they picked) are stored only as part of their cart and order: standard WooCommerce order data under your control, removed whenever you erase the order.
- Shareable build links encode product choices in the URL itself; nothing is stored server-side and the links contain no personal information.
- The plugin sets no advertising or tracking cookies.
Third-party services
The free version of BundleBoss does not connect to any external service or send any data off your site.
BundleBoss Pro is a separate, paid plugin that uses Freemius for checkout, licensing and updates. None of that is included in this free version.
Screenshots







Installation
- Upload the plugin to
/wp-content/plugins/bundle-boss/, or install via the Plugins screen. - Activate it through the Plugins screen.
- Create a new product and choose the Bundle product type.
- Add products in the Bundle Items tab, set pricing in Bundle Pricing, optional promotions in Bundle Promotions.
FAQ
-
Does it work with variable products?
-
Yes, that’s the core use case. Customers pick a variation for every unit, restricted to the options you allow per bundle item.
-
Can a bundle include virtual or downloadable products?
-
Yes. Virtual items (services, licence keys you fulfil yourself) just work. Downloadable items deliver their files like any normal purchase: permissions are granted when the order is paid, the customer gets the links in the order email and under My Account Downloads, and a refund cuts access automatically.
-
Does selling a bundle reduce the stock of the products inside it?
-
Yes. Component (and variation) stock is reduced when the bundle sells and restored if the order is cancelled or refunded. Stock is also validated during configuration, at add-to-cart, and again at checkout.
-
Can I set one fixed price for the bundle?
-
Yes. Each bundle can use either a percentage discount off the sum of the chosen items, or a fixed price that never changes regardless of the customer’s choices.
-
Can I make the configurator match my store’s branding?
-
Yes. The configurator inherits your theme’s fonts automatically, and every colour it uses is exposed as a CSS variable. Set a handful of values in Appearance Customize Additional CSS and the whole interface follows your brand:
:root { --bb-accent: #c2410c; /* step highlights */ --bb-ink: #1e2a4a; /* headlines and the total bar */ --bb-surface: #fffdf8; /* cards */ --bb-border: #e8e0d0; }The full token list is documented at the top of the plugin’s bundle.css.
-
Can I show my own information next to the configurator (total weight, nutrition, performance)?
-
Yes. The configurator fires a JavaScript event,
bundle_boss:build_changed, after every change the customer makes. The event detail carries the whole build: which products and variations are picked, quantities, and the running totals. Listen for it, derive whatever your store cares about, and render the result into the container printed by thebundle_boss_after_summaryaction:document.addEventListener( 'bundle_boss:build_changed', function ( e ) { if ( ! e.detail.complete ) { return; } // e.detail.items gives [ { productId, qty, units: [ { variationId, attributes } ] } ] myPanel.textContent = 'Total weight: ' + myWeightFor( e.detail.items ) + ' kg'; } );A PC store renders performance estimates, a hamper store calories, a ski shop carry weight. The event works on every bundle, free and Pro alike.
-
Does it work with the block (Gutenberg) cart and checkout?
-
Yes, both. The classic shortcode pages and the block-based Cart & Checkout are fully supported: bundle pricing, the selections summary, stock protection and order details all work identically, and the progress-to-discount nudge appears in the block cart too. Block themes (Full Site Editing) are also tested.
-
Is my data removed when I uninstall?
-
By default, no: bundle products and their configuration are deliberately kept, so reinstalling restores everything. If you want uninstalling to remove all bundles and settings, switch on “Delete all BundleBoss data when the plugin is uninstalled” under WooCommerce BundleBoss (download an export first, on the same page).
-
Can I back up my bundles or move them to another site?
-
Yes. WooCommerce BundleBoss exports every bundle (items, choice pools, rules, pricing and promotions) as one JSON file. Importing matches products by SKU, then slug, so the file survives the move to a site where product IDs differ; anything that can’t be matched is reported, never guessed.
-
Does it work on multilingual sites (WPML / Polylang)?
-
Yes. Bundle settings copy to translations, slot labels are translatable per language, and product/term references are mapped to the language being browsed.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“BundleBoss” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “BundleBoss” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
4.4.13
- New: set a bundle’s Tax status and Tax class, so a bundle can use a reduced or zero rate, or be tax exempt, just like any other product. Bundles still default to Taxable at the standard rate.
- New: mark a bundle as Virtual when it ships nothing (digital or service bundles), which removes it from shipping.
- New: a “Sold individually” option to limit a bundle to one per order.
- New: Upsells and cross-sells for bundles, on the Linked Products tab.
- Fix: “Order again” now rebuilds a bundle’s saved configuration instead of asking the customer to set it up from scratch.
4.4.12
- New: a per-bundle Main image setting (Show, Hide, or update it from the customer’s chosen colour).
- New: hide the image on any individual bundle item.
- The cart lists a bundle’s contents as a clean, readable list on the classic cart, the mini-cart and the block cart.
- The bundle stock setting moved to the Inventory tab, where WooCommerce keeps stock.
- Phone polish: the summary bar sits correctly, colour tiles fit two or three across, and wide option tables scroll instead of clipping.
- Clearer choice-slot labels, plus display fixes for the grid layout, empty choice slots and per-item personalisation.
- Reliability: a guard against two active copies of the plugin, and a more dependable first-bundle tour.
4.4.11
- The free version is now fully self-contained: it bundles no third-party SDK and connects to no external service.
- Added clear links to BundleBoss Pro from the Tools page and the bundle editor.
4.4.10
- Hardening: the free build carries no reference to Pro-only features in its admin screens or assets; guides for Builder features appear only when the Builder is active.
4.4.9
- Hardening: tightened input sanitisation, switched inline styles to the standard enqueue, and aligned class and data naming with the WordPress coding standards for the plugin directory. No change to how bundles work.
- Maintenance: the swatch colour stored on attribute terms moves to a fully prefixed key automatically on upgrade.
4.4.8
- Maintenance: updated the bundled Freemius library to version 2.13.2.
4.4.7
- Fix: the plugin header no longer uses the same URL for both Plugin URI and Author URI.
- Docs: reworded the Freemius note in the privacy section so it describes the optional opt-in accurately.
4.4.6
- Documentation: the privacy section now describes the Freemius licensing and update service and its optional, skippable usage analytics, so the readme matches the plugin’s behaviour. No functional change.
4.4.5
- New: a “Help” tab on each bundle and a “Docs” link on the Plugins screen, both opening the step-by-step online guides.
- Improvement: identical units are grouped in the “What’s in this bundle” summary and the collapsed item card (for example “XS / Black, 10 of them” rather than ten repeated lines).
- Fix: the onboarding tip no longer sits on top of the product-type dropdown.
- Improvement: tidier optional-item heading in the Grid page layout on narrow screens.
- Hardening: added capability checks to the admin product-search requests, switched the uninstall cleanup to a prepared query, and tightened input handling. No visible change.
4.4.4
- Improvement: colour swatches now fill in automatically from the colour’s name, in both the grid and the configurator, so imported or custom-attribute products show the right colour dots without setting anything up. Recognises common colour names (and compound names like “Royal Blue” or “Heather Grey”); an unrecognised name falls back to showing the colour’s label rather than a blank dot.
4.4.3
- Improvement (Pro): the Quantity grid always uses Colour for the tiles, whatever order your attributes are in, so a product whose first attribute is Size still shows colour tiles instead of size tiles.
- Improvement (Pro): choosing a colour no longer reflows the other tiles. The colour tiles stay put and the chosen colour’s sizes open in a row beneath them.
- Improvement (Pro): the chosen size run now appears in the “What’s in this bundle” summary, priced per variation.
4.4.2
- Improvement: the free version now shows “Quantity grid (Pro)” as a disabled option under Multiple items, so you can see the feature exists (the same way “Step by step (Pro)” appears). The grid itself stays a Pro feature.
4.4.1
- Fix: when a brand-new product was switched to the Bundle type and items were added in the same save, the items could be dropped on that first save (they only stuck if you saved once as a bundle, then added items and saved again). The save now trusts the product type being saved instead of a stale cached value, so the first save keeps everything.
4.4.0
- New (Pro): Quantity grid layout for size runs. A variable item bought in quantity can be shown as a grid of colour tiles; the customer taps a colour and types how many of each size, building a bulk run (for example 5 small navy and 5 large red) in one place instead of configuring each unit. Choose how the tiles look per bundle: swatches, swatches with names, names, or product photos
- Improvement: Choice slots now honour the bundle’s multiple-item layout (compact cards, table or the quantity grid) for the product the customer picks, not just fixed items
- Improvement: Clarified the “Multiple items” setting help text, which only affects a variable product a customer can buy more than one of
4.3.1
- Fix: bundle items built from variable products that use custom (product-level) attributes now configure correctly. The configurator matched variations by attribute slug, which works for global (taxonomy) attributes but not custom ones, where WooCommerce stores the raw value; both are normalised now, so every combination resolves instead of showing “this combination is currently unavailable”.
4.3.0
- New (Pro): Per-item personalisation. Optional add-on fields on any bundle item (text, textarea, number, dropdown, tick box, section label), captured per unit or once for the whole item. Each field or option can carry a fee that flows to the live total, cart, order and pick list. Required rules include an anchor-follower mode, so a method or position left without a name is simply ignored
- New (Pro): Logo and file upload on items. Secure upload (type allowlist, size cap, path confinement) that shows as a download link on the order and pick list, with privacy export/erase and a daily cleanup of abandoned uploads
- New: Three ways to arrange a multi-quantity item’s units, chosen per bundle: stacked cards (default), compact cards, or a comparison table. The cart, order and pricing are identical whichever you choose
- New: “Apply to the rest”. Configure one unit and copy its picks to the other units in a tap; each unit stays editable and names are left blank to fill in
- New: public
bundle_boss:build_changedJavaScript event fires after every configurator change with the full build state, so developers can render outcome panels (weight, nutrition, performance) that update live - New (Pro): choice slot candidates now surface deals. Products on sale show their strikethrough price and a “N% off” badge, and featured products carry a “Popular” ribbon. No setup: it reads the sale and featured flags your products already have
- New: a “What’s in this build” recap inside the summary bar lists every pick with the price it adds, so customers can audit the total before adding to cart. Collapsed by default, grows live with the build
- New (Pro): hero slots. Tick “Chosen product sets the main image” on a choice slot and the customer’s pick takes over the page’s main product image, configurator-style. Reverts when the choice is cleared, and works with shared and edited builds
4.2.1
- New: Licensing, secure checkout, automatic Pro updates and the 14-day free trial, powered by Freemius (the free version stays fully functional and phones nobody without your say-so)
4.1.2
- New: Express-checkout protection. Instant-buy buttons (PayPal smart buttons, Apple/Google Pay) no longer appear on bundle PRODUCT pages, where nothing is configured yet; at cart and checkout every payment method still works exactly as normal. Any attempt to add an unconfigured bundle to the cart, by any plugin or API, is refused with a clear message
- Tested: full e2e suite verified with the PayPal Payments and Stripe gateway plugins active
4.1.0
- New: Cart & Checkout Blocks support. Bundles work end to end on the block-based cart and checkout (Store API), including the progress-to-discount nudge in the block cart and “+1 same configuration”; compatibility now declared
- New: Cart item titles link straight to the bundle in edit mode, across the classic cart, block cart and mini-cart
- New: Downloadable components deliver their files. Bundles can include licence keys, ebooks or software; download permissions are granted on payment with each product’s own limits, and the files appear in order emails, the thank-you page and My Account Downloads
- Tested: block themes (Full Site Editing), all three layouts verified on Twenty Twenty-Five
4.0.0
- New (Pro): The Builder, with choice slots: bundle items whose product the customer picks from a pool, PC-builder style, with per-slot discounts and lazy-loaded candidate grids
- New (Pro): Compatibility rules: “if slot A’s choice has [tag], slot B must / must not have [tag]”, hide or warn-only, enforced server-side
- New (Pro): Quantity rules: “when slot A has [tag], slot B can have at most N units”, with live stepper caps
- New (Pro): Step-by-step layout, to walk customers through one item at a time with a progress bar, done ticks and free navigation
- New (Pro): Migrate from Composite Products. One click converts composites to draft bundles (components become choice slots); originals untouched, everything unmappable reported
- New: Shareable build links. A complete build copies to a stateless URL anyone can open and buy
- New: Export / import. All bundles as one portable JSON file (WooCommerce BundleBoss); products matched by SKU/slug on import with a full report
- New: First-bundle tour, a short, dismissible walkthrough from product type to publish on a fresh install
- New: Opt-in data removal on uninstall (default keeps everything safe)
- New: WPML/Polylang support. Settings copy to translations, slot labels translatable, product/term references mapped per language
- New: Unlimited max quantities (leave Max empty), plain-English admin help tips throughout
- Improved: grid layout rebuilt with container-responsive cards. Proper grids in wide theme columns, a clean list presentation in narrow ones
- Improved: edit-from-cart restores simple-item quantities; consistent trash-icon row controls; admin product search fixes (backspace, whitespace, pagination)
- Fix: the sale countdown progress bar stayed empty when a sale had only an end date
- Performance: audited against a 50,000-product catalogue; every storefront endpoint answers in under 250ms median
- Dev: full WordPress-Extra coding standards pass (zero errors), shipped ruleset
3.6.0
- New: Progress-to-discount callout on the cart. “Add 1 more to unlock 15% off” with a progress bar, a one-click “+1 same configuration” button and a link to configure a different one
- New: Sale Period fields use a bundled flatpickr date-time picker (single field, styled calendar)
- New: Accessibility pass. Labelled groups, aria-pressed chips, keyboard-operable accordion (Enter/Space/Escape), visible focus styles
- Improved: completed items no longer auto-collapse, so customers review their choices and collapse on demand
- Improved: sticky card headers keep the collapse control in reach inside tall cards; collapsing keeps the header anchored with zero scroll jump
- Improved: simple products no longer show an empty restrict-options box or the options display picker in the admin
- Fix: included optional simple items were dropped from the cart price
- Fix: repeated “Update Bundle” added a new cart line instead of replacing
- Fix: editing a bundle forgot that an optional item had been excluded
- Fix: submit button label accumulated ellipses on repeated clicks
- Dev: asset cache-busting under WP_DEBUG; Mailpit mail catcher;
make distrelease packaging; GitHub Actions CI
3.5.0
- New: Shipping support. Shipping tab enabled for bundles with automatic (sum of chosen components) or manual weight mode
- New: Selection validation extracted to a reusable, tested function
- Performance: component-to-bundle index replaces full catalogue scan when component prices change
- Tests: tax, coupon, validation, shipping weight and index coverage (46 assertions)
- Housekeeping: uninstall.php, readme.txt, translation template
3.4.0
- New: Fixed-price bundle mode alongside percentage discount
- New: Checkout-time component stock revalidation
- New: a pick list of component SKUs on admin orders; aggregated contents in emails
- Fix: cart line quantity now multiplies into stock checks, stock reduction and tier counting
- Fix: tier discounts were never applied in the cart (price override discarded the cart price)
3.3.0
- New: Colour swatches for attribute terms (term meta + colour picker + swatch column)
3.2.x
- New: Sale countdown timer with schedule, related-bundles carousel, Bundle Promotions tab
- New: Accordion configurator with auto-advance, “All the same” toggle
- Fix: stock cap fields conflict with WooCommerce core inventory fields
