In every loyalty program where the accumulated points may expire at some point, we face the challenge of properly managing this area. The main purpose of this article is to explain the methodology of counting the expiration of loyalty points in Synerise and define the configuration with a step-by-step manual showing the pros and cons of such a solution.
There are two basic approaches to loyalty point cancellation:
In this article, we will present the first one - Rolling cancellation.
The main advantages of this method are as follows:
It also comes with some challenges, especially when you call yourself a modern digital company. The main challenges are:
Let’s have a look at how we can configure rolling cancellation with Synerise.
In our case, there will be 3 types of events:
We also assume that points.loyalty are 6 months due. For day-to-day precision, we will need to convert 6 months to 182 days to use in configurations. To meet all assumptions mentioned, we have to prepare a list of needed elements, described below:
Create three separate aggregates summing all three types of events (points.loyalty,points.expire and client.activatePromotion), as in this example below for the points.loyalty event.
Create an additional aggregate. The time frame is set to 20 years so we can count all historical events (20 years is a safe beginning as we cannot set infinity) up until the day we analyze points that are to potentially expire in 6 months (in this case, changed to 182 days).
As the next step, create an expression summing up all spent/lost points. This expression consists of two aggregates: one counting the points used for promotions and the other one counting expired points. (aggregates summing up points.expire and client.activatePromotion events created in the first step).
Build an optional expression summing the same types of aggregates that may look like the example presented below.It consists of the sum of three elements – points for registration, points earned from transactions, and points for upcharging events.
Create a current point balance expression based on our aggregates (and optional expressions if applicable). Subtract points lost (both redemeed and expired) from all points gathered with a simple formula presented below.
Create a formula that will tell how many points should be counted as expired (as some of them may have been used on rewards).
This expression is based on the condition that if the number of points gathered before the day of points expiration and the expression summing up aggregates with all lost points—including this day’s points, in our case, everything until 6 months ago (expression from step 3) is equal to or lower than the number of points spent/lost (expression from step 3), then we assume all gained points were redeemed. We have nothing to expire - the expression returns 0.
If not, we subtract points redeemed/expired from points gathered and return the result that equals the number of points to expire.
Next, create a segment of users that will be the audience for a daily automation. The decision will be based on two conditions.
Thanks to that the automation will be run only when necessary.
Lastly, create a simple automation that runs daily, ideally a few seconds (5-10) after midnight.
What is more, the event block in this process should be built as follows:
Note that the uuid of expression from step 6lets us dynamically generate events with points number personalized for each user.
The result of such action will be such an event:
We can also create a special early communication, serving as an alert for expiring points, to run in advance. For example, we could send a campaign that notifies users about their expiring points and highlights special offers where they can redeem them. This could be a great opportunity to boost the number of transactions and positively impact the level of points spent.
The article discusses a process designed for situations where each event involving received points has its own configurable expiration time, consistent with the event type. A key benefit of this setup is the ability to continuously monitor and communicate with customers about their point balance, as it is updated daily. Providing gradual updates about point reductions encourages more active participation in the loyalty program. This approach is more motivating than notifying users about point expiration just once a year, which can be discouraging.