Try our conversational search powered by Generative AI!

Shannon Gray
Jun 9, 2017
(5 votes)

Episerver Catalog Packages vs Bundles

This is a short blog to clarify a catalog concept that is often unclear for folks new to Episerver : the difference between bundles and packages.

Bundles and packages are catalog item-types that have distinct features and different use cases.

A bundle is a collection of SKUs that are simply grouped together for catalog-browse and add-to-cart purposes. There is no bundle-specific pricing or inventory. The pricing for a bundle is simply the total of the prices for the SKUs in the bundle. Inventory is tracked on the SKU level. A common scenario for using bundles is when an item usually needs to be bought in conjunction with other items in the catalog, like a phone and its charger.

When a bundle is added to the cart, your “add to cart” functionality needs to retrieve the SKUs in the bundle from the system and add each one to the cart. Once in the cart, the SKUs from the bundle are not identifiable as part of a bundle; they’re simple SKUs (as lineitems) in the cart. Therefore, a) you can’t attribute promotions to them as a bundle, b) you can change the quantity of each SKU/lineitem independently, and c) you can delete the individual lineitems that were associated with the bundle SKUs.  Given the lack of pricing on a bundle and that promotions can’t be applied to them, you can’t provide discount pricing to incentivize buying bundles (at least not without significant additional development).



Conversely, packages contain SKUs but have their own pricing and inventory. When you add a package to the cart, its a single lineitem, like a SKU. SKUs can’t be removed from the package lineitem in the cart. You can only update the quantity of the package in the cart (or remove it). You can think of a package as a group of SKUs that are physically stored together and inventory is managed on the package level.  Packages allow you to provide discounted pricing for a group of SKUs. You can also create promotions for packages. Note, however, that promotions which apply to SKUs contained in the package will not apply to the package lineitem.



These catalog types and their behavior are flexible with some minor customization. You could do things like:

* Create a “dynamic package”, where a user can select which items in a package or bundle is ultimately purchased in their cart.

* Use packages but still maintain inventory on the SKU level

* Add a package as multiple lineitems in the cart

These customizations may require additional effort to a) ensure your pricing logic reflects this logic, b) modify the way carts are processed to validate the content of the carts, update prices, etc , and/or c) change the way your add to cart functionality works.


Documentation on how to work with packages and bundles programmatically is here:

[Edited to incorporate comments below from Khurram and Per from 6/9/17]

Jun 09, 2017


Jun 9, 2017 11:13 AM

Nice explanation!

K Khan
K Khan Jun 9, 2017 12:23 PM

:), there are few other general questions that will require answers,

What happens when we add/remove Sku from cart?

What happens when we update quantity of a Sku in cart?

How promotion works on Bundles and packages?

Jun 9, 2017 04:17 PM

Lets see if I can answer those questions.

In the bundle scenario, once you add the bundle to a cart it is replaced with the skus in the bundle. When that has happened, there is no knowledge anymore that they came from a bundle. So when adding/removing/updating the skus in the cart it works in the exact same way as if the were added one by one, without the unse of a bundle.

The promotion sytem will not take bundles into account, rather it looks only on the skus in the cart. If they were added by a bundle or directly is not taken into account.

In the package case, the package is basically a sku it self, and treated as such. In other words, it is not possible to add/remove/update specific items in the package when it's in the cart. You can only remove or change the quantity of the whole package.

The promotion system will handle packages in the same way as any other skus. Since the package has it's own price and quantity any evaluations and reductions would be done directly on the package. Skus in a package will be ignored by the promotion engine, unless they are directly added to the cart.


Per Gunsarfs

K Khan
K Khan Jun 12, 2017 03:27 PM

Thanks Per, your answer completes this article :)

Shannon Gray
Shannon Gray Jun 13, 2017 12:51 AM

Thanks Khurram for pointing out some good questions to round out the topic. And thank you Per for filling in the blanks. I updated the blog to include these distinctions so folks don't have to get into the comments for clarification.

Please login to comment.
Latest blogs
Developer meetups in Stockholm & Helsinki

It's time for developer meetups! Next month we will be in Stockholm and Helsinki. Join us for getting the latest updates from Optimizely, be inspir...

Magnus Kjellander | Feb 23, 2024

Roll Your Own Security Headers

Proper security headers are a must for your Optimizely driven website. There are a variety of tools out there that will help with this, but when...

Ethan Schofer | Feb 21, 2024

Migrate Catalog content properties

A colleague asked me yesterday – how do we migrate properties of catalog content. There is, unfortunately, no official way to do it. There are...

Quan Mai | Feb 20, 2024 | Syndicated blog

Adjust log levels in Optimizely DXP

You may adjust the log levels for your site in Optimizely DXP yourself, but only for the Integration environment. Follow this step-by-step guide.

Tomas Hensrud Gulla | Feb 20, 2024 | Syndicated blog

Introducing Search & Navigation Dashboard for Resource Usage

We're excited to unveil the latest addition to the Search & Navigation suite: a dashboard designed to proactively monitor your resource usage. It's...

Edvin Dackelid Johansson | Feb 20, 2024

Introducing Jhoose Security Module V2.0

Version V2.0 of the Jhoose Security module has been released and is available via the Optimizely nuget feed. This update not only squashes several...

Andrew Markham | Feb 19, 2024 | Syndicated blog