Multichannel promotions
A multichannel promotion is one that can be set up to be used in-store or online or both ways. These promotions can be assigned to a contact based on their previous purchases or on any other type of contact data or interaction. You can assign multichannel promotions to segments as well as to single contacts in Customer Engagement. For this reason they’re also known as personal offers. Multichannel promotions can be used:- In-store - The customer is identified at the POS and their active multichannel promotions are fetched from Customer Engagement, ready to use in the checkout
- Online - The customer will need to identify themselves either by logging in, or when they fill in their details at the checkout. Then all available multichannel promotions can be fetched from Customer Engagement and shown. How exactly this is done depends on how the e-com has been set up
Working with multichannel promotions
There are several ways to create and assign multichannel promotions when working with Customer Engagement. In this article the focus will be mostly on the Customer Engagement API but there are also these methods:Promotions via the Customer Engagement UI
Promotions via the Customer Engagement UI
Setting up a multichannel promotion in Customer Engagement

- Monetary discount
- Discount in percent
- Manual instruction (only for in-store POS)
- External promotion code
Learn about setting up multichannel promotions
Promotions via XML file import
Promotions via XML file import
Assigning promotions by XML file
Get promotions for contact
The API endpoint used to fetch all available promotions assigned to a contact is:-
contactId - The contact’s unique ID. If you have some other contact identifier, use this endpoint to get the
contactIdyou will need for this request. - redemptionChannelType - “ECOM”, “POS” or “OTHER”. If left out, all promotions are returned.
See example request
See example request
See example response
See example response
promotionId. The id value is unique to that contact and is the one used when redeeming this promotion.Redemption channels
When getting a contact’s promotion data, you’ll get back something like this:redemptionChannels object in the response specifies if a promotion is a percentage, a monetary amount to be withdrawn from the total amount of the transaction, or an external discount code that refers to a price rule in your platform.
See redemption channels object
See redemption channels object
redemptionChannels object:
- type - Which channel the promotion applies to.
- valueType - Which type of discount we want to assign (percentage, monetary or external code).
- value - The percentage, monetary amount or external code referring to the external price rule. With a monetary discount we also expose the group currency set in Customer Engagement for that client.
- instruction - An instruction that can be used, for example, to give some information to store staff regarding the promotion.
redemptionChannels examples:
Example: POS promotion with percentage discount
Example: POS promotion with percentage discount
Example: E-com promotion with external discount code
Example: E-com promotion with external discount code
Example: POS promotion with monetary discount
Example: POS promotion with monetary discount
Create a promotion
Create a promotion using the following endpoint:- A start date and a validity time
- A start date and an end date
Creation request - start date and validity time
Creation request - start date and validity time
Creation response - start date and validity time
Creation response - start date and validity time
Creation request - start date and end date
Creation request - start date and end date
Creation response - start date and end date
Creation response - start date and end date
- 400: BadRequest
- 500: Error
Update a promotion
You can update (alter) a multichannel promotions over the Customer Engagement API. You can update the entire promotion or only its validity. Each method uses a different API endpoint:Updating the entire promotion
Updating the entire promotion
Updating the promotion's validity
Updating the promotion's validity
Assign a promotion
A promotion is of no use unless it is assigned to contacts. Multichannel promotions are assigned to contacts via the API like this:- 400: InvalidContactId, InvalidPromotionId
- 404: ContactNotFound, PromotionNotFound
Redeem a promotion
As soon as a promotion is used in a purchase, it must be redeemed in Customer Engagement so it can’t be used again. To do this you’ll need to know:- the promotion’s unique assignment ID
- the redemption channel, either “POS” or “ECOM”
Call the /redeem endpoint
Add promotion ID to /receipts call
usedPromotions block in the body of the query:/receipts endpoint but not /redeem, the promotion will still be redeemed, but often after a delay, bringing the risk that it could be used again.
If you call /redeem but miss to add the promotion assignment ID to the /receipts call, the system will not know which transaction to connect the redeemed promotion to. It will try to work it out based on the timestamp, checking for transactions within ±5 minutes of the redemption.
So you should always do both of these things whenever a promotion is used in a purchase.
Redemption response codes
If the request has been successful, you’ll get a HTTP 200 OK response. Otherwise you’ll get one of these:- 400: NotAValidRedemptionChannel, InvalidPromotionIdNoData
- 404: PromotionNotFound, PromotionNotAssociatedWithContact
- 409: PromotionNotValidForRedemptionChannel, PromotionAlreadyRedeemed, PromotionAlreadyRedeemed
- 504: GatewayTimeout
Delete a promotion
You can delete a promotion using its Customer Engagement ID or its external ID (assuming an external ID was used when creating the promotion).Delete a promotion using its Customer Engagement ID
Delete a promotion using its Customer Engagement ID
id value here is the Customer Engagement ID (“31bc4f89-6e71-4086-8627-af8f01073331” or similar).Delete a promotion using its external ID
Delete a promotion using its external ID
externalId as the query parameter: