- Do not exceed 20,000 rows in your CSV file (or
pointtransactionnodes in your XML) - split into several files if needed - Be sure to include all the mandatory fields listed on the table below
- If using a CSV make sure it’s UTF-8 encoded and with semicolon separated values
- As the
transactionTypevalue, use only “purchase”, “return”, “adjustment” or “rewardvoucher” - As the
keyTypevalue, use only “memberNumber”, “externalId” or “contactId” - Only set a value in one of the fields “expireAfterMonthsInactive“ and “validTo“
- If the point transaction is already expired, set the date value of the expiration in the field
validTo, but DO NOT setexpireAfterMonthsInactive - If the settings for expiration are correctly set up AND the value of
validToorexpireAfterMonthsInactivematches that expiration setting, these fields can both be set to blank and values will be added based on what is set up in these expiration settings
If a contact doesn’t exist
When importing points transactions from a file, it can happen that the contact connected to the transaction might not exist in the database. If this happens, andkeyType in your import has one of the values “memberNumber” or “externalId”, then a new contact will be created.
However, if this happens when keyType has the value “contactId”, then a new contact will not be created. Engage is not able to create a new contact from a specified contactId. So, in this case, the whole file will be skipped and not imported.
Any contact created in this way will be approved and their firstname and lastname will be “PointTransactionImport”.
Structure of the import file
This is what each row in your CSV or eachpointtransaction node in your XML should contain.
Mandatory fields are marked with *. The other fields are optional but recommended.
Example of values
For the example contact with
key of 2135, all their points are imported as one entry, without history.
You can download an example CSV and XML file on the example files page:
Show me the example files page
Importing the file
Your CSV or XML file / files must now be placed on your FTP inside a folder named Integration/PointTransactionImport The actual processing of your files must be manually triggered by your Voyado Engage team. The result of the integration, including the validation check, will be shown in the integration log as type Data migration.File validation
Each file is validated before it is processed. If any error is found during the validation of a file, it will be logged in the integration log and the whole file will be skipped. This is a safety feature since unique IDs are not used for the rows inside the files. Validation will then continue with the next file. The following validations are applied to all mandatory fields in your files:- All returns must have a negative value
- All purchases must have a positive value
- The
amountvalue must be a number, either integer or decimal - The
PointDefinitionIdvalue has to be a positive integer value and must exist in the “PointDefinitionId” database table - The
transactionDatevalue must be in the format2019-06-13T12:00:25+1:00 - The
transactionTypevalue must be either “purchase”, “return”, “adjustment” or “rewardvoucher” - The
expireAfterMonthsInactivemust be a positive number higher than 0 - The fields
validtoandexpireAfterMonthsInactivecannot be added in the same row
Performing the import
After your files pass validation, the actual import is done like this:- They will be imported to blob storage and remain there until all files in the batch are imported
- The system then reads the files from blob storage and start importing all rows
- The system then updates
PointAmountLeftfor all contacts so it matches the imported data

