When a limited item is sold first-come-first-served, the stock is gone in seconds. Whoever got it was fast, not necessarily a long-time customer. A raffle sale changes how that allocation is made. This article walks through how to run one on Shopify, both by hand and with an app.
When first-come selling stops working
If two or more of these are true, first-come is no longer doing its job. The underlying problem is supply, not the checkout.
- Products sell out within minutes, and the same names keep appearing in the order list
- Listings appear above retail on resale marketplaces right after the drop
- Every drop brings a wave of "I could not buy it" messages
- Customers report adding to cart but failing to reach checkout
- Traffic spikes slow the storefront at drop time
With a raffle, the deciding factor moves from speed to simply having entered. Traffic also stops piling onto a single moment, which takes the load off the storefront.
What a raffle sale actually involves
"Running a raffle" breaks down into seven separate jobs. Whichever route you take, someone has to do all seven.
- Collect entries (record who entered)
- Deduplicate (collapse multiple entries from the same person)
- Draw the winners
- Create a path only winners can buy through
- Set and communicate a payment deadline
- Release unpaid slots and re-draw them
- Tell everyone else the result
In practice, step 3 is the easy part. The expensive steps are 4 (making sure only winners can buy) and 5–6 (chasing payment and re-drawing). Done by hand, those scale with the number of winners.
Three ways to do it on Shopify
| Approach | Cost | Works up to | Where it hurts |
|---|---|---|---|
| Form + spreadsheet + manual work | Free | About 200 entries | Every winner email, payment check and re-draw is manual |
| Members-only / early access app | Monthly fee | When supply is adequate | It narrows who can race, it does not decide who gets one when there are not enough |
| Raffle app | Free to monthly fee | Hundreds to tens of thousands of entries | You work within the app’s flow |
Members-only early access is already well served by loyalty and VIP apps. But that is a gate — it decides who may race. It is not an allocation mechanism. If 1,000 members chase 100 units, you are back to first-come inside the gate.
The manual workflow
For the first drop or two, doing it by hand is fine. The sequence is:
- Collect entries with a form, requiring an email address
- Pull the responses into a spreadsheet and dedupe by email
- Add a random column, sort by it, and take the top N
- Email each winner individually
- Give winners a way to buy: an unlisted product link or a single-use discount code
- Set a payment deadline and reconcile payments after it passes
- Promote runners-up for unpaid slots and repeat the emails
The ceiling here is the number of winners, not entries. Fifty winners means a person handling well over a hundred emails per drop. Along the way you tend to hit:
- The same person entering twice through address variants (casing, plus-addressing)
- Winner links or discount codes getting shared publicly and used by non-winners
- Re-draws falling behind the deadline, leaving stock unsold
- No clear answer when a customer asks whether the draw was really random
The workflow with a raffle app
An app automates steps 1–6. With Bonafan the flow is:
- Create a raffle in the dashboard: product variant, number of winners, entry deadline and payment window
- Share the generated entry page URL from the product page, social posts or email
- The draw runs automatically at the deadline, using each entrant’s fan score as of the moment their entry was confirmed
- Only winners receive a Shopify invoice email and check out through a winner-only checkout
- Winners who miss the payment deadline are released automatically and the slot is re-drawn
- Result tags are written back to each customer, so you can email everyone who missed out through Shopify customer segments and Shopify Email
The winner-only checkout is issued as a Shopify draft order per winner. Even if the link is shared, the order belongs to that winner, so nobody else can buy through it.
Fans already logged in to the store can enter in one click through the app proxy entry page, with no email verification step. Logged-out entrants confirm ownership of their address through an emailed magic link.
Explaining that the draw is fair
The most common question you will get is whether the draw was really random. Decide these four things in advance and state them on the entry page, and the questions mostly stop.
- Is it a pure random draw, or are odds weighted by purchase history?
- If weighted, by what and by how much (for example, purchases at full price)?
- Is there a reserved share for first-time customers?
- How are repeat entries from one person handled?
Bonafan splits every draw into a pure-random share and a history-weighted share. At the default weight, a customer with a fan score of 20 is roughly five times as likely to win as a score of 0 — but a score of 0 can still win. That is deliberate: new customers should not be locked out.
Which route to take
- Under 20 winners, a few drops a year: do it by hand and learn from one round
- Over 50 winners, or monthly drops: emails and payment checks start eating the week — look at an app
- Thousands of entries: you need deduplication and load handling, so an app is the baseline
- You want purchase history to shape who gets one: computing that by hand is not realistic
If you are unsure, run exactly one drop as a raffle and count the entries and support messages. If entries exceed what you expected, the manual ceiling will arrive on the next drop.
- Designing a raffle sale — Choosing winner counts, entry windows and payment deadlines
- Anti-scalping methods compared — Purchase limits, member gates, raffles and fraud detection
- Bonafan user guide — From install to your first raffle
Bonafan is a raffle sales app for Shopify. It is free during the beta, and creating a raffle takes about a minute.