9. Discounts Combination Logic

As we already know, multiple active campaigns can exist simultaneously, with each campaign can have multiple discounts.

Let's explore how the app consolidates discounts from all possible campaigns.

The app collects all discounts into a single pool. From this pool, discounts are applied to the cart items. The main challenge arises when multiple discounts apply to the same product. In such cases, the app selects the discount that offers the maximum value to avoid unexpectedly high or even 100% discounts.

For example, in the pool, we have two discounts: "10% off on Entire Order" and "15% off on Adidas backpacks."

If a customer's cart contains multiple products, including an "Adidas backpacks," a conflict arises. The "10% off on Entire Order" discount is valid for "Adidas backpacks" because it covers all products. The "15% off on Adidas backpacks" discount also is valid for "Adidas backpacks."

For all products except the "Adidas backpacks," the app applies a 10% discount. For the "Adidas backpacks," the 15% discount takes priority because it offers a greater discount.

Let's modify the second discount to be Fixed Amount: "6$ off on Adidas backpack" (applied per eligible item).

Now we have "10% off on Entire Order" and "6$ off on Adidas backpack." If the "Adidas backpack" costs $50, the 10% discount is $5, so the $6 discount takes priority. If the "Adidas backpack" costs $70, the 10% discount is $7, so the 10% discount takes priority.

All discounts without conflicts will be applied without any issues. We consider this logic the most accurate and safe way to calculate discounts.

Some clients have requested an alternative logic where all discounts are applied even if there is a conflict. For example, they want to apply the first discount, then apply the second discount to the already discounted value, and so on. For these clients, we developed a custom campaign type, which is not part of the app by default. If you want this logic, you can request it from our support team, and we will enable it for you.

Last updated