Create a Coupon (Personalized Offer)
This page covers the Legacy Engine, where a Coupon is the full promotional entity. For the new engine, see Create a Discount Campaign.
In the legacy engine, promotions are created as Coupons under Loyalty and Promotional engine β Coupons. The Coupon carries the commercial instructions for the POS: discount type, value, affectation, product scope, payment method conditions, validity, printing rules, and redemption limits.
How It Worksβ
A Coupon bundles the offer definition (discount type, value, product scope), the code generation strategy, and the redemption rules into a single entity:
- You define the discount type, value, affectation, payment method rules, and product scope.
- You choose a code strategy: a shared static code (massive) or unique per-Customer codes.
- The coupon is assigned to a campaign or distributed via Targeted Delivery.
- At POS or checkout, the Customer presents their code.
- Loyal Guru validates ownership, expiry, redemption status, and coupon scope.
- The POS applies the final discount to the cart according to the Coupon fields. In the legacy engine, Loyal Guru validates the Voucher; the POS is responsible for price calculation and line modification.
No mass or club campaigns in the legacy engine
Every Coupon must be delivered to a specific Customer or group of Customers. You cannot apply a discount automatically to all Customers or all loyalty members without distributing codes. For that capability, upgrade to the new engine.
Configurationβ
Go to Loyalty and Promotional engine β Coupons β Create New Coupon in the Owner App.
Step 1: Basic Infoβ
| Field | Description |
|---|---|
| Image | Optional image displayed for the coupon inside Loyal Guru and in omnichannel communications |
| ID | Optional custom numeric ID. If left blank, the database assigns a unique ID automatically |
| Name | Internal name for the coupon β the only required field |
| Description | Optional text describing the coupon's mechanic |
| Languages | Configure the coupon name and description in multiple languages |
Multilingual character encoding
When using the multi-language feature, certain characters must be replaced with their XML equivalents: & β &, < β <, > β >, ' β ', " β ".
Step 2: Discount Definitionβ
Coupon Typesβ
The legacy engine supports several structural discount types. Select one or leave blank for a standard discount:
| Coupon Type | Description |
|---|---|
| 2x1 (NxN) | Customer buys 2 units of the same category and gets 1 free |
| 2x1 (NxM) | Customer buys 1 unit of category A and receives 1 unit of a different category B free |
| 3x2 (NxN) | Customer buys 3 units of the same category and pays for 2 |
| 3x2 (NxM) | Customer buys 2 units of category A and receives 1 unit of category B free |
| 2nd unit at X% | Customer buys 2 units of the same category; the second unit gets X% off |
| Discount by minimum units | Applies a fixed currency discount when the Customer buys a minimum number of units (e.g., buy 3 pizzas, get β¬5 off) |
| (none selected) | Standard discount β configure type, value, and affectation manually (see below) |
NxN vs NxM
NxN = same product category for both "buy" and "receive". NxM = different product categories. Product categories must be configured in advance.
Standard Discount Fields (when no coupon type is selected)β
| Field | Description |
|---|---|
| Discount type | Percentage, Fixed amount (β¬/$), or Points β award loyalty points as the discount value |
| Discount | The numeric value of the discount |
| Affectation | Scope that tells the POS what the coupon applies to: full cart/activity, product category/attribute, or product when enabled |
| Product Category | Visible when Affectation = Product category / attribute |
| Product IDs | Visible when Affectation = Product |
| Accumulative | Whether this coupon can stack with other active promotions |
Affectation Fieldsβ
| Field | Description |
|---|---|
| Affectation: cart / activity | The coupon applies to the full cart, subject to minimum/maximum money or units |
| Affectation: product category / attribute | The coupon applies only to selected product categories or attributes |
| Affectation: product | The coupon applies to selected product IDs, when the company has product affectation enabled |
| Applies to | For coupon types such as NxN / NxM, defines whether the benefit applies to the purchased item itself or to a different received product/category |
| You buy | Purchased product/category required by the coupon mechanic |
| You receive | Product/category that receives the benefit in NxM-style coupons |
| Excluded products / categories | Products or categories excluded from coupon application |
Payment Method Fieldsβ
Payment method fields let a Coupon behave differently when the Customer pays with specific payment methods or payment method categories. The POS must use these fields when applying the final discount.
| Field | Description |
|---|---|
| Add payment methods | Enables payment-method-specific configuration |
| Payment methods | Specific payment methods eligible for the coupon rule |
| Payment method categories 1 / 2 | Payment method category levels used to group eligible methods |
| Payment method discount type | Discount type applied for the selected payment method scope |
| Payment method discount | Discount value applied for the selected payment method scope |
Auto-Redeemβ
When Auto-Redeem is enabled, the Coupon is applied automatically without any Customer action. This flag only takes effect for Customers integrated via the API.
Step 3: Award Pointsβ
You can award loyalty points to a Customer when they redeem a Coupon β in addition to or instead of a monetary discount. Enable the Add reward points checkbox to reveal:
| Field | Description |
|---|---|
| Points | Integer number of loyalty points the Customer receives upon redemption |
| Points money | Monetary equivalent of those points (accepts decimals) |
Example use case: "Make a purchase of minimum β¬50 and receive 100 Loyalty Points." Create a coupon with no monetary discount but with 100 points in the Award Points section.
Step 4: Availabilityβ
| Field | Description |
|---|---|
| Available from | Date from which the coupon can be used |
| Available to | Expiry date |
| Days after emission | How many days after campaign delivery the coupon remains available (counted from delivery date, not campaign start) |
| Available delay days | Delay after emission before the coupon becomes redeemable |
| Priority | Numeric printing priority β used to sort which coupon prints first at POS. Higher priority prints first; ties broken by earliest expiry date |
| Store Categories | Restrict redemption to specific store category groups |
| Stores | Restrict redemption to specific individual stores |
Priority rules
Printing priority is determined in order: (1) campaign category priority, (2) coupon priority, (3) earliest expiry date as a tiebreaker.
Step 5: Print Configurationβ
| Field | Description |
|---|---|
| Printable | Toggle whether the coupon can be printed at POS |
| Print from | Start date for printing availability |
| Print to | End date for printing availability |
| Print days | Relative number of days the coupon remains printable after emission |
| Print delay days | Delay after emission before the coupon can be printed |
Use fixed dates when all delivered Vouchers should share the same calendar window. Use relative day fields when each Voucher should calculate availability or printability from its own emission date.
Step 6: Redemption Conditionsβ
Define conditions the Customer must meet to redeem the Coupon:
| Field | Description |
|---|---|
| Minimum money | Minimum cart value required for the coupon to apply |
| Maximum money | Maximum discount value that can be applied in a single transaction |
| Minimum units | Minimum number of qualifying product units in the cart |
| Maximum units | Maximum number of units to which the discount applies |
Step 7: Predictionβ
Provide estimated redemption forecasts based on historical experience. These values feed into campaign plan forecasting.
If you later modify these values from the Plans Creation process, the original coupon values are preserved β the coupon always keeps the values defined at creation time.
Step 8: Third-Party Fundedβ
Indicate whether this coupon (or the campaign) is sponsored by a partner (e.g., a product supplier). This is used for cost attribution and ROI tracking by partner.
Delivering a Coupon to a Specific Customerβ
In addition to bulk campaign delivery, you can deliver a Coupon manually to an individual Customer:
- Go to the Customer profile.
- Click the Vouchers section.
- Select a coupon from the list and click Deliver.
Delivery date matters for availability window
Manual deliveries use the same range-of-days window as campaign deliveries, but the window starts from the manual delivery date β not the campaign start date. A coupon delivered manually two days after a campaign launch will be valid two days longer than campaign-delivered vouchers (same duration, different start date).
Editing After Deliveryβ
Legacy Coupon sends keep a historical version of the Coupon used at execution time. This is important for support: a Customer who received a Voucher should be evaluated against the Coupon version delivered to them, not against an unrelated future campaign setup.
| Area | What to expect |
|---|---|
| Original Coupon | Can be edited for future deliveries, but support should not assume those edits rewrite old Campaign History records |
| Coupon History | Represents the Coupon version used by a specific send and is linked from the campaign history |
| Voucher validity | Comes from the Coupon availability fields: fixed dates or relative days after emission |
| Price application | The POS applies the final discount using the Coupon fields. Loyal Guru validates the Voucher and redemption status |
| Issued Vouchers | Can be canceled or reprinted from the campaign history tools when permissions allow |
Import and Exportβ
Coupons can be imported in bulk via CSV. Download the template from the Coupons list page β it includes all coupon type fields. Exports from the list also include coupon type details for reporting.