Emarsys Loyalty provides an option to migrate the contacts from your existing loyalty program to the new one in the Loyalty add-on.
The following parameters can be migrated to the new program:
- Member status (tier)
- The precise original join date
- The tier of the member
Loyalty will add the user into the tier on the day of migration. If the tier configuration is 12 months, then the 12 months are counted from the migration date.
- Member points, such as:
- Status points (points to advance to the next tier)
- Balance points (points to redeem)
- Timestamp of the expiration date for the points
All points are added to the user with the timestamp of the migration.
On the day of migration, send a .csv
file with below mentioned columns to your Implementation Consultant so the Loyalty team can migrate your contacts and their data.
CSV file specifications for contacts
-
This
.csv
file has to be sent with all contacts to be migrated.
The .csv
file must contain the following columns in this specific order:
CSV column header | Description | Type |
---|---|---|
userId |
The unique contact identifier. This has to be the same as in the uploaded sales data. | string |
shouldJoin |
Enter TRUE into this column for each customer. |
String |
joinDate |
The original date the user joined the old loyalty program. |
integer (in UNIX time format, milliseconds) |
tierName |
The name of the tier to be assigned to your contact. Without a tier name, the contact will be placed automatically in the bottom tier (tier 1). |
string |
tierEntryAt |
Leave empty |
|
tierCalcAt |
Leave empty |
|
shouldReward |
This parameter is used by migration scenarios. When set to |
string |
The tier name has to be written exactly how it is defined in the Emarsys Loyalty plan settings.
If the tierName
field stays blank, the Loyalty system will distribute members among tiers based on their existing status points and the new tier requirements. For example, if a member has enough points for Silver, he will be added to this tier including the existing status points.
If you sent us status points in the points file that will put the member into a higher tier than the tier name you sent in the contact file, Loyalty System will upgrade the member to the tier according to the status points.
-
shouldJoin
: Set the value for this column to "TRUE
" for all contacts. -
shouldReward
: This parameter is used by migration scenarios. When set toTRUE
, marked contacts receive the default join reward after migrating into the Loyalty program. Contact marked withFALSE
do not count as new joiners. Thus, they do not receive join rewards.
CSV file specification for points
- This .csv file should include only contacts from the contact migration file who need to receive points.
- Do not use decimal separators (comma, dot) in your numbers.
Do not send 1.000 or 1,000. Do send 1000.
The .csv file must contain the following columns in this specific order:
userId |
The unique contact identifier. This has to be the same as in the uploaded sales data. | string |
pointToSpend |
The amount of balance points that can be used for redemption by the member. | positive integer |
statusPoints |
The amount of Status points of the members that determine their tier. |
positive integer |
cashback |
The amount of cashback available for the member. It is only relevant for Spend & Benefits plans. Otherwise, leave empty. | positive float |
allocatedAt |
Leave empty |
|
expireAt |
The expiration date of the points. If you want Loyalty to calculate expiration date, then leave this column empty, and set the column: setPlanExpiration=TRUE
|
integer (in UNIX time format) |
setPlanExpiration |
If you want Loyalty to set the expiration according to the plan settings, then put TRUE here.Otherwise, use the expireAt column and tell us when points expire, and sent the value of this column to FALSE . |
string |
reason |
An optional description for Loyalty admins in Member Profiles for the given activity. Loyalty members are not able to see this. | string |
title |
This is the title of the description that contacts, and admins see for a specific activity in Member Profiles. | string |
description |
This is the description that contacts see for a specific activity in their Wallet. | string |
-
statusPoints
(optional): The amount of status points to migrate from the previous plan that this member will see in the Wallet.
Example
For example, this customer may start the new plan as a silver member with 540 status points (points from previous plan):

If you keep the statusPoints
field blank, the status points of the member will be zero and the member will be distributed into the tier defined in column: tierName
.

-
pointsToSpend
(optional): The number of points awarded for spending (to redeem). The validity period of the points will start from the moment the contact is migrated. Alternatively, you can decide that the contacts will start without points to spend.
Make sure to send the points data in the migration file including data up to midnight before the migration date.
CSV file specification for vouchers
Loyalty allows you to migrate the current voucher codes of your users into the Emarsys loyalty system, so that they can continue to see and use the same codes.
For the voucher migration we need below fields:
CSV column header |
Description |
Type |
---|---|---|
userId |
The contact identifier for Loyalty and Smart Insight, for example, email. | string |
externalId (optional: can be used instead of userId ) |
The hashed userId, this equals the loyaltyId field in Emarsys contact database. | string |
voucherType |
To define if the voucher is one-time or multi, use use one of these values: one_time / yearly. | string |
voucherName |
The name of the voucher as it should appear in the Wallet and the API. | string |
iconName |
Then icon that should appear for the voucher. As the default icon, use this string: basket-colors-1. * | string |
code |
The voucher code itself | string |
expiration |
The validity deadline of the voucher. After this date, the voucher will vanish from the Wallet and the API. | string - Specify it in epoch time in millisecond and not seconds. Example: 3/4/2021, 9:32:37 AM = 1614843157819 |
*If you want to have a different icon, please ask your Implementation Consultant to upload your desired icon into the loyalty system. You will be provided with the icon name to be used inside the file.
Important for migration: The same voucher code can be given only once to the same user, but two different users can get the same voucher code.
After migration, the voucher will appear in the Wallet as the following (example: 10$ cashback):

Migration best practices
After the migration process is finished, enable sales data import under Loyalty Configuration > Sales Data Import, with the migration date as the start date. This way, Loyalty will only import sales data for which points were not given.
In case you want to check sales data prior migration, you can activate data import, but turn it off before migration and update the Sales Data Start date to after the migration to specify the date of purchase to be imported.