"Anti-scalping" covers measures that work in completely different situations. That is why copying what worked for another store often does nothing for yours. This article compares four common measures by when they work, what they cost and what they break.
What scalping actually requires
Reselling only works when all three of these hold. Every countermeasure is an attempt to break one of them.
- A gap between retail and resale price (there is margin)
- Securing stock favours resellers over buyers (speed, automation, multiple accounts)
- Somewhere to resell it
You cannot touch the third. You can narrow the first by raising prices, but that charges your actual fans for the problem. The one you can genuinely act on is the second, and every measure below works there.
The four measures
| Measure | Works when | Main side effect | Effort |
|---|---|---|---|
| Purchase limits | One person buys many units | Multiple accounts and addresses walk straight through | Low (app or theme change) |
| Members-only / early access | Supply roughly meets demand | If supply is short, it is first-come inside the gate | Medium (needs a membership base) |
| Raffle sale | Supply falls short of demand | Adds operations: winner contact, deadlines, re-draws | Medium (an app automates most of it) |
| Fraud detection / blocklists | The same people buy repeatedly | False positives cost real customers; evasion gets learned | High (the criteria need ongoing work) |
Purchase limits
A one-per-customer limit is the cheapest measure and the first one to add. On its own it is easily evaded, so apply it on several axes at once:
- Per order (one unit per order) — the easiest to bypass
- Per customer account (one unit per account per period)
- Per shipping address (multiple orders to one address seen together)
- Per payment method (repeat orders on one card)
Address-level limits work, but they also catch households. Flag those for a human to review rather than cancelling automatically.
Members-only and early access
Only members can buy, or members buy first. Loyalty and VIP apps already deliver this, and many stores run it.
The thing to notice is that this is a gate — it decides who may race. It is not an allocation mechanism for when there is not enough to go round. With 100 units and 1,000 members, you get a first-come race inside the membership, and the 900 who miss out are just as unhappy. Sometimes more so, because signing up implied they would get one.
Member gates fit when supply is adequate but you do not want the product open to everyone. When supply is clearly short of demand, a raffle is the more honest answer.
Raffle sales
Entries are collected, winners are drawn, and only winners can buy. Speed stops being an advantage, so bots aimed at grabbing stock lose their purpose.
- Works when supply is short — first-come sells out in minutes
- Does not work when there is stock to spare; you have only added a step and lost sales
- Costs you operations: winner contact, payment deadlines, re-draws for non-payment
A raffle still has to stop one person entering from many accounts, or they simply buy probability. Always pair it with identity matching: store account, normalised email address, shipping address.
Weighting the odds by purchase history goes further: it makes the multi-account strategy itself inefficient, because a fresh account carries no history. That is not a blocking measure but a favouring one — and it carries no risk of losing a genuine customer to a false positive.
Fraud detection and blocklists
Excluding accounts you judge to be resellers, based on order history or entry patterns. Effective, and the hardest to operate.
- False positives are expensive: blocking one real customer costs the relationship, not one order
- You cannot publish the criteria, because publishing them means they get evaded
- The criteria need continuous maintenance; left alone they stop working within months
Exclude at draw time, not at entry time. If an entry is visibly rejected, people experiment until they find what triggered it. Accept the entry and leave it out of the draw, and no such signal comes back.
How to combine them
Nothing here is sufficient alone. Build in this order, based on how supply compares to demand:
- Add purchase limits first — cheap, and never wasted
- If supply is adequate, use members-only or early access to shape who buys
- If supply is short, switch to a raffle and stop selling first-come
- Pair the raffle with identity matching and history-weighted odds
- Only for confirmed abuse, add accounts to a draw-time exclusion list
Measuring whether it worked
Anti-scalping work easily ends at "we did something". Compare these before and after. If nothing moves, one of the three conditions is still intact.
| Metric | What to look for |
|---|---|
| Share of first-time buyers | Whether the same names still take the stock |
| Distribution of units per customer | Whether a handful of accounts dominate |
| Resale listings and prices | Whether listings right after the drop fall |
| Buyer return and repeat rate | An indirect signal that real fans got one |
| Support volume | Whether "I could not buy it" messages drop |
- How to run a raffle sale on Shopify — The concrete steps if you switch
- Designing a raffle sale — Winner counts, payment deadlines and weighting
Bonafan is a Shopify app that combines raffle sales with history-weighted odds — an allocation mechanism for getting limited stock to real fans at retail, rather than a filter aimed at resellers.