Promotion Rule Configuration Templates
Supported Promotion Templates Reference
| Template Name | Category | Event Configuration | Supported Reward Types |
|---|---|---|---|
| SimpleCartRewards | Spend-based | spendRange (minimum, maximum) | ProvideDiscount, IssueVoucher, AssignBadge, CreditFixedPoints |
| SimpleLineLevelRewards | Spend-based | spendRange (minimum, maximum) | ProvideDiscount (discountLevel: LineItem) |
| SimpleUnitPriceRewards | Spend-based | spendRange (minimum, maximum) | ProvideDiscount (with discountedItems) |
| SimpleComboRewards | Spend-based | spendRange (minimum, maximum) | ProvideDiscountedCombo |
| BuyXToGetRewards | Purchase-based | allOf -> anyOf (purchaseType, applicablePurchaseList, purchaseCriteria) | ProvideDiscount, IssueVoucher |
| BuyXToGetDiscountOnY | Purchase-based | allOf -> anyOf (purchaseType, applicablePurchaseList, purchaseCriteria) | ProvideDiscount (with discountedItems), GiveFreeProduct |
| BuyXToGetUnitPriceDiscount | Purchase-based | allOf -> anyOf (purchaseType, applicablePurchaseList, purchaseCriteria) | ProvideDiscount (PriceOverride), GiveFreeProduct |
| BuyXToGetY | Purchase-based | allOf -> anyOf (purchaseType, applicablePurchaseList, purchaseCriteria) | ProvideDiscountedCombo, IssueVoucher, CreditFixedPoints, CreditMultiplierPoints, AssignBadge, AssignGame |
| CustomPromotion | Custom | criteriaList (conditionList with contextTagName, operator, valueList) + aggregationConfiguration | ProvideDiscount (with subType) |
| GetRewardsBasedOnSellingModel | Selling Model | allOf -> anyOf (with sellingModelType) | ProvideDiscount |
| AccrualPromotion | Loyalty | spendRange (minimum) or criterionType-based | CreditFixedPoints, CreditMultiplierPoints, Vouchers, Badges |
SimpleCartRewards
Use the SimpleCartRewards template to provide cart-level rewards such as discounts, vouchers, badges, or loyalty points when the customer cart total falls within a configured spend range.
- Category: Spend-based
- Event Configuration: spendRange with minimum (required) and maximum (optional)
- Supported Reward Types: ProvideDiscount, IssueVoucher, AssignBadge, CreditFixedPoints
- JSON example
-
Percentage discount on cart spend range
1{ 2 "rules": [ 3 { 4 "templateName": "SimpleCartRewards", 5 "ruleName": "SampleRule", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "spendRange": { 10 "minimum": 50, 11 "maximum": 1000 12 } 13 } 14 ], 15 "rewardConfiguration": [ 16 { 17 "type": "ProvideDiscount", 18 "rewardDetails": { 19 "discountValue": 10, 20 "discountType": "PercentageOff" 21 }, 22 "targetAudience": { 23 "audienceType": "AllMembers" 24 } 25 } 26 ] 27 } 28 ] 29}
- JSON example
-
Voucher reward with journal type targeted at loyalty members
1{ 2 "rules": [ 3 { 4 "templateName": "SimpleCartRewards", 5 "journalType": "Customer Purchase", 6 "priority": 1, 7 "ruleName": "Rule1", 8 "eventConfiguration": [ 9 { 10 "spendRange": { 11 "minimum": 10 12 } 13 } 14 ], 15 "rewardConfiguration": [ 16 { 17 "isPrimaryReward": true, 18 "type": "ProvideDiscount", 19 "rewardDetails": { 20 "discountValue": 5, 21 "discountType": "PercentageOff" 22 }, 23 "targetAudience": { 24 "audienceType": "AllMembers" 25 } 26 }, 27 { 28 "type": "IssueVoucher", 29 "rewardDetails": { 30 "voucherDefinition": { 31 "name": "TestVDef1" 32 } 33 }, 34 "targetAudience": { 35 "audienceType": "AllMembers" 36 } 37 } 38 ] 39 } 40 ] 41}
SimpleLineLevelRewards
Use the SimpleLineLevelRewards template to provide line-item discounts on specific products when the customer cart total falls within a configured spend range.
- Category: Spend-based
- Event Configuration: spendRange with minimum (required) and maximum (optional)
- Supported Reward Types: ProvideDiscount (with discountLevel: "LineItem")
- JSON example
-
Line-item discount on specific products
1{ 2 "rules": [ 3 { 4 "templateName": "SimpleLineLevelRewards", 5 "ruleName": "testRule", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "spendRange": { 10 "minimum": 200, 11 "maximum": 500 12 } 13 } 14 ], 15 "rewardConfiguration": [ 16 { 17 "type": "ProvideDiscount", 18 "rewardDetails": { 19 "discountValue": 100, 20 "discountType": "PercentageOff", 21 "discountLevel": "LineItem", 22 "discountedItems": [ 23 { 24 "discountedItemType": "Product", 25 "discountedItemList": [ 26 { 27 "name": "insertProductName" 28 } 29 ] 30 } 31 ] 32 }, 33 "targetAudience": { 34 "audienceType": "AllMembers" 35 } 36 } 37 ] 38 } 39 ] 40}
SimpleUnitPriceRewards
Use the SimpleUnitPriceRewards template to provide unit-price or amount-off discounts on specific products when the customer cart total falls within a configured spend range.
- Category: Spend-based
- Event Configuration: spendRange with minimum (required) and maximum (optional)
- Supported Reward Types: ProvideDiscount (with discountedItems)
- JSON example
-
Amount-off discount on specific products
1{ 2 "rules": [ 3 { 4 "templateName": "SimpleUnitPriceRewards", 5 "ruleName": "testRule", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "spendRange": { 10 "minimum": 200, 11 "maximum": 500 12 } 13 } 14 ], 15 "rewardConfiguration": [ 16 { 17 "type": "ProvideDiscount", 18 "rewardDetails": { 19 "discountValue": 100, 20 "discountType": "AmountOff", 21 "discountedItems": [ 22 { 23 "discountedItemType": "Product", 24 "discountedItemList": [ 25 { 26 "name": "insertProductName" 27 } 28 ] 29 } 30 ] 31 }, 32 "targetAudience": { 33 "audienceType": "AllMembers" 34 } 35 } 36 ] 37 } 38 ] 39}
SimpleComboRewards
Use the SimpleComboRewards template to provide discounted combo or bundle offers on qualifying products when the customer cart total falls within a configured spend range.
- Category: Spend-based
- Event Configuration: spendRange with minimum (required) and maximum (optional)
- Supported Reward Types: ProvideDiscountedCombo
- JSON example
-
Discounted combo offer on products
1{ 2 "rules": [ 3 { 4 "templateName": "SimpleComboRewards", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "spendRange": { 10 "minimum": 200, 11 "maximum": 500 12 } 13 } 14 ], 15 "rewardConfiguration": [ 16 { 17 "type": "ProvideDiscountedCombo", 18 "rewardDetails": { 19 "discountValue": 10, 20 "discountedItems": [ 21 { 22 "discountedItemType": "Product", 23 "discountedItemList": [ 24 { 25 "name": "insertProductName" 26 } 27 ], 28 "discountDetails": { 29 "type": "Quantity", 30 "value": 10 31 } 32 } 33 ] 34 }, 35 "targetAudience": { 36 "audienceType": "AllMembers" 37 } 38 } 39 ] 40 } 41 ] 42}
- JSON example
-
Discounted combo targeted at loyalty tier members
1{ 2 "rules": [ 3 { 4 "templateName": "SimpleComboRewards", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "spendRange": { 10 "minimum": 200, 11 "maximum": 500 12 } 13 } 14 ], 15 "rewardConfiguration": [ 16 { 17 "type": "ProvideDiscountedCombo", 18 "rewardDetails": { 19 "discountValue": 10, 20 "discountedItems": [ 21 { 22 "discountedItemType": "Product", 23 "discountedItemList": [ 24 { 25 "name": "insertProductName" 26 } 27 ], 28 "discountDetails": { 29 "type": "Quantity", 30 "value": 10 31 } 32 } 33 ] 34 }, 35 "targetAudience": { 36 "audienceType": "LoyaltyTierMembers", 37 "audienceDetails": { 38 "tierGroup": { 39 "name": "insertTierGroupName" 40 }, 41 "tier": { 42 "name": "insertTierName" 43 } 44 } 45 } 46 } 47 ] 48 } 49 ] 50}
BuyXToGetRewards
Use the BuyXToGetRewards template to provide discounts, vouchers, or other rewards when customers purchase qualifying products or product categories.
- Category: Purchase-based
- Event Configuration: allOf array containing anyOf objects with purchaseType, applicablePurchaseList, and purchaseCriteria. Supports buyNoPreCondition, buyFromAnyProduct, and eventExclusionInfo.
- Supported Reward Types: ProvideDiscount, IssueVoucher
- JSON example
-
Discount when specific products are purchased
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetRewards", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "ProvideDiscount", 30 "rewardDetails": { 31 "discountValue": 100, 32 "discountType": "PercentageOff" 33 }, 34 "targetAudience": { 35 "audienceType": "LoyaltyTierMembers", 36 "audienceDetails": { 37 "tierGroup": { 38 "id": "insertTierGroupId" 39 }, 40 "tier": { 41 "id": "insertTierId" 42 } 43 } 44 } 45 } 46 ] 47 } 48 ] 49}
- JSON example
-
No purchase pre-condition
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetRewards", 5 "ruleName": "Abcde", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "buyNoPreCondition": true 10 } 11 ], 12 "rewardConfiguration": [ 13 { 14 "type": "ProvideDiscount", 15 "rewardDetails": { 16 "discountValue": 10, 17 "discountType": "PercentageOff" 18 }, 19 "targetAudience": { 20 "audienceType": "AllMembers" 21 } 22 } 23 ] 24 } 25 ] 26}
- JSON example
-
With product exclusions
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetRewards", 5 "ruleName": "Rule1", 6 "priority": 1, 7 "journalType": "Customer Purchase", 8 "eventConfiguration": [ 9 { 10 "buyFromAnyProduct": true, 11 "allOf": [ 12 { 13 "anyOf": { 14 "purchaseType": "Product", 15 "purchaseCriteria": { 16 "type": "Quantity", 17 "value": 2 18 } 19 } 20 } 21 ], 22 "eventExclusionInfo": [ 23 { 24 "exclusionType": "Product", 25 "exclusionList": [ 26 { 27 "name": "insertProductName" 28 } 29 ] 30 } 31 ] 32 } 33 ], 34 "rewardConfiguration": [ 35 { 36 "type": "ProvideDiscount", 37 "rewardDetails": { 38 "discountValue": 10.0, 39 "discountType": "PercentageOff" 40 }, 41 "targetAudience": { 42 "audienceType": "AllMembers" 43 } 44 } 45 ] 46 } 47 ] 48}
BuyXToGetDiscountOnY
Use the BuyXToGetDiscountOnY template to provide discounts or free-product rewards on target products when customers purchase qualifying products.
- Category: Purchase-based
- Event Configuration: allOf array containing anyOf objects with purchaseType, applicablePurchaseList, and purchaseCriteria
- Supported Reward Types: ProvideDiscount (with discountedItems), GiveFreeProduct
- JSON example
-
Discount on product Y when product X is purchased
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetDiscountOnY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName1" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "ProvideDiscount", 30 "rewardDetails": { 31 "discountValue": 100, 32 "discountType": "PercentageOff", 33 "discountLevel": "CombinedLineItemPrice", 34 "discountedItems": [ 35 { 36 "discountedItemType": "Product", 37 "discountedItemList": [ 38 { 39 "name": "insertProductName2" 40 } 41 ] 42 } 43 ] 44 }, 45 "targetAudience": { 46 "audienceType": "AllLoyaltyMembers" 47 } 48 } 49 ] 50 } 51 ] 52}
- JSON example
-
Free product reward
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetDiscountOnY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName1" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "GiveFreeProduct", 30 "rewardDetails": { 31 "discountedItems": [ 32 { 33 "discountedItemType": "Product", 34 "discountedItemList": [ 35 { 36 "name": "insertProductName2" 37 } 38 ], 39 "discountDetails": { 40 "type": "Quantity", 41 "value": 1 42 } 43 } 44 ] 45 }, 46 "targetAudience": { 47 "audienceType": "AllMembers" 48 } 49 } 50 ] 51 } 52 ] 53}
BuyXToGetUnitPriceDiscount
Use the BuyXToGetUnitPriceDiscount template to provide unit-price discounts or price overrides on products when customers purchase qualifying products or quantities.
- Category: Purchase-based
- Event Configuration: allOf array containing anyOf objects with purchaseType, applicablePurchaseList, and purchaseCriteria
- Supported Reward Types: ProvideDiscount (PriceOverride), GiveFreeProduct
- JSON example
-
Price override reward on multiple products
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetUnitPriceDiscount", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName1" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 }, 24 { 25 "anyOf": { 26 "purchaseType": "Product", 27 "applicablePurchaseList": [ 28 { 29 "name": "insertProductName2" 30 } 31 ], 32 "purchaseCriteria": { 33 "type": "Quantity", 34 "value": 10 35 } 36 } 37 } 38 ] 39 } 40 ], 41 "rewardConfiguration": [ 42 { 43 "type": "ProvideDiscount", 44 "rewardDetails": { 45 "discountValue": 100, 46 "discountType": "PriceOverride", 47 "discountedItems": [ 48 { 49 "discountedItemType": "Product", 50 "discountedItemList": [ 51 { 52 "name": "insertProductName2" 53 } 54 ] 55 } 56 ] 57 }, 58 "targetAudience": { 59 "audienceType": "AllMembers" 60 } 61 } 62 ] 63 } 64 ] 65}
- JSON example
-
"For every X" quantity criteria
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetUnitPriceDiscount", 5 "ruleName": "ForEveryXGetDiscountOnY", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName1" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "QuantityForEvery", 20 "value": 2 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "ProvideDiscount", 30 "rewardDetails": { 31 "discountValue": 100, 32 "discountType": "PercentageOff", 33 "discountedItems": [ 34 { 35 "discountedItemType": "Product", 36 "discountedItemList": [ 37 { 38 "name": "insertProductName2" 39 } 40 ], 41 "discountDetails": { 42 "type": "Quantity", 43 "value": 1 44 } 45 } 46 ] 47 }, 48 "targetAudience": { 49 "audienceType": "AllMembers" 50 } 51 } 52 ] 53 } 54 ] 55}
BuyXToGetY
Use the BuyXToGetY template to provide combo discounts, vouchers, loyalty rewards, badges, games, or other incentives when customers purchase qualifying products or product categories.
- Category: Purchase-based
- Event Configuration: allOf array containing anyOf objects with purchaseType, applicablePurchaseList, and purchaseCriteria
- Supported Reward Types: ProvideDiscountedCombo, IssueVoucher, CreditFixedPoints, CreditMultiplierPoints, AssignBadge, AssignGame
- JSON example
-
Discounted combo when purchasing specific products
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "ProvideDiscountedCombo", 30 "rewardDetails": { 31 "discountValue": 10, 32 "discountedItems": [ 33 { 34 "discountedItemType": "Product", 35 "discountedItemList": [ 36 { 37 "name": "insertProductName" 38 } 39 ], 40 "discountDetails": { 41 "type": "Quantity", 42 "value": 10 43 } 44 } 45 ] 46 }, 47 "targetAudience": { 48 "audienceType": "AllMembers" 49 } 50 } 51 ] 52 } 53 ] 54}
- JSON example
-
Voucher reward for loyalty tier members
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "IssueVoucher", 30 "rewardDetails": { 31 "voucherDefinition": { 32 "name": "insertVoucherName" 33 }, 34 "voucherExpirationDate": "2020-10-10" 35 }, 36 "targetAudience": { 37 "audienceType": "LoyaltyTierMembers", 38 "audienceDetails": { 39 "tierGroup": { 40 "id": "insertTierGroupId" 41 }, 42 "tier": { 43 "id": "insertTierId" 44 } 45 } 46 } 47 } 48 ] 49 } 50 ] 51}
- JSON example
-
Loyalty points (CreditFixedPoints)
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "CreditFixedPoints", 30 "rewardDetails": { 31 "pointsToCredit": 100, 32 "loyaltyProgramCurrency": { 33 "name": "insertCurrencyName" 34 }, 35 "pointsExpirationDate": "10-09-2023" 36 }, 37 "targetAudience": { 38 "audienceType": "AllLoyaltyMembers" 39 } 40 } 41 ] 42 } 43 ] 44}
- JSON example
-
Multiplier points
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "CreditMultiplierPoints", 30 "rewardDetails": { 31 "pointsMultiplier": 5, 32 "loyaltyProgramCurrency": { 33 "name": "insertCurrencyName" 34 }, 35 "pointsExpirationDate": "10-09-2023", 36 "transactionJournalField": "TransactionJournal.TransactionAmount" 37 }, 38 "targetAudience": { 39 "audienceType": "AllLoyaltyMembers" 40 } 41 } 42 ] 43 } 44 ] 45}
- JSON example
-
Badge reward
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "AssignBadge", 30 "rewardDetails": { 31 "loyaltyProgramBadge": { 32 "name": "insertBadgeName" 33 }, 34 "badgeExpirationDate": "2026-10-10" 35 }, 36 "targetAudience": { 37 "audienceType": "AllLoyaltyMembers" 38 } 39 } 40 ] 41 } 42 ] 43}
- JSON example
-
Game reward
1{ 2 "rules": [ 3 { 4 "templateName": "BuyXToGetY", 5 "ruleName": "Abcd", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 } 22 } 23 } 24 ] 25 } 26 ], 27 "rewardConfiguration": [ 28 { 29 "type": "AssignGame", 30 "rewardDetails": { 31 "gameType": "SpinTheWheel", 32 "gameDefinition": { 33 "id": "insertGameDefinitionId" 34 } 35 }, 36 "targetAudience": { 37 "audienceType": "AllLoyaltyMembers" 38 } 39 } 40 ] 41 } 42 ] 43}
CustomPromotion
Use the CustomPromotion template to define promotions using advanced criteria, custom logic, aggregation rules, and runtime context evaluation.
- Category: Custom
- Event Configuration: criteriaList with conditionList entries specifying contextTagName, operator, valueList, dataType, and sequenceNumber. Optionally includes aggregationConfiguration. Criteria types: AllConditionsMatch, AnyConditionMatches, and CustomLogicMatches.
- Supported Reward Types: ProvideDiscount (with subType: DiscountOnCart, DiscountOnLineItem, or DiscountOnUnitPrice)
- JSON example
-
AnyConditionMatches criteria with aggregation and cart discount
1{ 2 "rules": [ 3 { 4 "templateName": "CustomPromotion", 5 "ruleName": "SampleRule", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "criteriaList": [ 10 { 11 "type": "AnyConditionMatches", 12 "name": "FilterCriteria", 13 "conditionList": [ 14 { 15 "contextTagName": "cartLineProduct", 16 "operator": "Equals", 17 "valueList": ["Pizza"], 18 "dataType": "Text", 19 "sequenceNumber": 1 20 }, 21 { 22 "contextTagName": "cartLineProductCategory", 23 "operator": "Equals", 24 "valueList": ["Food"], 25 "dataType": "Text", 26 "sequenceNumber": 2 27 } 28 ] 29 } 30 ], 31 "aggregationConfiguration": { 32 "aggregateBy": "cartLineProductCatalog", 33 "aggregateByDetails": ["Catalog1"], 34 "dataType": "Text", 35 "aggregateOn": "cartLineItemQuantity", 36 "operator": "GreaterThan", 37 "value": 1 38 } 39 } 40 ], 41 "rewardConfiguration": [ 42 { 43 "type": "ProvideDiscount", 44 "subType": "DiscountOnCart", 45 "rewardDetails": { 46 "discountValue": 10, 47 "discountType": "PercentageOff" 48 }, 49 "targetAudience": { 50 "audienceType": "AllMembers" 51 } 52 } 53 ] 54 } 55 ] 56}
- JSON example
-
CustomLogicMatches criteria with cart discount
1{ 2 "rules": [ 3 { 4 "templateName": "CustomPromotion", 5 "ruleName": "SampleRule", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "criteriaList": [ 10 { 11 "type": "CustomLogicMatches", 12 "customLogic": "1 AND (2 OR 3)", 13 "name": "FilterCriteria", 14 "conditionList": [ 15 { 16 "contextTagName": "activityStartDate", 17 "operator": "GreaterThan", 18 "valueList": ["2023-12-01T00:00:00.000Z"], 19 "dataType": "DateTime", 20 "sequenceNumber": 1 21 }, 22 { 23 "contextTagName": "currencyISOCode", 24 "operator": "Equals", 25 "valueList": ["INR"], 26 "dataType": "Text", 27 "sequenceNumber": 2 28 }, 29 { 30 "contextTagName": "transactionAmount", 31 "operator": "GreaterThan", 32 "valueList": ["200"], 33 "dataType": "Currency", 34 "sequenceNumber": 3 35 } 36 ] 37 } 38 ] 39 } 40 ], 41 "rewardConfiguration": [ 42 { 43 "type": "ProvideDiscount", 44 "subType": "DiscountOnCart", 45 "rewardDetails": { 46 "discountValue": 10, 47 "discountType": "PercentageOff" 48 }, 49 "targetAudience": { 50 "audienceType": "AllMembers" 51 } 52 } 53 ] 54 } 55 ] 56}
- JSON example
-
Line-item reward on specific products
1{ 2 "rules": [ 3 { 4 "templateName": "CustomPromotion", 5 "ruleName": "SampleRule", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "criteriaList": [ 10 { 11 "type": "AnyConditionMatches", 12 "name": "FilterCriteria", 13 "conditionList": [ 14 { 15 "contextTagName": "cartLineProduct", 16 "operator": "Equals", 17 "valueList": ["Pizza"], 18 "dataType": "Text", 19 "sequenceNumber": 1 20 } 21 ] 22 } 23 ], 24 "aggregationConfiguration": { 25 "aggregateBy": "cartLineProductCatalog", 26 "aggregateByDetails": ["Catalog1"], 27 "dataType": "Text", 28 "aggregateOn": "cartLineItemQuantity", 29 "operator": "GreaterThan", 30 "value": 1 31 } 32 } 33 ], 34 "rewardConfiguration": [ 35 { 36 "type": "ProvideDiscount", 37 "subType": "DiscountOnLineItem", 38 "rewardDetails": { 39 "discountValue": 10, 40 "discountType": "PercentageOff", 41 "discountedItems": [ 42 { 43 "discountedItemType": "Product", 44 "discountedItemList": [ 45 { 46 "name": "Pizza" 47 } 48 ] 49 } 50 ], 51 "discountLevel": "CombinedLineItemPrice" 52 }, 53 "targetAudience": { 54 "audienceType": "AllMembers" 55 } 56 } 57 ] 58 } 59 ] 60}
AccrualPromotion
Use the AccrualPromotion template to provide loyalty points, vouchers, badges, or multiplier rewards based on transaction activity, purchase thresholds, or loyalty criteria.
- Category: Loyalty
- Event Configuration: Uses criterionType, minimumPurchaseAmountEnabled, minPurchaseAmount, minimumQuantityEnabled, minPurchaseQuantity, and isPromotionForCustomRules
- Supported Reward Types: CreditFixedPoints, CreditMultiplierPoints, Vouchers, Badges
- JSON example
-
Fixed points accrual on spend threshold
1{ 2 "rules": [ 3 { 4 "templateName": "AccrualPromotion", 5 "ruleName": "AccrualRule", 6 "priority": 1, 7 "journalType": "Accrual", 8 "journalSubTypeName": "Member Enrollment", 9 "eventConfiguration": [ 10 { 11 "isPromotionForCustomRules": false, 12 "minimumPurchaseAmountEnabled": true, 13 "minPurchaseAmount": 10, 14 "minimumQuantityEnabled": false, 15 "minPurchaseQuantity": null, 16 "criterionType": "Loyalty" 17 } 18 ], 19 "rewardConfiguration": [ 20 { 21 "rewardType": "FixedPoints", 22 "tierBased": false, 23 "pointsRewards": [ 24 { 25 "currency": "insertCurrency", 26 "points": 25 27 } 28 ] 29 } 30 ] 31 } 32 ] 33}
- JSON example
-
Tier-based rewards with multiple reward types (points, vouchers, badges, multiplier)
1{ 2 "rules": [ 3 { 4 "templateName": "AccrualPromotion", 5 "journalType": "Accrual", 6 "promotionLimit": 1, 7 "journalSubTypeName": "Member Enrollment", 8 "eventConfiguration": [ 9 { 10 "isPromotionForCustomRules": false, 11 "minimumPurchaseAmountEnabled": false, 12 "minPurchaseAmount": null, 13 "minimumQuantityEnabled": true, 14 "minPurchaseQuantity": 25, 15 "criterionType": "Loyalty" 16 } 17 ], 18 "rewardConfiguration": [ 19 { 20 "rewardType": "FixedPoints", 21 "tierBased": true, 22 "pointsRewards": [ 23 { 24 "tierGroup": "insertTierGroup", 25 "tier": "insertTier1", 26 "currency": "insertCurrency", 27 "points": 25 28 }, 29 { 30 "tierGroup": "insertTierGroup", 31 "tier": "insertTier2", 32 "currency": "insertCurrency", 33 "points": 50 34 } 35 ] 36 }, 37 { 38 "rewardType": "Vouchers", 39 "tierBased": false, 40 "voucherRewards": [ 41 { 42 "voucherDefinition": "insertVoucher" 43 } 44 ] 45 }, 46 { 47 "rewardType": "Badges", 48 "tierBased": false, 49 "badgeRewards": [ 50 { 51 "badgeDefinition": "insertBadge" 52 } 53 ] 54 }, 55 { 56 "rewardType": "MultiplierPoints", 57 "tierBased": true, 58 "isAdditionalReward": false, 59 "pointsRewards": [ 60 { 61 "currency": "insertCurrency", 62 "multiplierType": "TransactionAmount", 63 "multiplier": 5, 64 "tierGroup": "insertTierGroup", 65 "tier": "insertTier1" 66 } 67 ] 68 } 69 ] 70 } 71 ] 72}
GetRewardsBasedOnSellingModel
Use the GetRewardsBasedOnSellingModel template to provide rewards or discounts based on the selling model associated with purchased products, such as subscription or term-based models.
- Category: Selling Model
- Event Configuration: allOf array containing anyOf objects with purchaseType, applicablePurchaseList, purchaseCriteria, and sellingModelType (for example, TermDefined)
- Supported Reward Types: ProvideDiscount
- JSON example
-
Subscription-based promotion with TermDefined selling model
1{ 2 "rules": [ 3 { 4 "templateName": "GetRewardsBasedOnSellingModel", 5 "ruleName": "PSMRule", 6 "priority": 1, 7 "eventConfiguration": [ 8 { 9 "allOf": [ 10 { 11 "anyOf": { 12 "purchaseType": "Product", 13 "applicablePurchaseList": [ 14 { 15 "name": "insertProductName" 16 } 17 ], 18 "purchaseCriteria": { 19 "type": "Quantity", 20 "value": 1 21 }, 22 "sellingModelType": "TermDefined" 23 } 24 } 25 ] 26 } 27 ], 28 "rewardConfiguration": [ 29 { 30 "type": "ProvideDiscount", 31 "rewardDetails": { 32 "discountValue": 20, 33 "discountType": "PercentageOff" 34 }, 35 "targetAudience": { 36 "audienceType": "AllMembers" 37 } 38 } 39 ] 40 } 41 ] 42}