Discount Types

This guide describes the different types of discounts supported by the discount engine.

Conditions

Conditions need to be satisfied for a discount to apply. There are some line item specific options as well as the more generic eligibility option.

Line Items

For basket line items you can have conditions based on:

  • Minimum Quantity - e.g. buy 4 items, get 1 free
  • Minimum Spend - e.g. spend 100 USD, get 5 USD off.

For each of these two types you can choose if the number of times the basket meets the condition should allow the action to apply multiple times.

A type of MinimumQuantity will only count as meeting the condition once, no matter how many matching items a basket contains. A type of ForEachQuantity will count as meeting the condition for every multiple. E.g. if a discount has ForEachQuantity of 2, a basket with 4 items will count as meeting the discount twice.

Similarly, MinimumSpend will only count as meeting the condition once whereas ForEachSpend will count multiple times.

The action can limit the number of items it applies using the maxItemsPerApplication (line item actions) and maxApplications (see below).

Line Item Filter

A line item filter expression can be provided to apply the discount to specific line items. E.g. only apply to products of type "Jeans".

Eligibility

Eligibility expressions allow adding conditions to a discount that aren't related to basket line items. E.g. only apply if customer is in the VIP segment.

Coupons

Coupon codes can be added as a condition to a discount using Coupon Groups. See the Coupon Codes guide for more details.

Actions

Below is a summary of the available actions

  • Line Item
    • Amount Off
    • Fixed Price
    • Percentage Off
  • Basket
    • Amount Off
    • Fixed Price
    • Percentage Off
  • Cost
    • Amount Off
    • Fixed Price
    • Percentage Off
  • Content
  • Loyalty
    • Accrue Points
    • Redeem Points
    • Pay with Points

Actions support tiered values - see Tiered Actions for more details.

Amount Off Types

Amount Off

This is a currency amount off. E.g. get an item with 10 USD off.

Fixed Price

This is a fixed currency amount. E.g. get an item for 10 USD.

Percentage Off

E.g. get an item with 10% off.

Line Item

The AmountOffLineItem action type applies discounts to basket line items and supports Amount Off, Fixed Price and Percentage Off.

maxItemsPerApplication and maxApplications

These properties are used to control how many line items the discount can apply to. They are tied to the number of items that meet the discount condition. If you have a condition type of ForEachQuantity, every multiple of the quantity you will get an application. E.g. If the min quantity is 1 and you have 2 matching line items you have met the condition twice and there are two possible applications of the action.

  • maxItemsPerApplication - this is the maximum number of line items to award per-application.
  • maxApplications - this is the maximum number of times the discount will apply to the basket.

The maximum number of line items that will be discounted is maxApplications * maxItemsPerApplication

lineItemFilter

lineItemFilter allows only applying the action to specific line items. E.g. for a discount "Buy 4 Shirts, Get 1 Free", without the lineItemFilter on the action, the discount would only apply if the user has 4 shirts in their basket (due to the condition), but the 20% off would apply to any line item, not just a shirt.

Basket

The AmountOffBasket action type applies discounts to the basket total and supports Amount Off, Fixed Price and Percentage Off.

Max Applications

This can be used to limit the number of times the discount is applied to the basket.

E.g. you have a discount:

  • Condition - ForEachSpend of 100 GBP
  • Action - AmountOffBasket of 1 GBP

If you spend 300 GBP you have met the condition 3 times and will get 3 GBP off. If maxApplications is set to 2 you can only get the action twice so you get 2 GBP off.

Costs

The AmountOffCost action type applies discounts to values passed in the costs array and supports Amount Off, Fixed Price and Percentage Off. Costs need to be supplied with a name (e.g. Shipping).

The Costs property isn't created by default because no cost property names are defined in the system.

Content

Content action types allow returning messages. This can be useful for things like banners to display to the user.

Note. Multi-lingual content is supported.

Loyalty

See Loyalty Schemes for more details.

Display Messages

Each of the action types (apart from Content because it is used to display messages anyway) allow including a display message.

The intention for this is to allow displaying information alongside the discount. E.g. you may want to display some text in checkout when the discount applies.

Note. Multi-lingual display messages are supported.