Create and manage discount codes from Marketing → Promotions. This page walks through every field on the form; targeting and margin rules have their own deeper guides.
Create a promotion
- Open the list — go to Marketing → Promotions and click New Promotion.
- Fill in the basics — a title, the code, and whether it’s active.
- Choose the discount — type, value, and what it applies to.
- Add conditions and limits — optional minimums, dates, and redemption caps.
- Save — click Save Promotion. You land on its edit page, where a Usage panel tracks redemptions.
🖼️ [SCREENSHOT: New Promotion form, Basics and Discount sections filled in — Marketing → Promotions → New Promotion]
Basics
| Field | What it does |
|---|---|
| Title (required) | Internal name — customers never see this. e.g. Spring Sale 10% |
| Code | What shoppers type at checkout, e.g. SPRING10. Saved in ALL CAPS. Must be unique — you’ll get an error if it’s already in use |
| Active | The on/off switch. New promotions start Active |
| Description | Optional internal note |
Discount
| Field | What it does |
|---|---|
| Type | Percentage off · Fixed amount off · Free shipping |
| Value | The percent (up to 100) or dollar amount. Must be greater than zero. Hidden for free shipping |
| Applies to | Whole order · Specific products · Shipping only |
| Maximum discount ($) | Percentage type only — caps the dollar amount, e.g. “10% off, up to $50” |
ℹ️ Note: Choosing Specific products reveals the targeting section — see Targeting rules. Switching back to Whole order clears any targeting you’d set, so the promotion never carries hidden filters.
Shipping discounts two ways: Free shipping (type) makes shipping free outright. Shipping only (applies to) lets you discount shipping by a percent or amount instead — e.g. 50% off shipping.
Conditions
| Field | What it does |
|---|---|
| Minimum spend ($) | Cart subtotal required before the code applies — the classic “$10 off when you spend $100” |
| Minimum quantity | Item count required in the cart |
| Starts / Ends | Schedule window. Outside it the code is rejected. End must be after start |
| Don’t apply to items already on sale | Skips products with a sale/compare-at price, so discounts don’t double-dip |
Usage limits
| Field | What it does |
|---|---|
| Total redemptions | Cap across all customers — “first 100 uses” campaigns. Blank = unlimited |
| Per customer | How many times one customer may redeem. Blank = unlimited |
⚠️ Warning: A per-customer limit requires shoppers to sign in to use the code — it can’t be enforced against guest checkout, so guests are asked to log in first. The form reminds you of this when you set a value.
The guardrails card (dealer-wide)
At the top of the Promotions list sits Promotion guardrails — policy that applies to every promotion automatically:
- Minimum margin floor (%) — no promotion may leave a line below this gross margin. Blank = no floor.
- When a promo would breach it —
Trim the discount to the floororReject the code entirely.
Individual promotions can override the floor — see Margin protection for how trimming and blocking work, and why cost prices matter.
🖼️ [SCREENSHOT: Promotion guardrails card with a margin floor set and the cost-coverage note visible — Marketing → Promotions]
Managing existing promotions
The list shows each promotion’s code, discount, usage, schedule window, and an Active/Inactive badge.
- Edit — opens the form plus the read-only Usage panel (“Redeemed n times, of X allowed”).
- Delete — removes it permanently (you’ll be asked to confirm).
- To pause a promotion, open it and uncheck Active — that keeps its stats and lets you re-launch later. Prefer this over deleting.
💡 Tip: There’s no duplicate button — to run a similar campaign, create a new promotion and copy the settings across. Keeping one promotion per campaign keeps your usage stats meaningful.
Next: Targeting rules.
