Loyalty programs basics

Published September 30, 2022
Modules
Difficulty
Selected Clients
zabka logomig logococcodrillo logo

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.

Loyalty program

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.

Tip: Additionally, you can also collect a custom event which sends information to Synerise about joining a loyalty program (for example 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:

  1. Prepare the points schema - this part of the process consists of the following:
    1. Create an aggregate which counts number of product.buy events in a single transaction
    2. Create an expression which contains the aggregate from step 1.
    3. Create an expression that counts amount of money spent on the products for a single product.buy event
    4. Create an aggregate which counts the amount of money spent on the products within a single transaction.
    5. Create an expression which calculates how many points a transaction is worth and rounds them down.
  2. 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.
  3. Count the points balance - this part of the process consists of the following procedures:
    1. Create an aggregate which counts the number of points gained by customer.
    2. 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.

  1. Go to Analytics icon Analytics > Aggregates > Create aggregate.
  2. As the aggregate type, select Profile.
  3. Enter the name of the aggregate
  4. Set Analyze profiles by to Count.
  5. In the formula of the aggregate:
    1. Click Select.
    2. From the Select property dropdown list, pick Event attribute.
    3. Click Choose event and enter product.buy.
    4. From the Choose parameter dropdown list, select $orderId.
    5. From the Choose operator dropdown list, pick Equal (String).
    6. Click the icon next to the Equal operator twice to get Dynamic key icon
    7. In the first box, add orderId and in the second add any value (in our case it might be 1).
    8. Define the period from which the aggregate will return products from the event as Lifetime.
    9. Click Save.
Aggregate settings
Aggregate which counts number of product.buy events in a single transaction

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.

  1. Go to Analytics icon Analytics > Expression > New expression.
  2. Enter the name of the expression.
  3. As a type of expression, select Attribute.
  4. Click the Select button and select Profile.
  5. To configure the settings, click Unnamed.
  6. Click the Choose attribute button and select the aggregate created in the previous step.
  7. Click Publish.
Expression settings
Expression settings

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.

  1. Go to Analytics iconAnalytics > Expressions > New expression.
  2. Enter the name of the expression.
  3. Set the Expression for option to Event.
  4. From the Choose event dropdown list, select product.buy event.
  5. Click the Select button and select Event attribute.
  6. Choose parameter $quantity from the list.
  7. Click the + button and select Event attribute.
  8. Choose parameter $finalUnitPrice from the list.
  9. Change the mathematical operator between these two parameters to sum.
  10. Click Save.
Expression settings
Expression counting money spent on every product within transaction

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.

  1. Go to Analytics icon Analytics > Aggregates > Create aggregate.

  2. As the aggregate type, select Profile.

  3. Enter the name of the aggregate.

  4. Click Analyze profiles by and select Sum.

  5. From the Choose event dropdown list, select the product.buy event.

  6. As the event parameter, choose the expression created in the previous step.

  7. 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.
  8. As the operator select Equal.

  9. Click the icon next to the Equal operator two times, to find dynamic key iconDynamic key icon.

  10. In the first box add orderId and in the second add any value (in our case it might be 1).

  11. Define the period from which the aggregate will return products from the event as Lifetime.

  12. Click Save.

Aggregate settings
Aggregate counting money spent on every product within transaction

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.

  1. Go to Analytics icon Analytics > Expressions > New expression.
  2. Enter the name of the expression.
  3. As a type of expression, select Attribute.
  4. Click the Select button and select Function.
  5. From the dropdown list, select Floor.
    This function rounds down the results of expressions (for example 4.99 will be rounded down to 4).
  6. Click the Select button.
  7. From the dropdown list, select Profile.
  8. Click Unnamed to display the settings.
  9. Click the Choose attribute button and select the aggregate created in the previous step.
  10. Click + button and select Constant.
  11. As the value of the Constant, add 1 This way, you define that for every 1 PLN spent, the customer will get 1 point.
  12. Change the mathematical operator between these two parameters to multiplication.
  13. Click Save.
Expression settings
Expression which adds 1 point for every 1 PLN spent and additionally use the round down mechanism

Contact Synerise to enable loyalty points


Once you prepare all the above analytics, contact the Synerise Support Team to configure the materialization of loyalty points. You need to send links or IDs of both created expressions and let our Support Team launch your loyalty program. After such configuration, every time loyalty points are assigned to a customer, the points.loyalty event will be generated in a customer’s profile with information about the number of loyalty points they received after a transaction (the points parameter).

Count the points balance


In this part of the process, you will create analytics which counts the points balance for each customer. It is important to have that information in one place so it can be used in further communication with customers.

Create an aggregate counting the number of points


In this step, you create an aggregate which counts the number of points in a loyalty program.

  1. Go to Analytics icon Analytics > Aggregates > Create aggregate.
  2. As the aggregate type, select Profile.
  3. Enter the name of the aggregate.
  4. Click Analyze profiles by and select Sum.
  5. From the Choose event dropdown list, select the points.loyalty event.
  6. As the event parameter, select points.
  7. Define the date filter as Lifetime.
  8. Click Save.
Aggregate settings
Aggregate counting the number of points

Create an expression which returns the number of points gained by customer


In this part, you create an expression which counts the number of points for a specific customer.

Note: The expression in this is a simple example whose only purpose is to show the result of an aggregate. Unlike an aggregate, for the purpose of a loyalty program you can make it more advanced by adding mathematical operations, conditions, and exclusions based on your business needs. For example, you can add points collected from other campaigns, take into account expired and spent points and transfer of the points between customers. Remember that regardless of how many elements you have implemented in your loyalty program and how extensive it should be, you can include all the necessary elements directly in this expression.
  1. Go to Analytics icon Analytics > Expressions > New expression.
  2. Enter the name of the expression.
  3. As a type of expression, select Attribute.
  4. Click the Select button and select Profile.
  5. Click Unnamed to display the settings.
  6. Click the Choose attribute button and select the aggregate created earlier.
  7. Click Save.
Expression settings
Expression which counts the points balance for every customer

What’s next


You can use the created expression with the points balance as an insert and use it on the website, display it in personalized dynamic content campaigns, send it in a push message, SMS, or email campaign with the information about current points balance.
Also, you can use it as a part of the dedicated promotions for users with a specific number of points and take into account the number of points gained by a customer in the conditions of promotions displayed, for example, in your mobile application.

The expression is also available as a profile attribute, so you can use it in analytics, for example to create a segmentation of customers depending on their collected points, and then use that segmentation as an Automation audience.

In this article, we described the fundamental requirements for a basic loyalty program, but we encourage you to develop it and make it more personalized and adjusted to your business needs. Here are a few examples to help you in adding more complex elements and options to your loyalty program:

Check the use case set up on the Synerise Demo workspace


You can check the configuration of all described analytics directly in Synerise Demo workspace:

  1. Preparation of points schema:
    • Aggregate which counts number of product.buy events in a single transaction.
    • Expression which contains the aggregate from step 1.
    • Expression that counts amount of money spent on the products for a single product.buy event.
    • Aggregate which counts the amount of money spent on the products within a single transaction.
    • Expression which calculate how many points a transaction is worth and rounds them down.
  2. Counting the point balance:
  • Aggregate which counts the total number of points gained by a customer.
  • Expression which return the value of the aggregate with the number of points.

If you don’t have access to the Synerise Demo workspace, please leave your contact details in this form, and our representative will contact you shortly.

Read more


Check our loyalty use cases:

😕

We are sorry to hear that

Thank you for helping improve out documentation. If you need help or have any questions, please consider contacting support.

😉

Awesome!

Thank you for helping improve out documentation. If you need help or have any questions, please consider contacting support.

Close modal icon Placeholder alt for modal to satisfy link checker