WHAT IS IT?
By default, a campaign is automatic; it applies at checkout with no action from the shopper. With Discount Codes, you hand out a code that the customer enters to unlock the campaign. You can use:
- A single shared code, one code everyone uses (e.g., SPRING25), or
- Bulk unique codes hundreds or thousands of one-time codes (e.g. VIP-7K4QH2P9), each trackable on its own.
A code is ONLY a key. It does not define the discount, the amount, tiers, minimums, dates, eligibility, or budget, all of which live on the campaign and are unchanged. The code just grants permission to apply that campaign to the cart.
SINGLE VS BULK, WHICH ONE?
Single shared code:
- One code for everyone
- Example: SPRING25
- Best for public promos, social, newsletters
- Tracking: total redemptions only
- Answers "how many used the promo?"
Bulk unique codes:
- One code per recipient
- Example: VIP-7K4QH2P9, VIP-M3RT8WQK, ...
- Best for VIP lists, affiliates, influencers, 1-to-1 gifts
- Tracking: per-code (who used it, when, how often)
- Answers "which recipient/channel drove this order?"
Rule of thumb: if you need to know which person or channel converted, use bulk. If you just want a public code, use single.
TWO USAGE LIMITS (INDEPENDENT)
Both apply to single and bulk:
- Uses per code: how many times one code can be redeemed: 1 (single use), a custom number, or unlimited. (Bulk defaults to single use.)
- Per-customer limit on how many times one customer can redeem: once, a custom number, or no limit.
Note: The per-customer limit is based on the customer's identity (account or email). On guest checkout, it cannot be strictly enforced.
WHERE IS IT AVAILABLE
Discount Codes are wired for Free Shipping / Cart Incentives and Tiered Quantity Discount campaigns today. Other types are automatic-only for now.
REAL-WORLD SCENARIO USED IN THIS GUIDE
Goal: A skincare brand is launching to 2,000 newsletter subscribers. Each subscriber should get a personal, one-time code for free shipping on orders over $40, so the brand can see exactly which subscribers redeemed and which email segment converted best.
→ Bulk unique codes, single use each, once per customer, prefix WELCOME-.
STEP-BY-STEP: CREATE A BULK CODE CAMPAIGN
Step 1: Create the Underlying Campaign
Create a Free Shipping / Cart Incentives campaign with your real reward: free shipping when the cart is over $40. Set the threshold, dates, and eligibility as usual. (The code only unlocks this; it does not define it.)
Step 2: Switch the Discount Method to "Discount code"
In the Discount Method section, click "Discount code", then choose "Unique codes (bulk)".
Step 3: Configure the Batch
- Number of codes: 2000
- Code prefix (optional): WELCOME-
- Random length: 8
- Uses per code: 1 (single use)
- Per-customer binding: Once per customer
A live sample preview shows 3 example codes (e.g., WELCOME-7K4QH2P9). Codes are generated when you save, not before.
Step 4: Save
Click Save. The 2,000 unique codes are generated and stored. The right-side Access tile reads "2,000 unique codes".
Note: The batch is fixed at creation; you cannot add more codes to it later. If you need more, create a new campaign.
Step 5: Export and Distribute
Open the Codes modal (see below) and click Export CSV or Export XLSX. You distribute the codes yourself; the app generates, validates, tracks, and exports them, but does not send them. Mail-merge one code per subscriber.
[SCREENSHOT: Codes modal footer with Export CSV / Export XLSX]
STEP-BY-STEP: WHERE CODES SHOW UP
1) Campaigns list: the code chip
Under the campaign name, a chip summarizes usage at a glance:
- Single: the code itself + "· 42 used"
- Bulk: "Bulk codes · 320 / 2,000 redeemed" + a thin progress bar
Automatic campaigns show no chip. Click the chip to open the Codes modal.
2) Code the whole batch (read-only)
- Rule summary (e.g., "Bulk unique codes · single use each · once per customer")
- Progress bar + counters: 320 / 2,000 redeemed · 1,680 available
- Searchable, paginated table: Code, Status, Times used, Redeemed by, Last used
- Footer: Export CSV / XLSX (no "add codes", the batch is fixed)
3) Order breakdown: the exact code used
On the breakdown row of a code-unlocked campaign, the order shows the precise code that was entered:
Unlocked by code: WELCOME-7K4QH2P9
Click it to open the single-code detail modal:
- Status, times used (e.g. 1 / 1), customer, link to the campaign
- Redemption history — every order this code appears on
- View full batch — jumps back to the Codes modal
This is your attribution link: it shows which subscriber code drove the order.
HOW A CUSTOMER USES A CODE
1. The customer enters their code in the cart / at checkout.
2. Matching is case-insensitive, and surrounding spaces are trimmed (welcome-7k4qh2p9 = WELCOME-7K4QH2P9).
3. If the code is valid and the campaign is live, the campaign applies using all of the campaign's own rules (threshold, eligibility, combinations).
4. The redemption is recorded against that specific code (times used, redeemed by, last used).
STEP-BY-STEP: VERIFY IT WORKS
Verification:
- Valid, unused WELCOME-... on a $45 order → free shipping applies; code becomes redeemed
- Same code again on a new $45 order → rejected, "code already used" (single use)
- Valid code on a $30 order (below $40) → code accepted, but campaign rule not met → no free shipping
- Wrong/made-up code → rejected, invalid code
- Code while campaign expired → rejected with the campaign-state reason, not a code error
Step 1: Redeem a Code
In an Incognito tab, add a $45 order, enter one exported code, and confirm free shipping is applied.
Step 2: Confirm It Is Now Single-Use
Try the same code on a second order. It should be rejected as already used. In the Codes modal, that code now shows "Redeemed · 1 / 1".
Step 3: Confirm the Code Is Only a Key
Enter a valid code on a $30 cart (below the $40 threshold). The code is accepted, but free shipping does NOT apply because the campaign's own rule is not met. This proves the code unlocks the campaign rather than overriding it.
Step 4: Check the attribution on the Order
Open the redeemed order's breakdown. It should show "Unlocked by code: WELCOME-...". Click it and confirm that the redemption history shows this order.
TIPS & COMMON MISTAKES
- The code is a key, not a discount. If the cart does not meet the campaign's threshold/eligibility, a valid code will still not be discounted. That is by design.
- Plan the batch size up front. The batch is fixed at creation; you cannot append codes later. For more, create a new campaign.
- Use a prefix for channel attribution. VIP-, WELCOME-, AFF- make it obvious at a glance (in exports and on orders) which campaign/channel a code came from.
- Single use is the bulk default. Change "Uses per code" only if you intend a code to be reusable.
- Per-customer limits and guest checkout. Without an account/email, the per-customer cap cannot be strictly enforced. Consider requiring a login for strict promos.
- Distribution is on you. The app generates, tracks, and exports codes; sending them (email/SMS/affiliates) is your step.
- Combinations are the campaign's call. Whether a code stacks with automatic discounts is governed by the campaign's combination settings, not the code.







