Loyalty programs basics
There are a lot of ways to encourage existing customers to continue being returning customers, but one of the best and most effective ways to do this is via creating a customer loyalty program. Its most important advantages are increasing Customer Lifetime Value, boosting loyalty, and avoiding churn.
Examples of activities that can be taken into account in the loyalty program are:
- Product page view,
- Product category page view,
- Adding a product to the basket,
- Product purchase,
- Purchase above a certain price,
- Purchase a product from a specific category,
- Newsletter subscription,
- After-sales survey submission,
- Events from ticketing system (customer care),
- Events connected with the external partnerships.
Without any coding, based on Synerise possibilities we can manage to develop rules for calculating points for such activities.
In this use case, we will present a basic schema for building loyalty program, which is the necessary first step you have to make in the beginning if you wish to calculate points for purchased products. We will describe the basic rules, based on which:
- we granted customers with 1 point for every 1 PLN spent,
- we count the points separately for every product in one transaction,
- we multiply the number of points by number of products bought, if the customer has bought more than one item of specific product,
- we round down the number of points (for example, for spending 80,60 PLN, the customer gets 80 points),
- we count the point balance for every customer.
Those rules are the fundamental elements which might be treated as the basic loyalty program as a whole. We use basic conditions, awarding 1 point for every 1 PLN spent, but you can adjust those settings to your business needs. It is worth mentioning that, based on these elements, you can add more rules, exclusions, and requirements, to make your program more complex. For example, you can multiply the number of points awarded for specific products or product categories or opt out of awarding points for them at all. In this use case, we focus on the mechanism of earning points, but Synerise also provides functionalities for spending points.
Security configuration
Before you start working with this module, if you are a Synerise customer or partner, consider reading the section about denylisting events. This natively accessible configuration will allow you to manage the restrictions in points management that may help you prevent fraud.
Prerequisites
Implement transaction events using SDK or API.
account.status
with parameter accountStatus
equal to active
). Such an event with the appropriate status should be sent each time the membership status changes (when the customer joins, resigns, or re-joins).Process
The process of creating the basic loyalty program described in this use case is divided into two main stages:
- Prepare the points schema -
this part of the process consists of the following:
- Create an aggregate which counts number of product.buy events in a single transaction
- Create an expression which contains the aggregate from step 1.
- Create an expression that counts amount of money spent on the products for a single product.buy event
- Create an aggregate which counts the amount of money spent on the products within a single transaction.
- Create an expression which calculates how many points a transaction is worth and rounds them down.
- Contact Synerise support to implement the
points.loyalty
event which saves the result of the point calculation as an event in a customer’s profile. A parameter in the event is then used for creating an aggregate. - Count the points balance -
this part of the process consists of the following procedures:
- Create an aggregate which counts the number of points gained by customer.
- Create an expression which returns the value of the aggregate with the number of points.
Prepare the points schema
In this part of the process, you will create the basic schema of counting points in a loyalty program, in which you grant customer with 1 point for every 1 PLN spent. This includes rounding points down when the amount includes hundredths. For example, for 80,60 PLN the customer gets 80 points.
Create an aggregate which counts number of product.buy events in a single transaction
In this part, you create an aggregate which counts number of product events in every processed transaction. It is used for checking integrity of the process.
- Go to Analytics > Aggregates > Create aggregate.
- As the aggregate type, select Profile.
- Enter the name of the aggregate
- Set Analyze profiles by to Count.
- In the formula of the aggregate:
- Click Select.
- From the Select property dropdown list, pick Event attribute.
- Click Choose event and enter
product.buy
. - From the Choose parameter dropdown list, select
$orderId
. - From the Choose operator dropdown list, pick Equal (String).
- Click the icon next to the Equal operator twice to get
- In the first box, add
orderId
and in the second add any value (in our case it might be1
). - Define the period from which the aggregate will return products from the event as Lifetime.
- Click Save.
Create an expression
In this step, you create an expression which contains the aggregate from the previous part of the process. It will be used for workspace configuration by Synerise CSI team.
- Go to Analytics > Expression > New expression.
- Enter the name of the expression.
- As a type of expression, select Attribute.
- Click the Select button and select Profile.
- To configure the settings, click Unnamed.
- Click the Choose attribute button and select the aggregate created in the previous step.
- Click Publish.
Create an expression that counts money spent for a single productbuy event
In this part, you create an expression which counts amount of money spent on all products within a single transaction. This is also a place where you can exclude products from points calculation.
- Go to Analytics > Expressions > New expression.
- Enter the name of the expression.
- Set the Expression for option to Event.
- From the Choose event dropdown list, select product.buy event.
- Click the Select button and select Event attribute.
- Choose parameter $quantity from the list.
- Click the + button and select Event attribute.
- Choose parameter $finalUnitPrice from the list.
- Change the mathematical operator between these two parameters to sum.
- Click Save.
Create an aggregate counting money spent on the products within a single transaction
In this part, you create an aggregate which counts amount of money spent on all products within a single transaction. This is also a place where you can exclude products from points calculation.
-
Go to Analytics > Aggregates > Create aggregate.
-
As the aggregate type, select Profile.
-
Enter the name of the aggregate.
-
Click Analyze profiles by and select Sum.
-
From the Choose event dropdown list, select the
product.buy
event. -
As the event parameter, choose the expression created in the previous step.
-
Click the + where and as the parameter select the
$orderId
.Note: ID of the transaction is necessary for Synerise Team to be able to charge points after every transaction separately. -
As the operator select Equal.
-
Click the icon next to the Equal operator two times, to find dynamic key icon.
-
In the first box add
orderId
and in the second add any value (in our case it might be1
). -
Define the period from which the aggregate will return products from the event as Lifetime.
-
Click Save.
Create an expression which adds points for money spent
In this part, you create an expression which adds 1 point for every 1 PLN spent and additionally rounds down to full units (for example, for spending 80,60 PLN, the customer gets 80 points). This expression is also used by Synerise CSI team for workspace loyalty configuration.
- Go to Analytics > Expressions > New expression.
- Enter the name of the expression.
- As a type of expression, select Attribute.
- Click the Select button and select Function.
- From the dropdown list, select Floor.
This function rounds down the results of expressions (for example 4.99 will be rounded down to 4). - Click the Select button.
- From the dropdown list, select Profile.
- Click Unnamed to display the settings.
- Click the Choose attribute button and select the aggregate created in the previous step.
- Click + button and select Constant.
- As the value of the Constant, add
1
This way, you define that for every 1 PLN spent, the customer will get 1 point. - Change the mathematical operator between these two parameters to multiplication.
- Click Save.