docs

Promotion Effects

Feature Summary

The Promotions feature allows businesses to create targeted and flexible discounts applied directly to basket items. Whether through Automatic Discounts, Buy X Get Y, or Combo Deals, promotions help increase conversion, boost basket size, and tailor offers to specific Customer segments.

Promotions are managed through the SCAYLE Panel or Admin API and can be defined with specific scheduling, priorities, conditions (global and item-based), shop, country and Customer segments specific targeting, and combinability with other promotions. These configurations are evaluated in real-time by the Storefront API, ensuring promotions are applied only when all rules are satisfied.

Advanced views and condition builders use Google Common Expression Language (CEL) to allow fine-tuned logic. Promotions can coexist and stack with Price Campaigns and Vouchers, respecting defined combinability rules.

Supported Effects

Each promotion is assigned a so-called effect. An effect is the result of a promotion being applied to a specific item in the basket/order when all the conditions are satisfied. Effect can also be considered the “type” of the promotion:

Buy X get Y

A Buy X Get Y promotion is a type of conditional discount where a customer must purchase a certain number of qualifying items (X) to receive a discount on one or more additional items (Y). The discount on the Y items can be a percentage, a fixed amount, or completely free.

Examples

  • Buy two t-shirts and receive one pair of socks for free.
  • For every sneaker in the basket, you receive one care product for free.
  • Buy 2 quantities of the same item and receive 10% of discount on the third item

Learn more about Buy X Get Y.

Automatic discounts

When the promotion conditions are satisfied, the customer will receive a relative (e.g. 10%) or absolute (e.g. 10€) discount on specific items in the basket/order.

Examples

  • 10% off every sneaker in the basket.
  • 10€ off every item from a selected item set.

ℹ️ Discounting the cheapest or most expensive item

  • Cheapest item: Discounting the cheapest item is only supported within Buy X Get Y promotions (the discount is applied to the reward item with the lowest price). See Buy X Get Y.
  • Most expensive item: Discounting the most expensive item is only supported via advanced promotions using CEL expressions to target the item.

Learn more about Automatic Discounts.

Combo Deals

A Combo Deal promotion allows you to offer a set of specific items for a single, predefined price. The promotion is only applied if all required items in the combo are purchased together.

Example

Buy one Jeans and one t-shirt for 20 €.

Learn more about Combo Deals.

Free Shipping

A Free Shipping promotion enables a delivery free of charge for any condition you might want to set.

Example

Automatically get free shipping if you purchase adidas socks.

Create a Promotion Code that enables any user to get free shipping regardless of basket size, or any specific items.

Learn more about Free Shipping.

Architecture & Diagram flow

The diagram below shows how promotions are evaluated and applied across the order lifecycle, including the use of promotion codes during checkout:

  1. Promotions are created and managed in the SCAYLE Panel or via the Admin API.
  2. The Storefront API evaluates active promotions in real time against the basket/order, checking schedules, Customer segments, conditions, and combinability rules.
  3. Automatic promotions are applied as soon as their conditions are met — no customer input required.
  4. Promotion codes can be entered by the customer in the basket or during checkout. When a valid code is submitted, the linked promotion is evaluated against the basket and — if all conditions are met — applied alongside any active automatic promotions, respecting the configured combinability rules.
  5. The resulting discounts are reflected in the basket totals, the checkout summary, the order, and downstream artifacts such as invoices and confirmation emails.
Promotion architecture and evaluation flow, including promotion codes used in checkout.

Key Benefits

  • Flexible Discount Structures: Choose from multiple promotion types including automatic discounts, Buy X Get Y and Combo Deals
  • Customer Segment targeting: Apply promotions to specific customer groups for personalized marketing.
  • Item set building: Build a specific set of products to apply a promotion to / to be distributed as reward for a promotion.
  • Stackable Configurations: Combine promotions between each other, with price campaigns for complex discount strategies.
  • Automated Application: Promotions are applied automatically when conditions are met - end user input is not a must - though can be configured under promotion codes.
  • Efficient Management: Create, edit, activate, or deactivate promotions directly from the SCAYLE Panel and / or Admin API with ease.

Capabilities Overview

