The promotion
The General tab of a promotion holds what applies to all its rules.
| Field | What it does |
|---|---|
| Title, code, description | How the promotion is named in the back office and in the basket |
| Status | Draft (saved, not applied), Published (applied by the pricing service), Unpublished |
| From / Until | The period of purchase during which the promotion applies |
| Priority | The order of evaluation: the highest runs first |
| Promotion codes | The codes the customer must enter (several, separated by spaces, commas or semicolons). Without a code, the promotion applies on its own |
| Trigger | No limit; Once per customer; Limited number: a maximum number of orders and/or a maximum total discount amount (the promotion stops once reached); Vouchers: one of the codes of a voucher campaign; Referral |
| Combinable with other promotions | Whether other promotions may apply to the same basket |
| Discount the selling price | The discount applies to the selling price of the lines |
| Commission on the discounted price | Resellers’ commissions are computed on the price after discount |
| Scope | Business line, market, country, language: the promotion only applies to baskets of that scope |
Rules
The Rules tab holds one or more rules. A rule has:
- Conditions (all must match): each condition must be true for the basket;
- Effects: what the rule does to the basket when all its conditions match.
A promotion needs at least one rule, and each rule at least one effect.
Conditions
| Condition | Matches when… | Example |
|---|---|---|
Basket amount (BasketAmount) |
the basket total compares with an amount | basket ≥ €150 |
Number of lines (BasketLine) |
the number of lines compares with a value | at least 3 lines |
Offers (Offer) |
the basket holds all the offers of a list, or at least one, each in its quantity | sofa AND armchair |
Offer quantity, offer type (OfferQuantity, OfferType) |
an offer is in the basket in a quantity, or of a type | 2 mattresses |
Product, product code (Product, ProdID) |
a product is in the basket in a quantity | product P × 2 |
Product filters, product group (ProductFilters, ProductGroup) |
lines matching attributes, or a group of products | any product of the “Oslo” collection |
Bundle quantity (BundleProductQuantity) |
the quantity of products of a bundle | 3 items of the bundle |
Payment (PaymentDetail) |
the payment method (and its amount) | paid by card |
Delivery (DeliveryDetail) |
the delivery method | home delivery |
Application, platform, shop (Application, Platform, Shop) |
where the basket comes from | the mobile app; shop 042 |
Days and hours (Frequency) |
the day of the week and the time of the purchase | Saturday and Sunday, 9:00–12:00 |
Loyalty tier (LoyaltyTiers) |
the customer’s loyalty programme and tier | Gold tier |
Birthday (Birthday) |
the customer’s birthday period | the birthday month |
Last purchase (LastPurchase) |
the time since the customer’s last purchase | no purchase for 6 months |
Referees (ReferralProgramReferees) |
the number of customers the customer referred | at least 3 referees |
Customer attributes, offer attributes (ContactAttributes, CustomerCustomData, OfferCustomData) |
an attribute of the customer or of the offer | customer segment = B2B |
Subscription type, subscription preference (SubscriptionType, SubscriptionPreference) |
the customer’s subscription, or how they pay it | annual payment |
Effects
| Effect | What it does | Example |
|---|---|---|
Basket discount (BasketDiscountPercent, BasketDiscountAmount) |
a percentage or an amount off the basket, on all lines or filtered ones, optionally per spending tier | −10% on the basket; −€50 per €500 |
Line discount (LineDiscountPercent, LineDiscountAmount, SetDiscountLine) |
a discount on each eligible line | −15% on each Oslo line |
Set price (SetPrice) |
a fixed price for products | Oslo armchair at €299 |
Cheapest / most expensive item (TheCheapestPercent, TheMostExpensive) |
a percentage off the cheapest (or dearest) eligible item, every Nth item | 2nd at −50%; 3rd free |
Grouped products (GroupDiscountPercent) |
a different discount per group when the whole group is in the basket | sofa −15%, armchair −20% |
Add a product (AddProd, AddSynchronizedProduct) |
adds an offer to the basket, free or discounted | a free cushion |
Fees (SetFees, FeeDiscountAmount, FeeDiscountPercent) |
sets, discounts or waives delivery and service fees, by delivery method or zone | free delivery |
Offer, product, subscription discount (OfferDiscount…, ProductDiscount…, SubscriptionPercent, SubscriptionAmount) |
a discount targeted at given offers, products or the subscription | −15% on the annual subscription |
Voucher discount (VoucherDiscount) |
the amount carried by the voucher used | a €20 gift voucher |
Referrer discount (ReferrerDiscount) |
a reward for the referrer | €10 for the referrer |
Deferred voucher, deferred e-mail (DeferredVoucher, DeferredEmailTemplate) |
issues a code of a campaign after the order, and can send it by e-mail | a −25% code for the next order |
Commission (CommissionAmount, CommissionPercent) |
a reseller commission | 8% of the price |
Options available on effects:
- Credit the wallet: the benefit goes to the customer’s wallet instead of reducing the price;
- Reverse price: the value raises the price instead of lowering it (a surcharge);
- Loyalty code: links the benefit to a loyalty programme;
- automatic (add a product, discounts): the line is added, or the discount applied, without the customer asking for it.
Priority and combining
Each rule is evaluated by the priority of its promotion, the highest first. A promotion that is not combinable applies alone; combinable ones add up. Fees are computed before the other effects, and commissions are recalculated after each discount.
Codes and voucher campaigns
- Promotion codes (General tab): shared codes the customer enters; a promotion can have several.
- Voucher campaigns (Marketing › Voucher campaigns), linked to a promotion with the Vouchers trigger:
- Uses per voucher (1 for single-use codes) and Capacity (uses across the campaign);
- Code prefix, Code length and Excluded characters (for instance
0,O,1,I); - One per customer: each voucher is bound to one customer;
- a validity in dates or in days.
- Generate vouchers: a batch of a given quantity is generated in the background, by the million if needed (about 1,000 codes per second by default). The batch counts show the vouchers created, valid, burned, expired and exported.
- Export the vouchers (CSV) for your partners, Burn the batch, or Find a voucher by its code to check or burn it.
- During checkout, a voucher is reserved for a few minutes, so that the last available voucher goes to one buyer only.
Testing and publishing
- Simulation tab: add sample baskets (offers, quantities, a promo code), then Simulate. Each basket is priced with the live promotions and with this one added, even as a draft; the result shows the baskets affected, the change of the total to pay, the discount and the promotions applied. Save the promotion before simulating.
- Publish makes the promotion live. The pricing service reloads its rules every 15 minutes; Apply now reloads them at once.
- Through the API, the pricing service can also say why a promotion did not apply (condition by condition), and suggest the promotions the basket is one condition away from.


