Selling products in bundles

There are several ways to sell products as a bundled offerings in Norce Commerce, each with its own pros and cons.

  1. Create products with a bundle product type
  2. Present related products together and add them together to a basket
  3. Set up special promotions for products bought together

Here is an overview of the pros and cons of each way to do it. See further below more detail on what is required to set each option up in Norce Commerce.

Solution Details Pros Cons
Using a product type ManagedStructure, ManagedERPPackage or ManagedERPPackageWithCalc + its un-managed counterparts.
  • Is a “real” product in the catalogue
  • Pre-calculated prices
  • Can be exported to marketplaces and channels
  • Can easily be a lot of maintenance if you work with many packages and variants of packages.
Using product relations Typed product relations
  • Flexible, requires less maintenance work for each package
  • More to build in the storefront
  • More “invisible” in admin
  • “Quantity” not supported
Using a promotion Using "add product" and "select product" effects
  • Feature-rich, flexible, requires less maintenance work
  • Even more to build in the storefront
  • Very invisible in admin, not re-usable between applications
  • Can be a lot of promotions, since it probably needs 1-1 mapping bundle-promotion.

Using product types

There are three different kinds of product types that can be used for creating bundles. Each have a new (managed) version with more functionality and an older version with less functionality in Norce Commerce.

It is recommended to use the Managed versions of the product types.

ManagedStructure

This is a bundle designed for being completely managed in Norce. Other systems, like ERP or WMS, don't have to know anything about it. This means that Norce Commerce will calculate On Hand from its children, and place push reservation down to the children when orders are passed through.

Note

If the ERP does not support bundles and you have fixed bundles with little or no choices, this is a good starting point.

Action Managed version Un-managed version
Create It is created in Norce, either in the Admin UI or imported from excel.

Prices must be calculated with the Structure Calculation method, since all orders should pass the price to the ERP on the children rows.
Same
Product integration The product is commonly NOT integrated to ERP or other systems. But can be sent to channels, like a marketplace. Same
Enrichment The children are manually added in the “structure tab” in the Admin UI. Other content is added here as well. Same
Basket Calling InsertBasketItem(s) on the bundle automatically adds the children as well. Updates of basket items will also change the children.

The Norce Commerce Services has the price of both the bundle and its children, so that the front-end can choose how to display it, but the totals are not calculated twice.
Acts as an ordinary product, use InsertBasketItemWithChildren to create the package.

Choose in the implemented if the prices on the children or the bundle should be displayed on the Basket.
Payment The Managed Adapters (for the PSP:s) provided by Norce Commerce handles the amounts correctly. If the PSP needs the whole basket, Norce will send in all rows to the PSP, but the bundle has 0 as price. (*) Norce Commerce does not change the basket in any way, when sending it to the PSP. It is exactly the same as it is created in the Norce Commerce Services.
Transactional integration Just as with the Basket, the Bundle row is still on the Order when passed from Norce to the integration.

But, the recommended practice is for the integration to remove the bundle row and only pass in its children to the ERP, possibly together with bundle information as an attribute to the children rows. The reason for this is that many solutions using this function may want to make sure that the ERP knows what is sold as a bundle and what is not, it could for example be to make sure the bundle is delivered together or packaged together.
Norce Commerce passes on the bundle and children exactly as they are created as the Basket earlier.
Capture When a capture should be done from Norce Commerce an Invoice is sent to Norce and mapped to a capture request passed to the PSP.

If the PSP require a whole order (not only an amount) Norce will map the invoice rows, as they are and replace anything on the PSP side, with these new rows. This means the the capture will remove the bundle row from the payment at the PSP side.
Same
Omni Concerns If you sell to other channels, like a marketplace or a POS integrated system, Norce Commerce can let you sell these bundles. If you use Norce as the order receiver, where the order will be dressed up with its children before passing it on to the transaction integration. Same
(*)

Note that specific PSP:s might work differently, read the documentation about the adapter to learn more.

ManagedERPPackage

ERPPackage differs from ManagedStructure in that it is a real product that the ERP and WMS knows and recognize. This means that Norce Commerce will not calculate On Hand from its children, nor push reservations to the children. Instead, it will be handled by the ERP or WMS (just like a Standard product).

Use this if your ERP has support for bundles that you want to use in your solution.

Action Managed version Un-managed version
Create Just like any other Standard product, this is either created in Norce Commerce first or passed in from the ERP using Norce Commerce Connect.

The children can be added in the Structure tab, or from the integration.

Prices can be calculated using any built in price method. Structure calculation in also possible.
Same
Product integration The product is integrated to ERP and other systems, as well as sent to channels, like a marketplace, if needed. Same
Enrichment The children can be added in the Structure tab, or from the integration. Although adding children at all is optional (but recommended). Same
Basket (Same as with ManagedStructure)

Calling InsertBasketItem(s) on the Bundle, automatically adds the children as well. Updates of basket items will also change the children.

