Creating Campaigns
Learn more about campaign types and how to create one.
Last updated
Learn more about campaign types and how to create one.
Last updated
To add a new Campaign:
Go to the List of Campaigns under Campaigns from the left side menu
Click ADD CAMPAIGN
Fill in the required fields
Switch Campaign status to Active
Click ADD CAMPAIGN
Before proceeding, select the campaign type that aligns with your objectives. Here are the available options:
Direct campaign: This one-sided campaign allows you to establish rules specifically for members participating in the campaign.
Referral campaign: A two-sided campaign enabling rule creation for both Referrers and Referees, incentivizing referrals.
Time-based campaign: Campaigns triggered based on specific periods (Daily or Member's birthday).
Consider the nature of your campaign and the desired interaction with members before selecting the appropriate campaign type.
These three types decide what triggers and conditions will be available for your campaign.
Now you need to select the campaign trigger. There are three options available:
Purchase Transaction - Purchase transaction matched with a member
Return Transaction - Return transaction matched with a member
Internal Event - Event that happens in Open Loyalty i.e., Tier updated, member registered/activated, etc.
Custom Event - Events sourced from an external system or application
Achievement - Achievement completed by the member
Redemption code - Events based on redeeming generated redemption codes
(Only for Time-based type) Daily or Member's birthday
When several campaigns are activated by the same trigger, they are executed in order of their Campaign Start Date, with the earliest one being executed first.
Please check more detailed options for some of the triggers.
When you select this trigger, each purchase transaction that is sent to OL and is successfully matched with a member will trigger the campaign. However, the effects will only be granted or executed when the specified conditions associated with the campaign are met.
When you select this trigger, each return transaction that is sent to OL and is successfully matched with a member will trigger the campaign. However, the effects will only be granted or executed when the specified conditions associated with the campaign are met. Additionally, a return transaction needs to be matched with the transaction already in the system.
To find out more, please refer to the article below.
This trigger operates based on internal events within the system and provides various options to choose from:
Achievement Progressed: Triggers when a member makes progress within a specific achievement.
Member Address Details Updated: Triggers when there's an update or change in the address details of a member.
Member Company Details Updated: Triggers upon any modifications or updates made to the company details associated with a member.
Member Profile Details Updated: Triggers when there are changes or updates in various profile details of a member.
Member Tier Updated: Triggers when there's a change or update in the tier level of a member.
Member Was Activated: Triggers upon the activation of a member (automatic or manual).
If you choose the Member Tier Updated trigger, the campaign will activate whenever a member's tier is either upgraded or downgraded.
To reward a member solely for reaching a higher tier, include the following expression in the campaign rules:
To reward a member exclusively for downgrading their tier, include this expression in the campaign rules:
If you opt for the Custom Event trigger and find the Event name dropdown empty, it means there are no previously created Custom Event schemas. To utilize this trigger, follow these steps:
Create a Custom Event Schema: Initiate by creating a Custom Event schema that aligns with the campaign criteria you intend to establish. (see the link below). This schema serves as the foundation for your campaign trigger.
Dropdown Populated with Event Names: After creating the schema, when you click on the Event name dropdown, it will display a list of the previously created custom event schemas. If the selected schema contains any attributes, you will be able to utilize them when specifying conditions later on.
Conditions for Campaign Creation: When configuring a "Custom Event" - based campaign, the created schemas and associated conditions will be available in the dropdown list. You can select these conditions from the list during the campaign creation process.
To find out more, please refer to the article below.
This trigger operates based on the already created achievements that a member has successfully completed.
To find out more, please refer to the article below.
The Redemption Code feature enables the creation of campaigns centred around codes that members can redeem later.
To find out more, please refer to the article below.
A time-based campaign type is a campaign that is triggered not by the event but at a certain time during the day—more in the Time-based campaign article.
To set up your campaign, here are the required fields and options:
Campaign Name: Enter a distinctive and unique name for the campaign.
Campaign Description: Optionally, provide brief information about the campaign.
+ Translation: Add translations for the campaign name and description.
Start Date: Specify the mandatory start date for the campaign.
End Date: Optionally, set an end date. If provided, it must be after the start date.
Campaign Attributes: Optionally, include attributes to add extra data or for filtering purposes. (see more information below.)
Campaign Visibility: Choose the visibility settings for the campaign:
Visible to Everyone: The campaign is visible to all users.
Segment or Tier Visibility: Select specific segments or tiers that can view the campaign.
Hidden: The campaign remains hidden from all users.
Campaign visibility only determines to whom the challenge is presented, not who can complete it (It doesn't affect the campaign conditions), and receives points. The condition must be specified in the rules.
Visibility - displaying the campaign
RULE: conditions - be able to earn points by fulfilling the given conditions
So, what triggers the campaign is the trigger + (optionally) condition in the rule.
To find out more about Campaign Visibility, please refer to the article below.
Campaign attributes, organized in a key:value format, serve as versatile data containers. These attributes offer multifaceted functionalities:
Filtering in Admin Panel/API: Enables filtering campaigns based on specific criteria, aiding efficient campaign management and targeted audience segmentation.
External Application Integration: Allows utilization of attribute data in external applications, enhancing management and filtering capabilities across various platforms.
For instance, an attribute like "new_member_campaign": "true"
could be utilized to specifically display campaigns to new members. This attribute facilitates targeted campaign display solely to new members, ensuring personalized and relevant engagement strategies tailored to specific user segments.
Transaction filters are powerful tools that allow you to refine the products in customers' transactions. By applying specific criteria, such as size, quantity, price, and other relevant factors, you can effectively narrow down the selection to meet your needs.
Transaction item filter how-to:
Click New Filter in the Transaction item filter section
Select from the list filter you want to create a scenario for
Name your scenario if needed
Select condition -> click Save condition
When at least one scenario is created click Add new rule under Rules -> Add condition -> Select Transaction filters: Quantity or Value)
Complete creating the condition following the form
Save condition of Rule
Condition - this condition will trigger your Campaign. For example, each Member whose name is Jack and who made a $100 purchase (conditions) will receive 20 Units.
You can set a maximum of 30 conditions within 1 Campaign Rule.
Effects - you will need to click on the purple button, the list with two options will appear
Deduct Units - select formulas to add, divide, multiply, and subtract your values and deduct units based on the calculation
Add Units - select formulas to add, divide, multiply, and subtract your values and add units based on the calculation
Give Reward - select the Reward that the Member who fulfills the conditions will receive
Set member Custom Attribute - set a custom attribute that the Member who fulfills the conditions will get
Remove member Custom Attribute - set a custom attribute that will be removed when the Member fulfills conditions
Adding or deducting units allows for various types of calculations. If your business case requires a calculation that is not listed in the campaign templates, please contact our Support via email: support@openloyalty.io.
You can add more than one rule with different conditions and effects by clicking on the purple button "Add rule".
Please note that if you add e.g. 1 rule with 2 different conditions, both conditions must be met to reward a Member. But if you create two rules, only one of them must be fulfilled, because they are considered separately as each rule has its effect.
If you would like to remove the previously added condition just click on the "x" button on the right-hand side.
Please note that you can add a maximum of 6 rules in one campaign. Otherwise, you will get an error message.
After you have picked all of the necessary parameters just click on the "Add Campaign" button, a cordial celebration of your successful launch will appear and you will land on the Campaigns screen, where you can find your freshly created Campaign.
Please note that if you create the campaign and change its trigger, the form will be cleared from already put information.
This feature helps you when filling in the 'Give Units' text field. When you will click on the text field and start typing, after the first two letters - the list with the suggested Templates or Variables will appear. You can mix the formulas (add, divide, multiply, and subtract) to obtain the expected result.
Besides the formulas, you can use already prepared templates, by clicking on the '+' button, where the searchable list will appear.
To choose the formula you can use the button "˅". Clicking on this button will open a list with optional formulas.
If any of your typed formulas have a mistake, a message about the problem will after trying to save the campaign.
Transaction gross value - transaction.grossValue
Total number of items in transaction - transaction.qty
Quantity of products with specific SKU - transaction.sku('').qty
Gross value of products with specific SKU - transaction.sku('').grossValue
Quantity of products from specific category - transaction.category('').qty
Gross value of products from specific category - transaction.category('').grossValue
Quantity of products from specific brand - transaction.maker('').qty
Gross value of products from specific brand - transaction.maker('').grossValue
Under Advanced Settings, you can specify custom units' expiration and pending dates. By enabling this feature, you can create dynamic expiration/pending dates based on a variety of conditions, ensuring that the campaign's incentives align with strategic business objectives such as encouraging quicker customer spending or rewarding long-term loyalty
This setting operates on a formula basis, which allows calculating expiration and pending dates using predefined variables and operators. For instance, you can set units to expire within a certain number of days post-transaction, after a specific number of days, months, or years, or even based on the customer's activity. This empowers campaign creators to tailor the urgency and attractiveness of the campaign rewards to the desired customer behavior.
Advanced settings override default wallet settings, making it possible to customize campaigns at a very detailed level.
At static date - the points will expire on the specific date
X days from transaction - the points will expire after X days from the transaction
X months from transaction - the points will expire after X months from the transaction
X year from transaction - the points will expire after X years from transaction
VARIABLES:
Current Date - it counts the days from the processing date of the transaction (the date of receiving the transaction in the system).
The example: add_days_to_date(executionContext.processedAt, 15)
. The transaction got into the OL on the 1st of Feb, 2024, so the expiration date of the points will be 16.02.2024 (+15).
Transaction document date - e.g add_days_to_date(transaction.purchasedAt, 5)
.
Member custom attribute - points will expire on the date of what’s in the member custom attribute value. (to_date
- converts the key to date). Example custom attribute:
If you use the variable below, the points will expire on 2025-08-24.
But if you want to add days to the point expiration to the end date of the custom attribute, you can use one of the templates and the following formula: add_days_to_date(to_date(agg(customer.labels).getLabelValue('subscription_end_date)),6)
. Then the expiration date of points will be on 30.08.2025.
e.g. transaction took place at transaction date 2024-03-01 16:30 → formula days: add_days_to_date(transaction.purchasedAt, 3) → points expire at (2024-03-04 16:30)
→ IMPORTANT: it’s not by the end of the day, it’s always the same time as the event/ transaction date
Please note the variables can be used in and outside the templates. The same templates and variables stand for custom pending settings.
To provide users with more flexibility in performing Campaign actions, it is possible to use a member's Custom Attributes as a condition in the Campaign. Depending on the value provided in the Custom Attributes we can also perform various operations on the stored data
datetime, e.g. “2022-12-20T14:15:22+01:00”
number, e.g. “10.2”
string, e.g. “featured”
To retrieve the given Custom Attribute, use: e.g. agg(customer.labels).getFirstLabelValue('post_date') In this example, the function will return a value of the key “post_date”.
To parse the custom attribute to date, use function to_date e.g. to_date(agg(customer.labels).getFirstLabelValue('post_date'))
In order to compare dates, use timestamp(), e.g. timestamp(to_date(agg(customer.labels).getFirstLabelValue('post_date')))
To compare numerical values, you don’t have to use any functions. Remember to use dot separator “.”, e.g. agg(customer.labels).getFirstLabelValue('posts_number') > 10
Give Effect for a transaction within 5 days of a given date: (timestamp(transaction.purchasedAt) - timestamp(to_date(agg(customer.labels).getFirstLabelValue('post_date')))) <= 432000
In order to limit the granting of effects to this condition only, another condition should be added agg(customer.labels).getFirstLabelValue('post_date) != null
Campaign limitation is one of the ways to incorporate anti-fraud into loyalty programs. These are based on different conditions in three main categories, namely: Global - relating to the entire campaign Individual - relating to the account of a single member Usage - how many times a member can receive points for a specific action.
When using this functionality, you can define how many units a single campaign can generate, with no breakdown per member; specify the maximum number of units a member can receive within a campaign, as well as how many times a member can receive units for fulfilling campaign conditions.
For example: Set an overall limit for the entire campaign of 10000 units, as well as a limit of 100 units for one member. As a result, I know that a minimum of 100 users can join the campaign, and each of them will be able to earn a maximum of 100 units.
Each of these limits can be set for a specific period of time during which it is enforced.
Timestamps:
No limit - the Campaign is not limited
Daily - Member can earn a specific number of units every X calendar days For example: The limit for number of units: In the last X calendar days Number of days: 3 Maximum number of units: 230 Each Member in every 3 days from today (2022.04.12 00:00 - 2022.04.15 00:00) can earn 230 units
Weekly - Member can earn a specific number of units every X calendar weeks For example: The limit for number of units: In last n calendar weeks Number of weeks: 5 Maximum number of units: 150 Each Member in every 5 weeks from this week (2022.04.11 00:00 - 2022.05.15 00:00) can earn 150 units
Monthly - Member can earn a specific number of units every X calendar month For example: The limit for the number of units: In the last n calendar months Number of months: 0 Maximum number of units: 15 Each Member in every 0 month from this month (2022.05.01 00:00 - 2022.05.31 00:00) can earn 15 units
Yearly For example: The limit for the number of units: In the last N calendar years Number of years: 0 Maximum number of units: 1 500 Each Member in every 0 years from this year (2022.01.01 00:00 - 2022.12.31 00:00) can earn 1 500 units
In total - this limit is set for the entire lifetime of the Campaign
Types of limits:
Limit for the number of units - here you can set the global maximum number of Units to earn for all Members.
The limit for the number of units per member - here you can set the maximum number of Units for each Member.
The limit for the number of triggers per member - here you can set the maximum number of triggers for each Member
Limitation logic:
For daily/monthly/yearly limits, we consider the business date of the event (transaction, custom event, etc).
**Example:** If a campaign has a limit of 1,000 points per day for units issued per member, and the administrators send two transactions for a member—one for today’s date and another for two days ago—that member will receive 2,000 points in total: 1,000 points for today’s transaction and 1,000 points for the transaction from two days ago. In summary, the limits are based on the date the campaign is executed (“executedAt”) according to the business date of the event.