Import field reference
The sample files are the quickest way to start: each one has a header row and an example record that imports as it is. This page explains every column in them.
Every column below is optional unless your own process needs it; a blank cell is left alone rather than overwriting what is already on the device. Column names are matched case-insensitively and ignoring surrounding spaces.
Which names to use
The three formats do not share names. A CSV file wants
ItemCode; the same field in JSON is sku and in XML is
SKU, inside a <Product> element. The XML paths below
write it as Item/SKU: only the part after the last /
has to match. Each entity below lists its CSV columns first,
then the JSON and XML equivalents, so start from the format
your system actually exports.
The example beside each column is taken from the sample file for it, which imports exactly as shipped. A blank example means the samples leave that column empty.
Price lists and quantity breaks
PriceLists and QtyBreaks hold several named values, and
most systems export those in a shape that does not fit one
cell. All three of these work, so you should not need to
reshape your export:
- One cell.
{"TRADE": 12.50, "WHOLESALE": 9.99}, or the shorterTRADE:12.50|WHOLESALE:9.99. - A column per price list. Name them all in the mapping,
separated by
|: aPriceListsmapping ofTrade|Wholesale|Palletreads those three columns and uses the names you typed as the price list names. - A row per price list. Repeat the item code on each row with one price list on it; they are combined into one item. Every other column takes its value from the last row.
A blank cell means that price list does not apply. A cell with something in it that cannot be read as a price stops that row importing and is reported, rather than the item arriving with no contract prices and nothing said.
If your export does not fit any of the above
Almost all do. When one genuinely does not (a price list whose name is in one column and its value in another, or one row that has to become several products), the app can reshape the file before reading it, so you do not have to change your ERP.
Settings › Data Integration › Import Profiles › Reshape Feed. You write a short Liquid template that rewrites the rows into any of the shapes on this page, and Validate shows you what it produces before you save it. Everything else on this page then applies as normal.
Leave it empty (as every profile ships) and your file is used exactly as it arrives.
Products
44 recognised columns in a CSV file.
| Column in your file | What goes in it | Example |
|---|---|---|
ItemCode | Your product code. A row with a code already on the tablet updates that product. | WH002 |
Barcode | The barcode number (EAN, UPC or your own). Scanning with the camera or a Bluetooth scanner finds the product by it. | 5012345678900 |
Brand | Brand name. | Example Cellars |
Manufacturer | Who makes it. | Example Wines Ltd |
MPN | The manufacturer’s own part number. | EC-RR-75 |
SupplierCode | Your supplier’s code for it. | SUP-EC |
ParentSKU | The ItemCode of the product this is a variant of, if any. | |
CountryOfOrigin | Where it was made: a country name or two-letter code. | ES |
Description | The product name reps see on the tile. Keep it short. | Rioja Reserva 75cl |
LongDescription | The full description on the product page. | Aged for three years in oak. |
CategoryPaths | The categories it belongs in. | WINE|WINE-RED |
BulletPoints | Key features, shown on the product page. | 75cl|13.5% ABV|Vegan |
Attributes | Name and value pairs for the specification table on the product page. | {"Region": "Rioja"} |
PriceLists | Contracted prices by price list. A customer whose PriceList is TRADE pays the TRADE price. | TRADE:11.50|WHOLESALE:9.99 |
PriceRRP | The list price everybody without a contract pays. | 15.99 |
PriceSale | A sale price, charged while IsOnSale is Yes. | 13.99 |
IsOnSale | Yes to charge PriceSale. | Yes |
Currency | The currency these prices are in, as a three-letter code such as GBP or EUR. | GBP |
CostPrice | What it costs you, kept for reference. | 8.20 |
PriceValidFrom | First day the sale price applies. Blank means already started. | 2026-11-01 |
PriceValidTo | Last day the sale price applies, that day included. Blank means no end. | 2026-12-31 |
TaxCode | The VAT code that sets its rate. | T1 |
MOQ | The fewest that can be ordered. | 6 |
OrderMultiple | Ordered in multiples of this, such as 6 for a case of six. | 6 |
MaxOrderQty | The most one order may take. | 600 |
QtyInner | Units in an inner pack. | 6 |
QtyOuter | Units in an outer case. | 12 |
QtyPallet | Units on a pallet. | 600 |
QtyBreaks | Volume prices: a lower price each from a quantity up. | 24:9.50|48:8.75 |
Weight | Weight of one unit, in kilograms. | 1.3 |
Dimensions | Size, written however you like. | 8 x 8 x 30 cm |
HazardousFlag | Yes if it is classed as hazardous. | No |
ShippingClass | Your own shipping class code, if you use one. | STANDARD |
StockQty | How many you have. | 240 |
IncomingQty | How many are on order from your supplier. | 120 |
AllowBackorder | Yes to let reps order it when stock runs out. | Yes |
IncomingDate | When the incoming stock is due. | 2026-12-01 |
RelatedSKUs | ItemCodes of products to suggest alongside this one. | WH001 |
SubstituteSKUs | ItemCodes to offer when this one is out of stock. | WH003 |
Status | Active, Coming Soon, Clearance or Discontinued, in any case. | Active |
DiscontinuedDate | When it was or will be discontinued. | |
WarrantyInfo | Warranty terms. | Replaced if faulty on delivery |
BatchLotTracking | Yes if it is tracked by batch or lot. | Yes |
CustomData | Anything else you want kept with the product. | {"Vintage": "2021"} |
Products in JSON or XML
The same fields, under different names. Do not use the CSV column names in a JSON or XML file: they will not be found, and every field will come through empty.
| CSV column | JSON property | XML path |
|---|---|---|
ItemCode | sku | Item/SKU |
Barcode | barcode | Item/Barcode |
Brand | brand | Item/Brand |
Manufacturer | manufacturer | Item/Manufacturer |
MPN | mpn | Item/MPN |
SupplierCode | supplier_code | Item/SupplierCode |
ParentSKU | parent_sku | Item/ParentSKU |
CountryOfOrigin | country_of_origin | Item/CountryOfOrigin |
Description | title | Item/Title |
LongDescription | description | Item/Desc |
CategoryPaths | categories | Item/Categories |
BulletPoints | bullets | Item/Bullets |
Attributes | attributes | Item/Attributes |
PriceLists | prices | Item/Prices |
PriceRRP | rrp | Item/RRP |
PriceSale | sale_price | Item/SalePrice |
IsOnSale | on_sale | Item/OnSale |
Currency | currency | Item/Currency |
CostPrice | cost_price | Item/CostPrice |
PriceValidFrom | price_valid_from | Item/PriceValidFrom |
PriceValidTo | price_valid_to | Item/PriceValidTo |
TaxCode | tax | Item/TaxCode |
MOQ | moq | Item/MOQ |
OrderMultiple | order_mult | Item/OrderMult |
MaxOrderQty | max_order_qty | Item/MaxOrderQty |
QtyInner | inner | Item/Inner |
QtyOuter | outer | Item/Outer |
QtyPallet | pallet | Item/Pallet |
QtyBreaks | qty_breaks | Item/QtyBreaks |
Weight | weight | Item/Weight |
Dimensions | dimensions | Item/Dimensions |
HazardousFlag | hazardous | Item/Hazardous |
ShippingClass | shipping_class | Item/ShippingClass |
StockQty | stock | Item/Stock |
IncomingQty | incoming | Item/Incoming |
AllowBackorder | backorder | Item/Backorder |
IncomingDate | incoming_date | Item/IncomingDate |
RelatedSKUs | related | Item/Related |
SubstituteSKUs | substitutes | Item/Substitutes |
Status | status | Item/Status |
DiscontinuedDate | discontinued_date | Item/DiscontinuedDate |
WarrantyInfo | warranty | Item/Warranty |
BatchLotTracking | batch_tracking | Item/BatchTracking |
CustomData | custom_data | Item/CustomData |
Customers
29 recognised columns in a CSV file.
| Column in your file | What goes in it | Example |
|---|---|---|
AccountId | Your account code. A row with a code already on the tablet updates that customer. | C1002 |
OriginalAccountId | For a customer a rep added on the tablet: the NEW- code it was sent out with. Blank otherwise. | |
CompanyName | The business name reps see. | Example Wine Bar Ltd |
ContactName | Who to ask for. | Alex Example |
Email | Email address. | buyer@example.com |
Phone | Phone number. | 01632 960002 |
Mobile | Mobile number. | 07700 900002 |
Website | Web address. | https://example.com |
VatRegistration | Their VAT number. | GB123456789 |
EoriNumber | Their EORI number, for exports. | GB123456789000 |
TaxCode | Blank for normal VAT. | |
PriceList | Which price list they pay, matching a name in the products PriceLists. Blank pays the list price. | TRADE |
Currency | The currency they buy in, as a three-letter code such as GBP or EUR. | GBP |
CreditLimit | Their credit limit, checked before an order is placed. | 5000.00 |
CreditBalance | What they owe you now. | 1250.50 |
AccountStatus | Active, or a status that warns the rep before they take an order. | Active |
CarriageCode | Your own carriage or delivery code for them. | CARR1 |
Tags | Labels for grouping customers. | BAR|PREMIUM |
Notes | Notes reps see on the account. | Deliveries before 10am only. |
CustomData | Anything else you want kept with the customer. | {"Route": "North"} |
ShippingAddresses | Their delivery addresses, each with name, line1, line2, city, county, postcode and country. | [{"name": "Warehouse", "line1": "Unit 4 Example Park", "city": "Anytown", "postcode": "AB1 3EF", "country": "GB"}] |
BillingName | Name on the billing address. | Example Wine Bar Ltd |
BillingLine1 | First line of the billing address. | 2 Market Square |
BillingLine2 | Second line. | Market Hall |
BillingCity | Town or city. | Anytown |
BillingCounty | County, state or region. | Exampleshire |
BillingPostcode | Postcode or ZIP. | AB1 2CG |
BillingCountry | Country name or two-letter code. | GB |
AssignedUserId | The UserId of the rep whose customer this is, from the users file. | REP01 |
Customers in JSON or XML
The same fields, under different names. Do not use the CSV column names in a JSON or XML file: they will not be found, and every field will come through empty.
| CSV column | JSON property | XML path |
|---|---|---|
AccountId | id | Customer/ID |
OriginalAccountId | original_id | Customer/OriginalID |
CompanyName | company | Customer/Company |
ContactName | contact | Customer/Contact |
Email | email | Customer/Email |
Phone | phone | Customer/Phone |
Mobile | mobile | Customer/Mobile |
Website | website | Customer/Website |
VatRegistration | vat | Customer/VAT |
EoriNumber | eori | Customer/EORI |
TaxCode | tax_code | Customer/TaxCode |
PriceList | price_tier | Customer/PriceTier |
Currency | currency | Customer/Currency |
CreditLimit | credit_limit | Customer/CreditLimit |
CreditBalance | balance | Customer/Balance |
AccountStatus | status | Customer/Status |
CarriageCode | carriage | Customer/Carriage |
Tags | tags | Customer/Tags |
Notes | notes | Customer/Notes |
CustomData | custom_data | Customer/CustomData |
ShippingAddresses | shipping | Customer/Shipping |
BillingName | billing.name | Customer/Billing/Name |
BillingLine1 | billing.line1 | Customer/Billing/Line1 |
BillingLine2 | billing.line2 | Customer/Billing/Line2 |
BillingCity | billing.city | Customer/Billing/City |
BillingCounty | billing.county | Customer/Billing/County |
BillingPostcode | billing.postcode | Customer/Billing/Postcode |
BillingCountry | billing.country | Customer/Billing/Country |
AssignedUserId | assigned_user_id | Customer/AssignedUserId |
Categories
6 recognised columns in a CSV file.
| Column in your file | What goes in it | Example |
|---|---|---|
CategoryId | Your category code, which products list in CategoryPaths. | WINE-RED |
ParentId | The CategoryId this sits inside. Blank for a top-level category. | WINE |
Title | The name reps see on the tile. | Red wine |
ImagePath | The file name of its picture in the Images folder. | WINE-RED.jpg |
SortOrder | Lower numbers show first. | 1 |
IsActive | Yes to show it, No to hide it. | Yes |
Categories in JSON or XML
The same fields, under different names. Do not use the CSV column names in a JSON or XML file: they will not be found, and every field will come through empty.
| CSV column | JSON property | XML path |
|---|---|---|
CategoryId | category_id | Category/CategoryId |
ParentId | parent_id | Category/ParentId |
Title | title | Category/Title |
ImagePath | image | Category/ImagePath |
SortOrder | sort_order | Category/SortOrder |
IsActive | is_active | Category/IsActive |
Promotions
11 recognised columns in a CSV file.
| Column in your file | What goes in it | Example |
|---|---|---|
PromoCode | Your code for the promotion. | WINTER10 |
Title | The name reps see. | 10% off orders over 250 |
Description | What it is, in a sentence. | Ten per cent off any order of 250 or more before tax. |
DiscountType | percentage for a percentage off, fixed for an amount off. | percentage |
DiscountValue | How much: 10 is 10% for a percentage, or 10.00 off for a fixed amount. | 10 |
MinOrderValue | The smallest order it applies to. 0 or blank for any. | 250 |
AppliesTo | The customer tags it is for. Blank is for everyone. | BAR |
FreeDelivery | Yes to make delivery free with it. | Yes |
ValidFrom | First day it applies. Blank means already started. | 2026-12-01 |
ValidUntil | Last day it applies, that day included. Blank means no end. | 2026-12-31 |
IsActive | Yes to use it, No to switch it off. | Yes |
Promotions in JSON or XML
The same fields, under different names. Do not use the CSV column names in a JSON or XML file: they will not be found, and every field will come through empty.
| CSV column | JSON property | XML path |
|---|---|---|
PromoCode | id | Promotion/id |
Title | title | Promotion/title |
Description | description | Promotion/description |
DiscountType | type | Promotion/type |
DiscountValue | discount_value | Promotion/discount_value |
MinOrderValue | min_order_value | Promotion/min_order_value |
AppliesTo | applies_to | Promotion/applies_to |
FreeDelivery | free_delivery | Promotion/free_delivery |
ValidFrom | valid_from | Promotion/valid_from |
ValidUntil | valid_until | Promotion/valid_until |
IsActive | is_active | Promotion/is_active |
Announcements
6 recognised columns in a CSV file.
| Column in your file | What goes in it | Example |
|---|---|---|
AnnouncementId | Your code for the message. | ANN001 |
Title | The heading reps see. | Christmas deliveries |
Message | The message itself. | The last delivery before Christmas is on 22 December. |
ValidFrom | First day it shows. Blank means now. | 2026-12-01 |
ValidUntil | Last day it shows, that day included. Blank means until removed. | 2026-12-22 |
IsActive | Yes to show it, No to hide it. | Yes |
Announcements in JSON or XML
The same fields, under different names. Do not use the CSV column names in a JSON or XML file: they will not be found, and every field will come through empty.
| CSV column | JSON property | XML path |
|---|---|---|
AnnouncementId | id | Announcement/id |
Title | title | Announcement/title |
Message | message | Announcement/message |
ValidFrom | date_posted | Announcement/date_posted |
ValidUntil | expires_at | Announcement/expires_at |
IsActive | is_active | Announcement/is_active |
DeliveryMethods
11 recognised columns in a CSV file.
| Column in your file | What goes in it | Example |
|---|---|---|
Code | Your code for the method. It goes out on every order that uses it. | PALLET |
Name | What reps and customers see at checkout. | Pallet delivery |
RateRule | How it charges: flat, free_over, weight_band or destination_band. | weight_band |
Rate | The charge. For a banded method, what is charged when no band matches. | 25.00 |
FreeOverValue | For free_over: orders at or above this are delivered free. | |
Bands | For weight_band, from-weight:charge in kilograms, such as 0:25.00|500:45.00. For destination_band, country:charge, such as GB:9.95|IE:19.95. | 0:25.00|500:45.00 |
LeadTimeDays | Working days to deliver. Blank shows no delivery date. | 5 |
CutOffTime | Orders placed after this time count from the next working day. Blank for no cut-off. | 12:00 |
TaxCode | Blank taxes delivery as the goods on the order are taxed. A code fixes its rate. | T1 |
SortOrder | Lower numbers show first. | 1 |
IsActive | Yes to offer it, No to withdraw it. | Yes |
DeliveryMethods in JSON or XML
The same fields, under different names. Do not use the CSV column names in a JSON or XML file: they will not be found, and every field will come through empty.
| CSV column | JSON property | XML path |
|---|---|---|
Code | code | DeliveryMethod/code |
Name | name | DeliveryMethod/name |
RateRule | rateRule | DeliveryMethod/rateRule |
Rate | rate | DeliveryMethod/rate |
FreeOverValue | freeOverValue | DeliveryMethod/freeOverValue |
Bands | bands | DeliveryMethod/bands |
LeadTimeDays | leadTimeDays | DeliveryMethod/leadTimeDays |
CutOffTime | cutOffTime | DeliveryMethod/cutOffTime |
TaxCode | taxCode | DeliveryMethod/taxCode |
SortOrder | sortOrder | DeliveryMethod/sortOrder |
IsActive | isActive | DeliveryMethod/isActive |
Users
7 recognised columns in a CSV file.
| Column in your file | What goes in it | Example |
|---|---|---|
UserId | Your code for the person, which AssignedUserId in the customers file refers to. | REP01 |
Name | Their name, recorded on every order they take. | Sam Example |
Email | Their email address. | sam@example.com |
Role | Admin or Rep. Admins can change the settings. | Rep |
PinCode | The four-digit PIN they sign in with. | 3907 |
BackupCodes | One-off codes for a forgotten PIN. | 739154|204861|551029|682304|918476 |
IsActive | Yes to let them sign in, No to stop them. | Yes |
Users in JSON or XML
The same fields, under different names. Do not use the CSV column names in a JSON or XML file: they will not be found, and every field will come through empty.
| CSV column | JSON property | XML path |
|---|---|---|
UserId | user_id | User/UserId |
Name | name | User/Name |
Email | email | User/Email |
Role | role | User/Role |
PinCode | pin_code | User/PinCode |
BackupCodes | backup_codes | User/BackupCodes |
IsActive | is_active | User/IsActive |