When getting started with Voyado Engage, historical transactions are valuable as a way to gain insights and allow you to try out more advanced segmentation. However, the Engage API should never be used to perform operations on a large number of transactions simultaneously (a so-called bulk update). For doing this, our recommended approach is to migrate your transactions via a file, either as XML or CSV. The key questions you need to answer before a file-based migration are:Documentation Index
Fetch the complete documentation index at: https://developer.voyado.com/llms.txt
Use this file to discover all available pages before exploring further.
- How far back should I go? (Voyado usually recommends 24 months)
- Do I plan to add additional product data to the transactions?
- Does my data include transactions that aren’t relevant? For example, those of deleted contacts or with irrelevant products.
Prerequisites
Here are some important things to confirm before you import your historical transactions.- All contacts referred to in your file must already exist in Engage before the import of transactions is started. If a contact does not exist, the transaction data connected to them will be ignored.
- Likewise, all stores referred to in the file must already exist in Engage.
- If an imported transaction already exists in Engage then the imported transaction data will be ignored. No updates will be done to the existing transaction.
- Don’t exceed 20 000 receipts per file. This is not a hard limit but a strong recommendation. Large files can make the server very slow and risk causing a timeout. Note that the number refers to transaction lines and not transactions.
- If the import is done in CSV format the columns should be separated by semicolons and not by commas.
- You can’t map transactions with more than one
matchKeyTypeper file. If a file contains more than onematchKeyTypemapping then it should be split into several files. - For dates, Engage requires the data formatted as ISO8601 with Time zone designators.
Validation of your files
Validation of your CSV or XML files is an important step before importing. It ensures your data has the correct format and will greatly reduce the possibility of errors and lost data. Use the Engage validation service to make sure your files are in the correct format. You can read more about the service below.File import location
When your files have been prepared and approved on your side, they’ll need to be placed in a designated folder on the Engage FTP for the actual import to happen. Place your transaction files in the folder named transactionMigration. If this folder has not been created, you can create it manually in the FTP client if you have sufficient access rights. Read more about the import steps here. If you need help, contact your Voyado team.CSV file import
You can download CSV and Excel examples on the example files page. There are two kinds of rows in a CSV import, header rows and item rows.- Header rows hold information about the transaction
- Item rows are the items involved in that transaction
Header fields
Fields marked with * are mandatory.| Field | Example | Type | Description |
|---|---|---|---|
| *matchKey | doe@voyado.com | string | A value to match against the specified customerKeyType and contactType |
| *matchKeyType | string | Valid options:memberNumber, socialSecurityNumber, mobilePhone, externalId, email | |
| *contactType | member | string | Which contact type to match the transaction with |
| *uniqueReceiptId | 2287565954-25 | string | Needs to be a unique number for each transaction |
| *receiptNumber | 2287565954 | string | The transaction number you segment on in Engage. Does not have to be unique |
| *createdDate | 2020-09-06T15:55:54+01:00 | datetime | Date and time when the transaction was created formatted according to ISO 8601 with Time Zone designator |
| *storeExternalId | 930 | string | The unique ID for the store where the purchase was made |
| *currency | EUR | currency | The currency code, according to ISO 4217, for the currency in which the customer paid (local currency) |
| *exchangeRateToGroupCurrency | 10.00 | decimal | The exchange rate to the group currency set in Engage. Default value is 1.00 |
| *totalGrossPrice | 200.00 | decimal | The total price paid by the customer including VAT. A decimal point (.) is always used as decimal separator. Default is 0 |
| *header | 1 | bit | Should always have the value 1 if it is a transaction header |
| paymentTypeType | creditcard | string | Pre-defined values can be set: “card”, “cash”, “creditcard”, “bonuscheck”, “swish”, “klarna”. If your value does not match one of the above, it will be categorized as custom: “custom: [value]”(max 245 characters) |
| paymentTypeValue | 200.00 | decimal | Amount in decimal format, cannot be empty |
| paymentTypeDescription | Mastercard | string | A descriptive text (max 255 characters) |
Item row fields
Fields marked with * are mandatory.| Field | Example | Type | Description |
|---|---|---|---|
| *type | PURCHASE | string | A line item can either be of type PURCHASE or RETURN |
| *sku | 12345-1 | string | Store keeping unit of the article |
| *articleName | Denim white | string | Article name |
| articleGroup | Jeans | string | The highest level of the article group categorization to segment on in Voyado |
| *quantity | 1 | integer | The number of units sold in the specific line item. If it is a RETURN then it must be a negative value. |
| *grossPaidPrice | 200.00 | decimal | The total price of units in the specific line item including VAT and the discount withdrawal |
| articleNumber | 12345 | string | Article number |
| awardsBonus | true | boolean | If the line item included for reward calculation or not. Default value is true if the field is not defined |
| taxAmount | 40.00 | decimal | The total VAT of the units in the line item. Default is 0 |
| taxPercent | 25.00 | decimal | The VAT percentage of the unit. Default is 0 |
| discount | -200.00 | decimal | Discount value in local currency. Should always be negative. Segmentation on discounts is possible in Voyado. Default is 0 |
| spare[1-10] | string | Additional data for the line item | |
| datespare[1-5] | 2020-09-06T15:55:54+01:00 | datetime | Additional datetime data for the line item |
| *header | 0 | bit | Must have value 0 if it is a line item row |

