Launch a bulk code campaign
The scenario: a 20%-off email campaign where every recipient gets their own code — single-use, guess-proof, and one per person no matter how many accounts they own.
-
Open Discounts → Bulk codes tab → Create bulk set.
-
Set name:
Spring email 20— this is also the discount’s title, and you can rename it later. -
Build the offer like any discount — for this campaign, one Order discount, Percentage off
20. Consider a Max discount amount cap so a $2,000 cart doesn’t earn a $400 discount. -
Generation settings:
- Codes to generate: your list size — say
25000. - Code length: keep the suggested value; the field enforces a safe minimum automatically.
- Under Show extra options, set a Prefix like
SPR-so the codes read as one campaign (SPR-X7K2P9). Prefix, suffix, and characters lock after creation — pick them like you mean them.
- Codes to generate: your list size — say
-
Check SafeGuards: on Shopify Plus, Fraud protection is already ticked — one code per person across the whole set, even across alias emails and fresh accounts. Leave it on.
-
Set Active dates if the campaign has a window, then Save. Generation starts in the background — 25,000 codes takes a few minutes. If another set is generating you’ll see Waiting in queue; it starts by itself.
-
When the batch shows ready, select it in the Codes section and hit Download codes. You get a one-column CSV — map it to your email tool’s per-recipient field and send.
Second wave? Same set, new batch
Section titled “Second wave? Same set, new batch”Don’t create a second set for the follow-up send. Generate new batch adds codes with the identical format, and each batch stays separately downloadable — batch 1 was the launch email, batch 2 the reminder, and each export contains exactly one send’s codes.
Check it worked
Section titled “Check it worked”Redeem one test code — it applies, and a second attempt with the same code fails. On Plus with fraud protection on, redeeming a different code from the set with the same email also fails. That’s the guarantee: one redemption per human, not per inbox.
