Coupons
Navigate to yStore → Marketing → Coupons.
Coupons let customers apply discount codes at checkout. yStore's coupon system supports single fixed codes, dynamically generated batch codes, multiple discount types, granular eligibility conditions, stacking rules, and priority ordering — everything you need to run structured promotional campaigns.
Coupon types
- Specific Code
- Dynamic Codes
A single, fixed code that any eligible customer can use — for example SUMMER20.
Best for:
- Public campaigns shared on social media or newsletters
- Seasonal promotions (Black Friday, Easter sale)
- Partner or affiliate codes
The code is entered exactly as configured — uppercase/lowercase matching depends on your settings.
A batch of unique, auto-generated codes — one per customer or one per use. The codes cannot be shared or reused.
Best for:
- Personalised codes sent via automation flows (abandoned cart, loyalty rewards)
- One-time-use codes that prevent sharing
- Bulk code exports for affiliate or partner campaigns
When creating a dynamic coupon you configure:
| Field | Description |
|---|---|
| Code format | Character set: alphanumeric, numeric, alpha-only, or custom charset |
| Length | Number of characters in each code |
| Prefix | Optional text prepended to each code, e.g. VIP- → VIP-A3X9Q1 |
| Suffix | Optional text appended to each code |
| Quantity | How many codes to generate in this batch |
| Per-customer limit | Whether one customer can receive more than one code from this batch |
Discount types
| Type | How it works | Example |
|---|---|---|
| Percentage off | Reduces the order subtotal by a percentage | 20% off → €100 order becomes €80 |
| Fixed amount off | Reduces the order subtotal by a fixed value | €10 off → €100 order becomes €90 |
| Free shipping | Removes the shipping cost entirely | Any shipping method, any cart |
| Fixed product price | Sets one or more specific products to a fixed price | Any hoodie for €29 regardless of original price |
The Free shipping discount type removes shipping at checkout on any active method. Shipping Rules control which methods appear. You can combine both — use a shipping rule to expose a "Free Shipping" method, and a coupon to waive the cost on an existing method.
Validity and usage limits
| Field | Description | Notes |
|---|---|---|
| Valid from | Date the coupon becomes active | Leave blank to start immediately |
| Valid to | Expiry date | Leave blank for no expiry |
| Total usage limit | Maximum total redemptions across all customers | Leave blank for unlimited |
| Per-customer limit | Maximum times a single customer can use this coupon | Leave blank for unlimited |
| Minimum order total | Order must be at least this value | Applied before the discount |
| Maximum order total | Order must be at most this value | Useful for budget-capping high-value offers |
If you set both minimum and maximum order totals, make sure the maximum is higher than the minimum. yStore will warn you, but double-check before publishing.
Eligibility conditions
Conditions narrow down who can use the coupon and under what circumstances. All active conditions must be met simultaneously.
| Condition | Description |
|---|---|
| Specific products | Coupon only applies when one or more specified products are in the cart |
| Specific categories | Coupon only applies to products from specified categories |
| Customer group | Only customers in a specific group can redeem the coupon |
| First order only | Valid only for a customer's first purchase — blocked on repeat orders |
| Specific payment method | Coupon applies only when a particular payment method is selected at checkout |
| Specific shipping method | Coupon applies only when a particular shipping method is selected |
| Site scope | Restrict the coupon to one or more sites in a multi-site setup |
All conditions on a coupon must be true at the same time. To create an "either/or" condition (e.g., valid for Category A or Category B), create a separate coupon for each case, or use the Product condition which supports multiple product selections.
Stacking and exclusivity
These settings control how a coupon interacts with other coupons and promotions on the same order.
| Setting | Description |
|---|---|
| Stacking | When enabled, this coupon can be combined with other coupons applied to the same order. When disabled, only one coupon can be active at a time. |
| Exclusivity | Marks this coupon as exclusive — it cannot be combined with any other active coupon or promotion, even if those promotions have stacking enabled. |
| Priority | Numeric value — higher priority = evaluated first. Matters for percentage discounts where the application order affects the final total. |
Typical configurations:
| Scenario | Stacking | Exclusivity | Priority |
|---|---|---|---|
| Normal store coupon | Off | Off | 10 |
| High-value VIP offer (no stacking) | Off | On | 100 |
| Loyalty coupon that stacks with sale prices | On | Off | 5 |
| Black Friday exclusive (nothing else applies) | Off | On | 999 |
Creating a coupon
- Go to
yStore → Marketing → Coupons. - Click New Coupon.
- Enter a campaign name — internal label, not visible to customers.
- Select the coupon type: Specific or Dynamic.
- Enter the code (Specific) or configure format, length, prefix, and quantity (Dynamic).
- Select the discount type and enter the discount value.
- Set validity dates and usage limits under the Validity tab.
- Add eligibility conditions under the Conditions tab.
- Configure stacking, exclusivity, and priority under the Advanced tab.
- Save and test in a checkout session.
Before publishing, apply the coupon in a real test checkout:
- Verify the discount calculates correctly
- Confirm conditions are enforced (try with a product outside the eligible set)
- Test the edge cases: second coupon, order just below the minimum, expired date
Pre-launch checklist
- Campaign name is descriptive enough for your team to identify it later
- Expiry date matches the campaign schedule
- Usage limits prevent over-redemption
- Minimum/maximum order totals are set correctly relative to each other
- Priority is set correctly relative to other active coupons
- Stacking and exclusivity are intentionally configured — the defaults may not match your intent
- For Dynamic codes: batch quantity is large enough for the expected audience
- Tested in a real checkout before activating
Coupon codes in automation flows
Dynamic coupon codes integrate directly with the Flow Manager. Use the Create Coupon action in a flow to generate a unique code from a coupon template and attach it to a customer automatically.
Common flow use cases:
| Flow trigger | Coupon action |
|---|---|
| Cart abandoned | Generate a 5% recovery coupon and email it to the customer |
| Customer first order | Generate a loyalty coupon for the next purchase |
| Newsletter subscribed | Generate a welcome coupon for the first order |
| Customer moved to VIP group | Generate an exclusive VIP discount code |
See Flow Manager for details on building flows.
Viewing and managing codes
On the coupon list, click any coupon name to open it. The Codes tab shows:
| Column | Description |
|---|---|
| Code | The coupon code string |
| Used | How many times this specific code has been redeemed |
| Last used | Most recent redemption timestamp |
| Customer | Customer who last used this code (for dynamic codes) |
| Status | Active / Expired / Disabled |
You can export the code list as CSV for bulk campaigns.
Coupon analytics
The coupon list shows at a glance:
- Total redemptions for each coupon campaign
- Revenue generated from orders where the coupon was applied
- Unique customers who have used the coupon
Use this data to evaluate which campaigns drive real conversions vs. which are over-redeemed without meaningful revenue.