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.