Promotions file

Discounts applied at checkout: a percentage or an amount off, for everyone or for customers with a tag, between two dates if you want.

File name: Promotions.csv, Promotions_2026-11-01.json or Promotions-export.xml. The name starts with the record type, in any case, and anything after a _ or - is yours.

Required: PromoCode. Everything else may be left out or left blank.

Example

One complete record, in each format. All three import as the same record. The CSV is the sample file for promotions.

CSV
PromoCode,Title,Description,DiscountType,DiscountValue,MinOrderValue,AppliesTo,FreeDelivery,ValidFrom,ValidUntil,IsActive
WINTER10,10% off orders over 250,Ten per cent off any order of 250 or more before tax.,percentage,10,250,BAR,Yes,2026-12-01,2026-12-31,Yes
JSON
[
  {
    "id": "WINTER10",
    "title": "10% off orders over 250",
    "description": "Ten per cent off any order of 250 or more before tax.",
    "type": "percentage",
    "discount_value": 10,
    "min_order_value": 250,
    "applies_to": [
      "BAR"
    ],
    "free_delivery": true,
    "valid_from": "2026-12-01",
    "valid_until": "2026-12-31",
    "is_active": true
  }
]
XML
<?xml version="1.0" encoding="UTF-8"?>
<Feed>
  <Promotion>
    <id>WINTER10</id>
    <title>10% off orders over 250</title>
    <description>Ten per cent off any order of 250 or more before tax.</description>
    <type>percentage</type>
    <discount_value>10</discount_value>
    <min_order_value>250</min_order_value>
    <applies_to>BAR</applies_to>
    <free_delivery>Yes</free_delivery>
    <valid_from>2026-12-01</valid_from>
    <valid_until>2026-12-31</valid_until>
    <is_active>Yes</is_active>
  </Promotion>
</Feed>

In XML each record is a <Promotion> element; the element around them can be called anything.

Fields

PromoCode

Your code for the promotion.

CSV columnJSONXML
PromoCodeidid
  • Format: Text, matched exactly, capitals included.
  • Required: Yes.
  • Example: WINTER10

Title

The name reps see.

CSV columnJSONXML
Titletitletitle
  • Format: Text.
  • Required: No.
  • Example: 10% off orders over 250

Description

What it is, in a sentence.

CSV columnJSONXML
Descriptiondescriptiondescription
  • Format: Text.
  • Required: No.
  • Example: Ten per cent off any order of 250 or more before tax.

DiscountType

percentage for a percentage off, fixed for an amount off.

CSV columnJSONXML
DiscountTypetypetype
  • Format: Text.
  • Required: No.
  • Example: percentage
  • Tip: Read in any case, with spaces or underscores: Percent, fixed_amount and Fixed Amount all work.

DiscountValue

How much: 10 is 10% for a percentage, or 10.00 off for a fixed amount.

CSV columnJSONXML
DiscountValuediscount_valuediscount_value
  • Format: A number; decimals allowed.
  • Required: No.
  • Example: 10

MinOrderValue

The smallest order it applies to. 0 or blank for any.

CSV columnJSONXML
MinOrderValuemin_order_valuemin_order_value
  • Format: A number such as 9.99. A currency symbol, thousands separators and a decimal comma are read too.
  • Required: No.
  • Example: 250

AppliesTo

The customer tags it is for. Blank is for everyone.

CSV columnJSONXML
AppliesToapplies_toapplies_to
  • Format: Codes separated by |, each matched exactly. In JSON, a list.
  • Required: No.
  • Example: BAR

FreeDelivery

Yes to make delivery free with it.

CSV columnJSONXML
FreeDeliveryfree_deliveryfree_delivery
  • Format: Yes or no: see Yes and no below.
  • Required: No.
  • Example: Yes

ValidFrom

First day it applies. Blank means already started.

CSV columnJSONXML
ValidFromvalid_fromvalid_from
  • Format: A date. 2026-12-31 is always read; other shapes are in Dates.
  • Required: No.
  • Example: 2026-12-01

ValidUntil

Last day it applies, that day included. Blank means no end.

CSV columnJSONXML
ValidUntilvalid_untilvalid_until
  • Format: A date. 2026-12-31 is always read; other shapes are in Dates.
  • Required: No.
  • Example: 2026-12-31

IsActive

Yes to use it, No to switch it off.

CSV columnJSONXML
IsActiveis_activeis_active
  • Format: Yes or no: see Yes and no below.
  • Required: No.
  • Example: Yes

Rules for every field

  • A blank cell keeps what the tablet has, with Ignore blank cells on, as it ships. Switched off, a blank clears the field.
  • A column the file does not have always keeps what the tablet has, whatever that setting says.
  • A value that cannot be read, such as a date, number or yes/no in a shape the app does not know, stops that record importing. The sync log names the field and the value, and the record keeps what it had. A field whose tip says otherwise is the exception.
  • Column names are matched without case and ignoring surrounding spaces.

Yes and no

In any case:

  • Yes: true, t, yes, y, 1, -1, x, on, active, enabled
  • No: false, f, no, n, 0, off, inactive, disabled