How to Distribute QR Code Coupons (Email, Signup Forms & Print Campaigns)

Making a QR code coupon takes two minutes. Getting it to a specific person, so nobody else can use it, is where things get interesting.

Here's the constraint most people miss: to distribute a unique coupon, you have to identify the customer first. You need to know who they are, usually via email, before you can assign them a code. Without that step, you're just handing out the same code to everyone, and that's not a coupon system. That's a flyer.

There are three ways to handle identification and delivery. Which one you pick depends on whether you have an email list, a physical location, or just a link to share. If you're past distribution and want to know what happens when a customer shows up at the counter, see how QR code redemption works in-store.


Why you can't just share one QR code

It seems obvious: make a QR code, put it on a flyer, done. But that QR code points to one discount code. One person screenshots it, drops it in a group chat, and suddenly forty people are using your "exclusive 15% off." You can't tell who used it, or how many times, or whether anyone on your actual mailing list even bothered.

A static code has no identity attached to it. You can't revoke it, you can't track it, and you definitely can't limit it to one use per person. The only real fix: give every customer their own code.

Static QR CodeSAVE20👤Person A👤Person B👤Person CSame code, no trackingUnique QR CodesA7X-Q2K9M-R4P3L-W8👤Person A👤Person B👤Person C1 code per person, tracked

The flow is always the same

Distribution always follows four steps:

  1. Identify the customer (via email address, signup, or pre-generated code)
  2. Assign them a unique, single-use code
  3. Deliver a redeem link with their QR code
  4. Validate and lock the code when they use it in-store

The three methods below are different ways to handle step one. Everything after that is the same.


Method 1: Email integration

If you already have a mailing list, this is probably what you want. You connect Coupon Carrier to your email platform, and each recipient automatically gets their own code. It shows up as a personalized link in the email. Customer clicks it, sees their QR code, and redeems it in-store.

👤SubscriberEnters flowEmail SentVia your ESP🔗Unique LinkIn email body📱QR CodeCustomer views🔒RedeemedCode locked

Works with both campaigns (blast to your whole list) and automations (trigger when someone signs up, makes a purchase, or gets tagged). Once it's wired up, you don't touch it again.

Coupon Carrier connects directly to Mailchimp, ActiveCampaign, Klaviyo, and HubSpot. If your platform isn't on that list, Zapier bridges the gap and connects to hundreds of other tools.

For most businesses with a mailing list, this is the default. Set it up once, and every email sends a unique code without you doing anything.


Method 2: Hosted signup form

If you don't use an email platform, Coupon Carrier can host a simple form for you. Customer enters their email, gets a unique code right away. That's the entire setup.

This works well when you need coupons on the spot. Put the form link on a landing page, share it in an Instagram story, or print a QR code that points to it. Anyone who fills in the form gets their own unique code immediately.

Say you print a QR code on a table tent at your restaurant counter. Customer scans it with their phone, types in their email, and has a 10% off coupon fifteen seconds later.

Use this when you don't have an email platform, or when you just want a shareable link that collects customers and issues coupons instantly. The signup form documentation has the full setup walkthrough.


Method 3: Print batch

Sometimes you need codes on paper. Flyers for a weekend sale, inserts tucked into shopping bags, handouts at a trade show. For that, you generate a batch of unique codes upfront. Each one gets its own QR, ready to print. No email involved. Tracking kicks in when the customer scans the code at your counter.

GenerateBatch of codes🖨PrintPhysical media📦DistributeHand out / mail📷Customer ScansAt store🔒RedeemedCode locked

The fact that it's on paper doesn't change the rules. Each code is still unique, still single-use. Someone redeems it, the code locks. If they try to scan a photocopy, it comes back as already used.

A restaurant prints 5,000 flyers for a weekend promotion. Each flyer has a unique QR code. A customer picks one up, scans it at the counter, gets 15% off. That code is now used. The other 4,999 are still waiting. No POS integration, no email required.

This is the way to go for anything physical: direct mail, packaging inserts, event giveaways, in-store handouts. And unlike a generic coupon code on a flyer, every single redemption is tracked.


Which method should you use?

It depends on what you have and what you're trying to do:

MethodBest forIntegration requiredHow ID happens
EmailExisting subscribers, automations, newslettersYes (email platform)Email address from your list
Signup formWalk-ins, social media, quick launchesNoCustomer enters email
Print batchFlyers, events, packaging, direct mailNoCode is pre-generated, tracked at scan

Most businesses start with email. If you don't have an email platform, use a signup form. If you're running a physical campaign, use print batch.

You're not limited to one. You can run an email campaign for your subscribers, put a signup form on your website for new visitors, and print codes for your in-store counter, all from the same Coupon Carrier configuration.


What happens after the customer gets their code

Distribution is half the story. The other half is what happens at the counter. Customer opens the link on their phone, shows the QR code, and your staff scans it or taps a button. The system checks the code, confirms it's valid, and locks it. That's a completed redemption. For a full picture of how this works in a physical location, see the in-store promotion system overview.

We wrote a separate article on how the in-store redemption flow works, covering what staff sees on screen, the different status states, and edge cases like expired codes. If you haven't built your configuration yet, start with the step-by-step setup guide.


Common mistakes

  • Using one static QR code for everyone. You already know why this doesn't work.
  • Not testing before launch. Send yourself a real coupon, open it on your phone, scan it. Do the whole thing. Most problems show up here, not in production.
  • Running out of codes mid-campaign. If you import your own codes, make sure the pool is big enough. Coupon Carrier's built-in generator handles this on its own, so this mostly applies to imported code lists.
  • Forgetting to set an expiration date. Without one, old codes sit around forever. Someone will try to redeem a coupon from six months ago, and it'll still work.
  • Printing QR codes too small. Phone cameras need at least 2 cm to reliably read a QR code. Anything smaller and you'll get frustrated customers at the counter.

Try it yourself

Pick a distribution method, send yourself a test coupon, and walk through the redemption flow on your phone. The whole thing takes about two minutes.

Get a test voucher →