✔️ Supported

  • (Multi-) Shop, country, and Customer segment-level targeting
  • Manual or automated (via Admin API) creation, fetch validation and updates of promotions
    • Ability to create automatic and code-based promotions
    • Supported effects: Automatic Discounts, Buy X Get Y, Combo Deals, Free Shipping
    • Ability to define Tiered Discounts based on the customer's Minimum Order Value (MOV) for Automatic Discounts
    • Ability to create Price Campaigns and Flash Sales
  • Promotion combinability controls
  • Possibility to create Item Sets
  • Pro-rata distribution of discounts over items participating in the campaign available
  • Custom data fields and advanced conditions using CEL expressions
  • Duplicate promotions via SCAYLE Panel
  • Basket level free shipping.
    • A promotion that is applied in the full order can still be created and the discount amount will be distributed pro rata across all items present in the basket.

Currently, Promotion codes only support Automatic Discounts and Free Shipping.

❌ Not Supported

  • Mid-life promotion type change (you must create a new promotion for a different type)
  • Currency auto-conversion for fixed-value discounts (must configure per shop country)
  • Other basket level promotions
  • Basket-level money discounts are not supported. Basket level is used only for Free Shipping.

For an order-wide discount, use an item-level absolute discount with pro-rata distribution.

Understanding the Feature

Each promotion has a set of basic configurations, such as:

NameDescription
StateA promotion can be either active or inactive. Promotions in the state inactivate are not returned by the Storefront API, and are also not valid when applying them to items in a basket/order.
Supported EffectsCombo Deal, Buy X Get Y and Free Shipping.
NameEach promotion has a specific name, that you can freely choose. The name is not unique, so multiple promotions can have the same name.
PriorityPriority refers to the ranking of a promotion when compared to other promotions. SCAYLE Storefront applies promotions with lower numbers first. If you use your own storefront, your storefront decides the order in which promotions are applied. Use a unique number for each promotion. See Promotion Priority and Application Rules.
Display NameEach promotion can have a specific Display Name that is shown to the customer during checkout. You can also use it in email templates and invoices.
SchedulePeriod in which the promotion is valid. The Panel shows these times in Berlin time (CET/CEST); SCAYLE stores them in UTC.
CountriesIf a shop caters to many countries, you can set a promotion for a single or multiple countries within that shop.
Customer SegmentsDefines groups eligible for the promotion. You can pick from a specific segment, or select all segments
CombinableConfiguration which states whether the promotion can be combined with others and if so, with which ones. You can either include or exclude other promotions.
Combinability ScopeDetermines whether a promotion's combinability rules are evaluated per item (Item) or across the whole basket (Basket, the default). This lets you scope one promotion to specific items while still allowing it to combine with promotions that use the Basket combinability scope.
Promotion ConditionsConditions are special rules that must be satisfied in order for the promotion to be applied.
Custom DataCustom data represents a JSON object, that you can use freely to persist any data that you like.
Promotion Design (Panel only)You are able to customise the promotions design on Panel

Key Notes & Limitations

⚠️ No Currency Normalization for Absolute Discounts: A 10-unit discount set in Germany (EUR) will apply as 10 units in Poland (Zloty) too. Separate promotions must be created for each country.

⚠️ Promotion Type Is Immutable: Once a promotion is created, its type cannot be changed. To switch types, create a new promotion and disable the old one.

⚠️ Combinability Scope Defaults to Basket: Existing promotions are unaffected: combinability is evaluated exactly as before unless you explicitly set a promotion's Combinability Scope to Item.

Applicable Scenarios

Create Customer Segments - enables fine filtering of users that will take part of the promotionCustomer segments
Create Item sets - can simplify filtering of products that will take part on the promotionItem Sets
Set up an automatic discount with a fixed 10€ value on item level.Automatic Discount
Set up an 10% automatic discount on items upon usage of the code "10discount"Promotion Codes
Buy 3 Levi's Jeans and Get 15% on the cheapest item (with option to proportionally distribute discount)Buy X Get Y
Buy 3 Levi's Jeans and Get 20€ on the cheapest item (with option to proportionally distribute discount)Buy X Get Y
Buy 2 products from item set A and 1 product from item set B and get a 15% discount on the cheapest item (with option to proportionally distribute discount).Buy X Get Y
Buy 2 items from Item Set A for 30€.Combo deal
Offer 20% off selected products for VIP customers over the weekend. When you need a fast, temporary % discount on a specific set of products. Flash sales are visible only in the basket and checkout.Flash sales
Launch a summer sale across all shop countries with 15% off the entire women's collection, 10% off men's, and 20% off selected kids' items - active for one week. Price campaigns are visible in on product listing pages, product detail pages, basket and at checkout.Price Campaign
Get 10% discount when the basket reaches 100€, 15% when it reaches 250€, and 20% when it reaches 500€.Tiered Discount