Discounts
The Discounts tool creates real Shopify discounts — codes or automatic — with guardrails the native editor doesn’t have. The philosophy: an offer shouldn’t just say what it gives; it should state the most it is ever allowed to give.
Open Discounts in the app nav. The page has two tabs — Discounts (this page) and Bulk codes (its own chapter).
The discounts list
Section titled “The discounts list”Each row shows the code (or the title, for automatic discounts), its Method (Code / Automatic), and a status badge — Active, Scheduled (start date in the future), or Expired. Search by title or code, and use the row menu to Edit, Activate/Deactivate, or Delete. Deleting is permanent — the confirmation says so, believe it.
Create discount opens the editor. Everything below is the editor, in the order you’ll see it.
Choose Code (customer types it at checkout — enter your own or hit Generate for a random one) or Automatic (applies by itself when its conditions are met; you give it a title customers see in their cart). The type is fixed once the discount is created.
Margin Protection — SafeGuards
Section titled “Margin Protection — SafeGuards”Right next to the name sits the SafeGuards panel — protections that apply to the whole discount:
| Guard | What it does | Default |
|---|---|---|
| Skip on-sale items | Products with a compare-at price above their current price never receive this discount. | On |
| Skip gift cards | Gift card products never receive this discount. | On |
| Cap total discount amount | A hard ceiling (Max amount) on everything this discount gives across the whole order. If the offer’s parts would add up to $128 and your cap is $100, the discount gives $100 — proportionally trimmed, never more. | Off |
The two skip guards being on by default means a fresh PromoLock discount already avoids the most common leak — discounting a discount — before you configure anything.
What customer gets? — offers
Section titled “What customer gets? — offers”An offer is a package of conditions (“when does this apply”) and discounts (“what does it give”). Most discounts need exactly one offer; add more with + Add another when you want tiers (see Discount strategy).
Conditions
Section titled “Conditions”With no conditions, the offer always applies. Add conditions from the Condition menu — all conditions in an offer must be true together:
| Condition | Checks | Operators |
|---|---|---|
| Cart subtotal | Cart subtotal (optionally of one cart group) | Greater than / Less than / Equal to |
| Cart quantity | Total units in the cart (or group) | same |
| Unique products | Number of different products | same |
| Unique variants | Number of different variants | same |
| Customer tag | Tags on the customer | Any of / All of / None of |
The numeric conditions can each point at a cart group — so “subtotal of the Apparel group is greater than $120” is a valid gate, not just the whole cart.
Discounts
Section titled “Discounts”Add what the offer gives from the Discount menu — one Order discount, one Shipping discount, and as many Product discounts as you need:
- Order discount — Percentage off or Amount off the order. Percentage orders get an optional Max discount amount cap.
- Product discount — Percentage off, Amount off, or Fixed price, aimed at a cart group (or the whole cart). Its own caps:
- Applies to — All items, Cheapest, or Most expensive. Choosing cheapest/most-expensive reveals Item limit: how many lines (starting from that end) get the discount. “Cheapest item only” is
Cheapest+ limit 1. - Quantity limit — max units discounted per line (“20% off up to 2 per item”).
- Max per item — a money cap on how much any single line can be discounted (percentage discounts only).
- Applies to — All items, Cheapest, or Most expensive. Choosing cheapest/most-expensive reveals Item limit: how many lines (starting from that end) get the discount. “Cheapest item only” is
- Shipping discount — Percentage off or Amount off shipping.
Cart groups
Section titled “Cart groups”Cart groups split the cart into named parts so one discount can treat them differently — 15% on Accessories, 10% on Apparel, 5% on everything else, one code.
Open the group picker on any product discount or condition and hit Create/Manage groups. A group is:
- Include / Exclude selections — collections, products, or specific variants. No include selection = the whole catalog (minus exclusions).
- Optional Filters to narrow which lines qualify: Purchase type (regular vs. subscription), Line item price (min/max per unit), Quantity (min/max per line), and Sale status (Only items on sale / Only full-price items).
One interaction to know: the Sale status filter only appears while the discount’s Skip on-sale items SafeGuard is off — with the guard on, sale items are dropped before groups are built, so the filter would have nothing to do. The controlled sale discounts strategy is built on this filter.
Groups are shared across the discount — define “Apparel” once, use it in offers and conditions alike.
Purchase types
Section titled “Purchase types”Which purchases the discount applies to: One-time purchases (on by default), Subscriptions, or both. Ticking Subscriptions asks one more question — apply to the First payment only (default), All recurring payments, or a specific number of payments. At least one purchase type must be selected before you can save.
Discount strategy
Section titled “Discount strategy”With two or more offers, the strategy select decides which one a cart gets:
- Apply first eligible offer — offers are checked top to bottom; the first that applies wins. Order is yours to arrange (move offers up/down). This is the classic tier ladder: put the best-qualifying tier first.
- Apply highest-value eligible offer — every eligible offer is evaluated and the customer gets the one worth the most.
Only one offer ever applies — offers don’t stack on each other.
Usage limits
Section titled “Usage limits”Code discounts only:
- Limit total uses — a global ceiling across all customers (Total uses).
- One use per customer — Shopify’s per-customer limit. Worth knowing: Shopify counts this per code and account — someone with a second email is a new customer in its eyes. Closing that hole is Fraud Guard’s job.
Combines with
Section titled “Combines with”Shopify’s native combination flags — whether this discount may stack with other Product discounts, Order discounts, or Shipping discounts. All off by default, which is the safe setting: a discount that combines with nothing can’t be part of a surprise stack. (Your Controller stacking lock polices code combinations on top of this.)
Active dates
Section titled “Active dates”Discounts start immediately by default. Edit the start, or add an + End date — dates use your store’s timezone, shown next to the time picker.
Saving
Section titled “Saving”A save bar appears when anything changes; nothing is live until you hit Save. The editor blocks saves that can’t work — no purchase type selected, an offer with no discount in it — with a message telling you which offer to fix.
Related guides
Section titled “Related guides”- Create a tiered discount with a cap
- Launch a bulk code campaign
- Offers with caps — the capped-offer strategies built on this editor