Norce Commerce Services have the price on both the bundle and its children, so that the front-end can choose how to display it, but the totals are (of course) not calculated twice.
(Same as with Structure)

Acts as an ordinary product, use InsertBasketItemWithChildren to create the package.

Prices needs to be manually changed to show correct on the basket.
Payment The Managed Adapters (for the PSP:s) provided by Norce Commerce handles the amounts correctly, if the PSP needs the whole basket, Norce will send in all rows to the PSP, but the bundle has 0 as price. (*) (Same as with Structure)

Norce Commerce does not change the basket in any way when sending it to the PSP, it is exactly the same as it is created in Norce Commerce Services.
Transactional integration Just as with the Basket, the Bundle and its children is still on the Order when passed from Norce to the integration.

But, the recommended practice here is for the integration to remove the children rows and only pass in its main row to the ERP, possibly together with item information as attributes to the bundle row. The reason for this is that many solutions using this function may want to make sure that the ERP knows particulars on what is sold as items.
(Same as with Structure)

Norce Commerce passes on the bundle and children exactly as they are created as the Basket earlier.
Capture When a capture should be done from Norce Commerce an Invoice is sent to Norce and mapped to a capture request passed to the PSP.

If the PSP require a whole order (not only an amount) Norce will map the invoice rows, as they are and replace anything on the PSP side, with these new rows. This means the the capture will remove the children rows from the payment at the PSP side.
Same
Omni Concerns If you sell to other channels, like a marketplace or a POS integrated system, Norce Commerce can let you sell these bundles. n/a
(*)

Note that specific PSP:s might work differently, read the documentation about the adapter to learn more.

ManagedERPPackageWithCalc

ERPPackageWithCalc, short for "with On Hand calculation", is similar to the ERPPackage, with the only difference being that the On Hand calculation in Norce Commerce is used.

This means that Norce will calculate On Hand from its children (just like ManagedStructure) and push reservation down to the children when orders are passed through.

Use this if your ERP supports bundles that you want to use (and the reservation must be implemented through Norce Commerce)

See the ManagedERPPackage above for more details.

What is needed to be built?

If you decide to build bundles using Norce Commerce's product types, you need to:

  • Add bundle creation to product integrations (optional).
  • Present the bundles in the front-end.
    Use ListIncludedProducts to fetch all children, on a product detail view in the front-end.
  • Add mapping rules to the transactional integrations.
    Map according to the recommended practice above, the bundles correctly to the ERP.

Using Product relations

With Product relations you can create a user experience in the frontend that is similar to a bundle. It requires some development in the UI layer but is a solution that does not need that much maintenance when it's up and running.

Create some relation types that is specifically used for this purpose and a product flag that, when set, signals the frontend that this is a product that should be shown as a “bundle”. Call ListProductRelations for the specific types and present the children on the product page.

A simple promotion rule can add special prices to the bundle (not as specific as the solution below is needed), for example ‘all products with flag “bundle-accessory” will get x % discount if a product exists with the flag "bundle" exists in the basket’.

Use this for a simple bundle presentation, for example when selling accessories.

Action Description
Create The Products are ordinary products. The relations can be sent in through integration or created in the Admin UI, or from automation rules.
Product integration Both bundle and children are products and is integrated with the ERP.
Enrichment It is possible to add texts on a relationship between products that override the default text fields on the related product (currently only through the Norce Commerce Connect).
Basket Use InsertBasketItemWithChildren to add the whole bundle to the basket. No specific bundle price functionality exists. No quantity exists on the relation.
Payment Same as ordinary basket.
Transactional integration Same as ordinary basket.
Omni Concerns Other channels can get the same relationships in the feed and can sell the bundles the same way.

Using a promotion

Norce Commerce's promotion functionality can create rules between products that can function as a configurable bundle. This requires some work by the frontend developers to create a good interactive experience. The solution is rich of functionality and lets the customer make choices and selections that creates a bundle with a parent product and its children.

Use this for a rich UI experience with bundles that is configurable.

In the promotion functionality you create a promotion with a requirement rule pointing out the primary products that should act as a bundle. A combination of “add product” and “select products” is used as effects. ListPromotionsByProduct method is used to find the rules to be used in the frontend.

Action Description
Create A promotion is created in the Admin UI. Connect the bundle product to its children.
Product integration Both bundle and children are products and is integrated with the ERP.
Enrichment Bundle rules as manually set up in the promotion UI.
Basket Use InsertBasketItemWithChildren to add the whole bundle to the basket. Prices are autmatically calculated based on the rules on the promotion.
Payment Same as an ordinary basket.
Transactional integration Same as an ordinary basket.
Omni Concerns Other channels using its own shopping and checkout process will not be able to use the promotion rules. these are only implemented in Norce Commerce's basket and checkout functionality.

Suggested further reading

  • TBD