OpenCart product bundles

Sell the parts together, count them once

Build a bundle out of products you already stock, give it one price, and it gets its own page in your storefront and its own row in your catalogue. A shopper buys it as one line. The thing it does not ask you to do is keep a second set of stock figures: a bundle has no counter of its own, so what it can sell is worked out from its components every time, and it can never disagree with them. It needs OpenCart 4.1.0.0 or newer. It is the one extension here that does not go back to 4.0.2.0, and it refuses to install rather than half-work.

Get it on the marketplace Read the documentation

A bundle’s own page in the storefront. “What is in this bundle” lists three products with a quantity and a model number each; beside it the price stands at $57.80 over a breakdown reading components add up to $68.00, bundle discount −$10.20, bundle price $57.80, with availability, a quantity box and one Add to Cart button.
What the shopper is handed: one page, one price, and the box itemised underneath it. The availability line beside it is not a number anybody typed. It is what the three products on the left can currently make between them, asked for at the moment the page was drawn.

One price for the whole box

Set it as a fixed amount, or as a discount that tracks your component prices as they change, so a bundle priced at 15% off does not drift to 3% off the month a component goes up. The page shows the shopper what the parts add up to and what the bundle saves them.

Stock derived from the components, never stored

A bundle has no counter of its own. What it can sell is worked out from the products it is made of, every time it is asked for, so it can never disagree with them. When it sells, each component comes down by what was in the box: a kit holding three straps takes three straps.

Demand added up across the whole cart

The same mug in a starter kit and in a gift set is one demand on one figure, so nobody is sold eleven of the ten you have. A bundle that cannot be packed is refused rather than sold: the cart says which line is the problem, checkout will not take it, and your bundle list badges it Broken before a customer meets it.

Components can carry their own options

Where a component has a size, a colour or an upgrade, the bundle page asks for it, the price quoted includes what that choice costs, and the cart is charged the number the page quoted. Shipping and reward points are quoted on what is in the box, and downloadable components arrive in Account → Downloads like any digital product.

It uses the screens you already have

A bundle gets its own catalogue row and its own storefront page, through OpenCart’s own SEO URLs, reviews, wishlist, and rows in What’s Viewed and Products Purchased. There is no report of its own to learn. Order pages show what shipped, frozen at the moment of the order.

Translation published, not claimed

Which of our strings a named native speaker has actually read is published per extension and per language, and anything unreviewed ships as English rather than as a blank or a raw identifier.

Everything it refuses to do sits on one page. Limits and guarantees says that you cannot compose a bundle order from the admin: the order editor refuses a bundle line rather than mangling what the shopper configured. A component cannot be returned or refunded on its own, because the order never recorded what one component cost. A coupon naming a product inside a bundle does not apply to the bundle, and a special or discount set on a bundle’s carrier product is lost. Nothing restocks on a return, which is OpenCart’s own behaviour and is not changed here. A bundle cannot contain another bundle, and a review on a bundle is about the bundle: it never moves a component’s rating and a component’s never moves the bundle’s. It also says what an update keeps: no table is ever dropped, so your bundles, their components, the options on them and every past order’s record of what shipped survive one. Worth reading before you buy.

Questions people ask before buying

Do I have to keep a second stock figure for the bundle?

No. A bundle has no counter of its own. What it can sell is worked out from its components every time it is asked for, so it can never disagree with the products it is made of. Demand is added up across the whole cart, so the same mug in two bundles is one demand on one figure.

Does it install on OpenCart 4.0.2.x?

No, and it says so rather than half-working: Product Bundles needs 4.1.0.0 or newer and refuses to install below it. Everything a bundle tells your cart travels on a piece of OpenCart that only exists from 4.1 onwards. Your version is printed at the bottom of every admin page.

Does it work with OpenCart 4?

Every Kyvero extension is built for OpenCart 4.x. Each one declares the lowest release it will install on and refuses to install below it, and its documentation lists the releases a full install-and-upgrade pass was run against.

Do I get the source code?

Yes. An extension is PHP on your own server: readable, not obfuscated, and with no remote licence check to fail. Your copy is yours to modify and to keep backed up.

Who answers when something goes wrong?

A developer, usually the one who wrote the extension. There are two official routes, the support portal and the support address, and both arrive in the same place.