---
schema_version: "1"
id: c5a686e15b68eb7db5cffb845dfaf5b7e87306332a69a3464eb94ebb02762fc2
title: Choice of Bonus Product Discount in B2C Commerce
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/cc/264-0-0/b2c_choice_of_bonus_product_discount.md
canonical_url: https://help.salesforce.com/s/articleView?id=cc.b2c_choice_of_bonus_product_discount.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 64bfa187a13d4aee992054fed79330e52caaaa5bc9c30c5788dd24a8a3dd1e11
description: Offer your shoppers a choice of bonus product as a discount. For example, spend at least $1,000 on living room furniture and get your choice of three different types of televisions.
products:
  - Commerce
  - B2C Commerce
release: "264"
---
# Choice of Bonus Product Discount in B2C Commerce

Offer your shoppers a choice of bonus product as a discount. For example, spend at least $1,000 on living room furniture and get your choice of three different types of televisions.

B2C Commerce adds a bonus product to the shopping cart if the bonus product is online and orderable. The product is orderable if an inventory list is assigned to the site, it’s available to sell, or there isn't an inventory list assigned to site (availability isn't evaluated).

See ProductAvailabilityModel.isOrderable() in the Salesforce B2C Commerce API documentation for more information.

![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png)

Important You can’t assign a bonus discount to a base product because a base product isn't orderable.

To configure bonus products, define rules in Business Manager or use the list functionality to customize your application. Rule-based bonus product discounts let you use a category as a pool of potential bonus products instead of specific Product IDs.

For example:

- Rule-based: Spend $100 and get 1 product from discounted product rule
- List-based: Spend $100 and get 1 product from this list of products: P123, P456, P789

If either discount applies for a basket, B2C Commerce adds a `BonusDiscountLineItem` to the cart, representing an entitlement to a bonus product.

When the B2C Commerce Script API is called to select a bonus product (for example, using `AddBonusProductToBasket`), B2C Commerce validates the product against the configured rule. It rejects the product unless it satisfies the promotion product rule. B2C Commerce identifies bonus products that are improperly associated with `BonusDiscountLineItem` and don't satisfy the configured product rule. B2C Commerce removes the product from the cart.

This table describes some differences between the two discounts.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
      <colgroup>
        <col>
        <col>
        <col>
      </colgroup>
      <thead class="slds-text-title_caps ">
        <tr class="">
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d174387e81">Feature</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d174387e84">Rule-based</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d174387e87">List-based</th>
        </tr>
      </thead>
      <tbody>
        <tr class="">
          <td data-label="Feature" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e81 ">Tiered promotions</td>

          <td data-label="Rule-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e84 ">Tiered promotions can't include rule-based bonus choice discounts.</td>

          <td data-label="List-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e87 ">Tiered promotions can include list-based choices, where each tier has a
            free or defined price bonus product.</td>

        </tr>
        <tr class="">
          <td data-label="Feature" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e81 ">Precalculation</td>

          <td data-label="Rule-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e84 ">
            <p style="margin-bottom:0;">Precalculation for rule-based bonus choice discounts isn't possible.</p>
          </td>

          <td data-label="List-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e87 ">To prevent an invalid promotion from blocking valid promotions from
            applying, B2C Commerce precalculates whether bonus products are available
            online. If not, the promotion acts disabled and doesn't add an entitlement to
            the cart even though the basket qualifies for it. This behavior lets product
            promotions blocked by exclusivity rules properly apply.</td>

        </tr>
        <tr class="">
          <td data-label="Feature" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e81 ">
            <code>BonusChoiceDiscount</code> class
          </td>

          <td data-label="Rule-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e84 ">Represented</td>

          <td data-label="List-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e87 ">Represented</td>

        </tr>
        <tr class="">
          <td data-label="Feature" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e81 ">Application customization</td>

          <td data-label="Rule-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e84 ">Not required</td>

          <td data-label="List-based" class="slds-cell-wrap" style="vertical-align:top;" headers="d174387e87 ">Required</td>

        </tr>
      </tbody>
    </table>

## Rule-Based

Configure a choice of bonus product rule as you would any rule-based [product](https://help.salesforce.com/s/articleView?id=cc.b2c_product_promotions.htm&release=264.0.0&type=5 "Define product promotions for specific products, groups of products or brands, or amounts of products purchased.") or [order](https://help.salesforce.com/s/articleView?id=cc.b2c_order_promotions.htm&release=264.0.0&type=5 "Use Salesforce B2C Commerce to configure order promotions for percentage discounts, fixed price discounts, and free shipping. Offer a bonus product or a choice of bonus products, and tier order discounts.") promotion. When using this discount type, the product results set can be large. The SiteGenesis application shows a window with at most 10 products per page. The SiteGenesis application implements this feature via the promotion ID `RuleBasedChoiceOfBonusProduct`.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note When you enable global product exclusions, and the rule-based discount search results contain excluded products, the area where rule-based products appear is blank.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note Rebuild the product index after creating this discount type.

## List-Based

Configure the discount and change your storefront application. If you only configure it in Business Manager, no discount appears in the storefront. When this discount applies in the storefront, a placeholder is added to the cart containing the discount information. The shopper can add free products to the basket.

[Add extra workflow](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-promotions-for-developers.html#bonus-discount-promotions) to your code to notify a shopper that they’re entitled to the bonus products and let them select the products.

This discount lets shoppers:

- Select items from a bonus product list
- Check out without selecting a bonus product
- Configure options of option bonus products
- Configure variations if the bonus product is a base product
- Buy a specific product and optionally buy a bonus gift for a price
- Spend a specific dollar amount of qualifying merchandise and choose bonus gifts for a configured price from a set of choices

The promotion doesn’t apply if every bonus product is offline, no longer assigned to the storefront catalog, out of stock, or no longer exists. If the bonus promotion previously blocked another product promotion because of exclusivity and rank, the previously hidden promotion applies instead. This process is similar to that of other bonus discounts.

Promotion Classes and Types

In Business Manager, select up to 50 bonus products to associate with the choice of bonus products (list) discount. The relatively low limit is because of performance considerations. Configure the order in which the products appear. Bonus products must be online and assigned to the storefront catalog. Configure up to 10 bonus items for the shopper to select from. The promotion isn't intended to let shoppers select several products, each with a different price. If your goal is to apply promotions to many products at the same time, consider using other promotion types.

## Product Types

 
| Product type | Details |
| --- | --- |
| Variation | Include a base product or a subset of its variation products in a Choice of Bonus Product promotion. If the base product is in the list, the shopper can select any of its variation products. If the discount allows multiple bonus products, the shopper can select multiple variation products. To change the selection, the shopper removes the selected product and selects different variation products. If specific variation products are listed, the shopper can only choose from those. In this case, each appears as a separate choice with no way to change variation attribute values. |
| Option | The shopper can select any option on the bonus selection page. To change option selections, shoppers can remove the selected product and add it again with different options. |
| Bundle | Bundled products don't count toward max bonus items, because a bundle only counts as one item. If the bundle contains base products, the shopper must select variations before adding the bundle to cart. In this case, all variation products of the base product are selectable. If the bundle contains option products, the shopper must select options before adding the bundle to cart. To change option selections, shoppers can remove the selected product and add it again with different options. |

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note You can't use product sets for this discount.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png)

Note The configured promotion-specific price of a variation group included in a Choice of Bonus Product discount doesn’t affect the promotion evaluation.