Coupons
Build percentage, fixed-amount, free-shipping, and BOGO discount codes, control who can use them and when, and track redemptions.
A well-timed discount can be the difference between an abandoned cart and a completed sale. The Coupons screen lets you build a promotion in a couple of minutes and see exactly how much it earned you.
Go to Marketing → Coupons.
What you get
- Four discount types — percentage off, fixed amount off, free shipping, or Buy 1 Get 1 (BOGO).
- Usage controls — a minimum spend, a total redemption cap, and a per-customer cap, all optional.
- An active window — a start and end date; the code switches itself on and off, no manual action needed.
- Vendor scoping (marketplace stores) — tie a coupon to one vendor's products or make it storewide.
- Live KPIs — active coupons, total redemptions, and total discount given to date, updated as customers redeem.
The discount types
| Type | What it does | Best for |
|---|---|---|
| Percentage off | Knocks a percentage off the basket — 10%, 20%, 50% | Clearances, seasonal pushes, new-customer welcome codes |
| Fixed amount off | Deducts a flat currency amount from the order total | Rewarding high-spend customers, e.g. "₹200 off orders above ₹1,500" |
| Free shipping | Removes the shipping charge entirely | One of the highest-converting incentives in online retail |
| Buy 1 Get 1 (BOGO) | Labelled "Buy 1 get 1" in the discount-type picker, described as "Free item when condition is met" | Clearing slow-moving stock, driving up basket size |
BOGO's backend support is unclear
BOGO appears as a selectable discount type — with its own filter chip and row colour in your coupon list — only in the newer dedicated coupon editor. It still asks you to enter a plain discount value the same way percentage/fixed-amount codes do, with no separate "buy X, get Y" quantity configuration. Treat it as new and unproven: save a test BOGO coupon and check it behaves as expected at checkout before relying on it for a live promotion.
Building a coupon
Start a new coupon
From the Coupons screen, click New coupon. This opens a dedicated coupon editor.
Set the code
Type a memorable code — something like WELCOME20 — or click Generate to get a random
code automatically. Codes are automatically uppercased and stripped of spaces. Once a coupon is
saved, its code cannot be changed. In the dedicated coupon editor, a status label next to the field
updates as you type: checking…, then available or code already in use — fix the code
before saving if it comes back taken.
Choose the discount type and value
Pick % off, ₹ off, Free shipping, or Buy 1 get 1. For all but free shipping, enter the discount value (a percentage can't exceed 100%).
Set spend and usage limits
- Minimum order value — only apply the discount once the basket crosses a threshold, protecting your margins on small orders.
- Total usage limit — cap how many times the code can be redeemed overall (e.g. first 200 uses).
- Limit per customer — cap how many times one customer can reuse the code (leave blank for unlimited).
Set the active window
Pick a start date and an end date. Both must be today or later — the platform won't let you schedule a coupon into the past. The code activates and expires automatically at those dates.
Choose whether to promote it on the storefront
Turn on Show on storefront to make an eligible coupon available through the storefront's public coupons API. Then enter an optional Storefront title (up to 120 characters) and Storefront description. These two fields stay disabled until the storefront switch is on. They are customer-facing promotion copy; the coupon code, discount, and eligibility rules still come from the coupon itself. This switch does not add the coupon to a storefront section.
Scope the coupon (marketplace stores only)
If you run a multi-vendor marketplace, store-level admins can scope a coupon to Storewide or to one specific vendor. Vendor users don't see this control — their coupons are scoped to their own products automatically.
Save
Click Save. The coupon appears in your coupon list immediately, active if its start date has already arrived.
Turning Show on storefront off again removes the storefront title and description when you save. Coupons created before this control was added remain private until you opt them in. In the coupon list, an opted-in coupon has an On storefront indicator.
Coming later
Offer cards that list your promoted coupons automatically are coming in a later release.
Why don't customers see this coupon?
Show on storefront does not place a coupon card on a page. Add a /cart?coupon=CODE promotion
link to a button or banner, replacing CODE with the saved coupon code. For the public coupons API,
also check that Show on storefront is on, the coupon is enabled, its start time has arrived, its
end time has not passed, and its total usage limit has not been reached. Scheduled, expired,
exhausted, disabled, and storefront-private coupons are omitted from that feed.
Promote a coupon with a cart link
Use /cart?coupon=CODE as the destination for any button or banner link, replacing CODE with the
saved coupon code. When a customer follows the link, the cart reads and applies the code after the
cart is ready. If the code is invalid or the cart is not eligible, the cart stays usable and shows
an inline error that the customer can dismiss.
For custom storefront integrations, GET /api/v1/customer/public/coupons returns only currently
eligible, opted-in coupons and their customer-safe presentation fields. Custom renderer hosts can
send Apply through onApplyCoupon, copy through onCopyCouponCode, or dispatch the
bb:apply-coupon event; these integration hooks do not create a coupon section by themselves.
Fields you'll see but that aren't saved yet
The coupon editor also shows a description field, a maximum discount cap, a product/category scope selector, and a customer-eligibility selector (all customers / new customers / segments). These are visible in the form but are not yet sent to the server when you save — treat them as not-yet-persisted rather than working restrictions.
Your coupon list
The list shows every coupon with its code, type, current value, a usage bar (redeemed vs. limit), its active window, and its status (Active, Scheduled, Expired, or Disabled). Use the tabs to jump straight to one status, or the search box and type filter to narrow a long list. Store-level admins on a marketplace also see a scope column showing which vendor (or "storewide") each coupon belongs to, plus a separate Coupon Scope filter dropdown — All scopes, Store-wide only, or Vendor-specific only — that narrows the whole list instead of just labelling each row.
Click a coupon's code to copy it. Click anywhere else on the row to open a read-only detail view showing its full conditions, validity countdown, and recent redemptions (who used it, on which order, and how much they saved).
Editing, pausing, and deleting
Open a coupon's row menu to:
- Edit — opens the same editor you used to create it, pre-filled.
- Enable / Disable — pause a coupon without deleting it; it stops applying at checkout until re-enabled.
- Delete — removes the coupon permanently.
You can also select multiple coupons with the checkboxes and enable, disable, or delete them in bulk from the bar that appears above the list.
Duplicate isn't wired up yet
The row menu also shows a Duplicate option. Clicking it currently only shows a "coming soon" message — it does not create a copy of the coupon. To reuse a coupon's settings today, open it and manually re-enter the same values under a new code.
Export doesn't produce a file
The export CSV button in the masthead shows a "Coupons ledger exported" success message, but no file is actually generated or downloaded. Don't rely on it to pull your coupon list into a spreadsheet — for now, copy the figures you need from the screen directly.
Coupon analytics at a glance
On the new admin the top of the Coupons screen shows four tiles, and the line under the title summarises the same figures. They update as customers redeem your codes:
- Active Coupons — how many coupons are live right now: switched on, already started, and not yet past their end date. When the whole list is loaded, a sub-line adds how many more are scheduled.
- Total Redemptions — total redemptions across every coupon, all time.
- Discount Given — the cumulative discount you have given out, all time. The title line says the same: N active · ₹X discounts given to date. It is a lifetime total, not a monthly one.
- Avg Discount / Order — Discount Given divided by Total Redemptions. It shows a dash and no redemptions yet until the first redemption.
Use these to judge whether a promotion is earning you more in incremental sales than it costs you in margin.
The tab counts on a long coupon list (new admin)
The new Coupons screen asks the server for one page of coupons, the first 10, and does not show a pager. The tabs (all, active, scheduled, expired, disabled), the search box, and the type filter then work on those loaded coupons. The tab counts therefore show a number only when it is a true store-wide figure, rather than guessing from the loaded rows:
| Tab or tile | When all your coupons are on the loaded page | When you have more coupons than the loaded page |
|---|---|---|
| all | Number of coupons loaded | Store-wide total reported by the list |
| active and the Active Coupons tile | Counted from the coupons | The store-wide active figure from the coupon stats |
| scheduled, expired, disabled | Counted from the coupons | No number is shown on the tab |
When the list is too long to load whole, the Active Coupons tile also drops its scheduled sub-line, because that number would be a page count too.
Why does a coupon tab show no number, or why can't I find a coupon?
Your store has more than 10 coupons. A missing number on scheduled, expired, or disabled means that count cannot be stated store-wide, and the tabs still filter the loaded coupons correctly. The same limit applies to search and the type filter in the new admin: they search only the coupons that were loaded, so an older coupon outside that first page will not appear. Disable or delete expired coupons you no longer need to keep the loaded page useful, or open the coupon from a link you already hold. If the Active Coupons tile and the number of active rows you can see differ, trust the tile: it counts every coupon in the store. The classic admin lists coupons in its own table and is not covered here.
Plan limits
Higher-tier plans unlock more simultaneously active coupons. If you're near your plan's limit, a hint bar above the list shows how many you've used and links to Billing to upgrade. Coupons that exceed your plan's limit show a locked status until you upgrade or disable others.
Next steps
- SEO, GEO & AI-Engine Optimisation — get found by shoppers before you need a coupon to convert them.
- Plans & Billing — check or change your coupon limit.