If you are migrating from an existing loyalty program and wish to retain your member data, Okendo Loyalty provides an importer as part of the Get Started assistant.
In this article, you’ll learn about:
How the importer works
File formats accepted by the importer
Creating tiers, as part of the import process
Error handling
Import Loyalty Data page
⚠️ NOTE
This step will only appear if you have selected the option Do you have a current loyalty program? on the Your Program page.
If you select the option Do you have a current loyalty program? on the Your Program page, you will be taken to the Import Loyalty Data page. Simply select or drag a CSV file, containing your member information, into the option below.
⚠️ NOTE
You will need to export your members (customers) from your existing provider, into a comma- separated value (CSV) file. Please refer to your existing provider, on how to do this.
We support customer files from Yotpo, Loyalty Lion and Smile.
Alternatively, you can also create a generic CSV file, if you are with other providers. Simply add your member's details to it, save the file as a CSV and use it in the Import Loyalty Data page.
Before importing, we also recommend reviewing and (where necessary) cleansing your CSV file, as there may be members included, that have not engaged with your business for some time. This will ensure that you only import engaged members and may speed up the import process.
Generic CSV file format
The following are fields in the generic CSV file. Create and save a CSV with these fields as headers and use it when bringing in data from any other loyalty provider. It is mandatory for some fields to include a value per record, so please ensure you include these in the imported file.
Field name | Mandatory or Optional | Description |
Mandatory | The email address of the member | |
status | Mandatory | Some providers allow members to be in a non-enrolled (guest) or enrolled status in their program. This can be replicated in Okendo Loyalty, however the values are 'pending' (ie a guest) or 'enrolled'. |
firstName | Optional | First name of the member |
lastName | Optional | Last name of the member |
spent | Optional | Points spent to date, by the member |
balance | Optional | The points difference between earned and spent |
earned | Optional | Points earned to date, by the member |
expiry | Optional | The expiry date of points. The format required is YYYY-MM-DDTHH:MM:SS.sssZ |
programJoinDate | Mandatory when members status is 'enrolled'. Otherwise optional. | The date that the member enrolled in your program. The format required is YYYY-MM-DDTHH:MM:SS.sssZ |
vipTierId | Optional | A unique ID used to identify VIP Tiers |
vipTierName | Optional | The name of the VIP tier, that the member is currently on |
vipTierExpiry | Mandatory when vipTierName or vipTierId is provided. Otherwise optional. | The date where the member has to meet the tier spend limit, to remain on the current tier. The format required is YYYY-MM-DDTHH:MM:SS.sssZ |
vipTierEntered | Mandatory when vipTierName or vipTierId is provided. Otherwise optional. | The date the member entered their current tier. The format required is YYYY-MM-DDTHH:MM:SS.sssZ |
birthDay | Mandatory if birthMonth value is included. Otherwise optional | The specific day of the member's birthday. Can be any value between 1 - 31. Can be added to pending and enrolled members. |
birthMonth | Mandatory if birthDay value is included. Otherwise optional | The specific month of the member's birthday. Can be anything between 1 - 12, where each month is represented by it's corresponding value (eg October = 10, June = 6, Jan = 1). Can be added to pending and enrolled members. |
Generic CSV file format example
Importing members on tiers
If you wish to retain members on their existing VIP Tiers, you will need to re-create them, before importing. Select the option Does your import include VIP tiers for members? and add the required tier names and their associated spend limits.
Otherwise, if you don't want to retain members on their existing VIP Tiers, select Next to continue.
⚠️ NOTE
It is important that the tier names in Okendo Loyalty match those in your CSV file, as the Import Loyalty Data page will validate these values and skip any it cannot match.
Once you have recreated all necessary VIP Tiers, select Save and Import.
The import process
The import process will commence one you select Next or Save and Import. How long this process will take, will depend on how many records need to be imported.
⚠️ NOTE
You may exit Loyalty at any time and this process will continue in the background. You will be sent an email, once the process has completed.
The import report
The Import Loyalty Data page creates a report that shows the status of records in the CSV file (valid, invalid, imported and failed_import) as well as errors, explaining why a record was not imported. This report can be viewed, under Settings > Import/Export > Import History.
The following are possible error messages you may encounter:
Error Message | Cause of error and solution |
email is required | Ensure the 'email' header is present in the CSV file. |
<email> not a valid email address. | Ensure the email address for the row is a valid email. |
<email> duplicate email found. | This email already appears in the file, consolidate these rows. |
Status is required and must be one of enrolled or pending. | Ensure the 'status' header is present in the CSV file. |
Status must be one of enrolled or pending. | Ensure the values are either 'enrolled' or 'pending'. |
First name must be a non empty string. | Ensure there are no whitespace/hidden characters in the firstname column. |
Last name must be a non empty string. | Ensure there are no whitespace/hidden characters in the lastname column. |
Loyalty customer found with conflicting data. | This email belongs to another loyalty customer, this may be due to a customer merge from shopify. |
Loyalty customer found from another import. | This email was used in a previous loyalty importer and has not been removed. |
Balance must be a number. | Ensure the balance column contains only numeric characters. |
Earned must be a number. | Ensure the earned column contains only numeric characters. |
Spent must be a number. | Ensure the spent column contains only numeric characters. |
Spent must be 0 or a positive number. | Ensure the spent column contains only positive numbers or 0. |
Point integrity error earned - spent = balance. | The earned, spent and balance provided do not match up. Balance must be equal to the earned - spent. |
Balance cannot be greater than earned. This will result in a negative spend. | Ensure the balance is not greater than the earned. |
Expiry must be a valid date. | Ensure the date format provided matches YYYY-MM-DDTHH:MM:SS.sssZ |
Program join date must be a valid date. | Ensure the date format provided matches YYYY-MM-DDTHH:MM:SS.sssZ |
Only one of vipTierId or vipTierName can be specified. | There should only be a value in either vipTierId or vipTierName. Remove the vipTierId column and its data to resolve this. |
VIP tier is not supported for un-enrolled members. | Okendo Loyalty supports VIP tiers only for enrolled members. Mark the member as enrolled or remove the viptierName/vipTierId value |
VIP Tier ID cannot be mapped to a configured vip tier. | The vipTierId value does not match and Okendo Loyalty VIP Tier |
VIP Tier Name cannot be mapped to a configured vip tier. | The VIP Tier name does not match a configured tier. Check the spelling against the admin or update the VIP tier configuration to match. |
VIP Tier expiry date must be a valid date. | Ensure the date format provided matches YYYY-MM-DDTHH:MM:SS.sssZ |
VIP Tier expiry should not be in the past. | VIP tier expiry should be in the future or removed from the file. |
VIP Tier entered date must be a valid date. | Ensure the date format provided matches YYYY-MM-DDTHH:MM:SS.sssZ |
VIP Tier entry should not be in the future. | VIP tier entry cannot be in the future amend the date to when the customer attained this VIP tier. |
Birthday date invalid. | If the day of the birthday does not make sense. For example, entering birthDay 31 against birthMonth 6 (June) or birthDay 77 against birthMonth 12 (December). |
Birthday date invalid. Must provide values for both day and month. | When either birthDay or birthMonth are missing or nonsensical (eg "99" as birthMonth). |
What happens to members, once they are successfully imported?
A new member record is created in Okendo Loyalty, along with the appropriate points balance, status and VIP tier.
Where Okendo Loyalty can determine how long a member has been on their current VIP Tier (either using vipTierEntered or vipTierExpiry) and their spend to date on that VIP tier, it will continue tracking member spend in this context.
Where Okendo Loyalty cannot determine how long a member has been on their current VIP Tier (either using vipTierEntered or vipTierExpiry) and/or their spend to date on that VIP tier, it will default them to 12 months on the VIP Tier specified in the CSV import file. Members will stay on this tier for 12 months regardless of whether they have enough spend to progress to a higher tier. At the end of this period, Okendo Loyalty will calculate member spend, based on a rolling 12 month period, to determine if they remain on their current VIP Tier, progress to a higher VIP Tier or are demoted to a lower VIP Tier.
⚠️ NOTE
The Importer will keep processing records in the background until it has finished. You will be sent an email, once the process has completed.
What happens if records imported incorrectly?
If after the import process has completed, you recognise incorrect data against member records, you can delete you import (as long as you have not launched), by doing the following:
Go to Okendo Admin > Settings > Import/Export
Go to Import History and select in the Delete column, against the relevant Loyalty Customers file
Confirm you want to delete the imported file by selecting Delete Import in the modal window
Once your file has been deleted, the file status will update with Deleted
If you have any specific questions or need further assistance, feel free to reach out to our support team.