Promotion Priority Rules

If multiple promotions are applicable at the same time, Salesforce B2C Commerce applies them in a well-defined order to prevent double dipping or unpredictable results. For example, it is important to apply product promotions before calculating and applying order promotions because order promotions are dependent on the merchandise total of an order after product price adjustments. Also, promotions of a specific class, such as product promotions, must be applied in a specific order to achieve predictable and consistent results. The rules controlling the sequence in which promotions are calculated are called promotion priority rules. You can't customize some of these rules. However, promotion ranking and exclusivity types enable you to control which promotions are prioritized when more than one promotion applies. The maximum application setting also affects how promotion priority rules are applied.

Prioritize External (Non-Customizable)

Promotions entered programatically through APIs, such as script or OCAPI, that are not represented by promotions in the system, are applied before promotions entered through Business Manager.

Prioritize by Promotion Class (Non-Customizable)

B2C Commerce always applies promotions to orders in the following class order:
  1. Product promotions
  2. Order promotions
  3. Shipping promotions
This is non-customizable. B2C Commerce calculates order promotions on the basis of the merchandise total after it calculates product promotions. After it applies order promotions, it prorates order-level discounts across all products within the order. Finally, it calculates shipping promotions.

Prioritize by Exclusivity Type (Customizable)

Within each class, promotions are prioritized by exclusivity type, which you can define per promotion. B2C Commerce always applies class exclusive promotions before promotions with no exclusivity type specified. See below for more details on exclusivity rules. See Promotion Compatibility.

Prioritize by Rank (Customizable)

Promotions are next prioritized by rank. Rank is a numeric attribute that you can specify. B2C Commerce always calculates promotions with a defined rank before promotions without a defined rank. If two promotions have a rank, the one with the lowest rank is calculated first. For example, a promotion with rank 10 is calculated before one with rank 30.

Prioritize by Discount Type and Value (Non-Customizable)

Promotions are next prioritized according to the discounts they offer. In general, promotions are sorted by discount type (details below). If there are multiple promotions of the same discount type, they are sorted so that promotions providing the best value to the customer are evaluated first. Because promotions can be tiered and offer multiple discounts, read the following for further details.

When B2C Commerce is trying to prioritize two promotions by discount, it pre-evaluates the discount tiers of each and determines which tier, if any, would apply for each. For example, suppose a promotion had two tiers:

Also suppose that a basket has a quantity 4 of product P. In this example, the lower discount tier ($5 off) is the pre-evaluated discount, so the discount type is amount-off. After this pre-evaluation process, each promotion is associated with 0 or 1 discounts.

Promotions are then sorted by discount type according to the following sequence.
  1. Fixed price
  2. Total fixed price
  3. Free
  4. Price book price
  5. Amount-off
  6. Percent-off
  7. Bonus-product
  8. Choice of bonus products
  9. Free product-shipping
  10. Fixed price product-shipping
Simple discounts are applied in the following order: fixed, amount-off, percent-off. If a product (or order or shipment) is discounted by several promotions, the fixed price is applied first, followed by the amount-off and then percent-off discounts. If two promotions have the same pre-evaluated discount type, the one that offers the best value to the customer is prioritized first. For example, a promotion with a 20% off pre-evaluated discount type is prioritized before the one that offers 10% off.
Note: If there are multiple fixed-price (or total fixed price, or free) promotions, the order in which they are applied is irrelevant because fixed-price promotions don't stack. B2C Commerce has special logic so that if multiple fixed-price promotions apply, only the one that is the best value to the customer is actually applied.
Note: B2C Commerce doesn't evaluate all sequences of promotions. The sequencing resulting from this prioritization process doesn't provide the best value to customers in all cases.

Maximum Application

When the maximum applications setting is enabled in a promotion, it effects the order in which product promotions are applied and when the discount calculation occurs. When this setting is enabled and a promotion applies, the most expensive product is discounted first, followed by the second most expensive, until the maximum application limit is reached. When the limit is reached, no other discounts apply for that promotion.

There are two promotions:

The customer buys six shirts: A=$100.00 x 2, B=$75.00 x 2, C=$50 x 2

According to promotion priority rules, percent off is applied first, followed by bonus - so Promotion 2 is applied first.

3 shirts (2 at $100 and 1 at $75) for 20% off, with one application.
$275 - $55 (discount) = $220

If exclusivity is None, per Promotion 1, the customer receives two silk ties. If exclusivity is Class or Global, Promotion 1 doesn't apply.

This contrasts with a buy x get y discount, where If the same products are eligible as both qualifying and conditional products, the promotion basically needs to sort the products based on price, using the most expensive products to satisfy the condition, and then applying the discount to the next product in the list that is of equal or lesser value to the conditional products, depending on the site promotion preference setting. See Buy X Get Y Promotions.

Example

In this example, a merchant has ranked promotions as follows :

Promotion Name Description Rank
PROMO_P1 10% off product 60
PROMO_P2 $2 off product 0
PROMO_P3 $1 off product 0
PROMO_P4 $2.99 product fixed price 30
PROMO_01 15% off order 70
PROMO_02 20% off order 65
PROMO_03 $5 off order 0

The basket with applied discounts would then show the discounts applied in the following order:

  1. Product:
    1. $2.99 product fixed price
    2. 10% off product
    3. $2 off product
    4. $1 off product
  2. Order
    1. 20% off order
    2. 15% off order
    3. $5 off order

Related Links

Promotion Processing

Maximum Application