TL;DR
- Resellers and bots beat flash sales two ways: inventory-hoarding bots that win on speed, and shareable discount codes that leak to aggregator sites
- Shopify natives help — hCaptcha by default, per-customer purchase limits, account-gated drops, and a "Human or bot session" analytics dimension since Oct 2025
- The two weak points most stores leave open are the leaky discount code and the public, shareable sale page
- A dedicated sale page with no discount code removes the reseller channel: there is no coupon to redistribute and no public price to exploit
- For severe scarcity, switch from first-come to a raffle — winners are drawn, so a bot submitting 10,000 entries wins at the same rate as one human
Resellers and bots win flash sales by being faster than humans and by exploiting two weak points most stores leave open: shareable discount codes and unlimited quantity per customer. Close both and the inventory goes back to real customers. This guide covers how the attack works, Shopify's native defenses, and the structural fix that removes the bot speed advantage entirely.
How resellers and bots beat your flash sale
The damage comes from two mechanics working together.
Inventory hoarding bots. The moment a drop goes live, bots add items to the cart and hold them through the session timeout, either checking out or releasing the stock after real customers have given up (Shopify). Limited-edition and high-demand products are hit hardest, because scarcity is exactly what resellers monetize at a markup.
Discount-code leakage. A coupon code is a string anyone can paste anywhere. Within 20 minutes of a sale, codes surface on deal aggregator sites, and resellers buy in bulk at the discounted price to flip later. The code that was meant for your customers becomes a wholesale channel for scalpers.
Shopify's native defenses
Shopify gives you several built-in tools. Use all of them for a limited drop.
| Defense | What it does |
|---|---|
| hCaptcha | Active by default on all Shopify stores; separates human users from bots on forms |
| Purchase limits | Cap units per customer (for example, max 3) so one buyer cannot sweep the drop |
| Account login required | Gate exclusive drops behind login; bots cannot fake a purchase history |
| Gated URLs | Reserve the drop link for loyal customers instead of a public, shareable page |
| Bot session analytics | Since 7 October 2025, the "Human or bot session" dimension separates automated traffic in reports |
The two weak points most stores leave open
The native tools help, but two gaps stay open if you run a standard discount-code sale.
- The code leaks. Any sale that depends on a shareable coupon code can be redistributed. Purchase limits slow this, but the discounted price is still public.
- The link is public. A normal sale page is indexable and shareable, so resellers and their bots find it the moment it goes live.
Closing these two gaps does more than any CAPTCHA, because it removes the thing resellers actually exploit: a public price on a public page reachable by a public code.
Reseller defense checklist
- Set a per-customer purchase limit before the drop goes live.
- Drop the shareable discount code; use a sale mechanism that does not depend on a code.
- Gate high-demand drops behind account login or a reserved URL.
- Keep hCaptcha enabled and watch the bot-session dimension in analytics.
- For severe scarcity, switch from first-come to a raffle (see below).
- Cap stock per variant so a single hoarding session cannot drain the run.
When to switch from first-come to a raffle
First-come selling rewards speed, and speed is exactly what bots have. When demand massively exceeds supply, a raffle removes the speed advantage: everyone enters during a window, winners are drawn, and a bot that submits 10,000 entries still wins at the same rate as one human. A raffle also collects customer data and distributes scarce inventory fairly. The full decision framework is in Raffle vs Flash Sale vs Drop.
How Heartly closes the reseller gaps
Heartly removes the two weak points by design. Each flash sale runs on a dedicated page with no discount code, so there is no string to leak to aggregator sites. The page is the offer, which means resellers cannot redistribute a coupon to buy in bulk. Per-variant stock limits cap how much any session can take, and the raffle module handles severe-scarcity drops where first-come would just reward the fastest bot. For the setup, see how to run a flash sale on Shopify, why a dedicated page beats a code in landing page vs discount code, and the scarcity mechanics in stock limits.
Frequently Asked Questions
How do I stop resellers buying my Shopify flash sale?
Close the two weak points resellers exploit: set a per-customer purchase limit, and drop the shareable discount code in favor of a dedicated sale page that has no code to leak. Add hCaptcha and account-gating for high-demand drops, and use a raffle when demand far exceeds supply.
How do bots win limited drops?
Inventory hoarding bots add items to the cart the instant a drop goes live and hold them through the session timeout, then check out or release the stock after real customers give up. They beat humans on speed, which is why first-come selling favors them.
Does Shopify have built-in bot protection?
Yes. hCaptcha is active by default, you can set per-customer purchase limits and require account login, and since 7 October 2025 Shopify analytics include a "Human or bot session" dimension to separate automated traffic from real customers.
Why are discount codes a reseller risk?
A discount code is a shareable string. It commonly appears on deal aggregator sites within 20 minutes of a sale, letting resellers buy in bulk at the discounted price to flip later. A sale page with no code removes that channel entirely.
When should I use a raffle instead of a first-come flash sale?
Use a raffle when demand massively exceeds supply. A raffle removes the speed advantage bots rely on, because winners are drawn rather than first to check out, and it distributes scarce inventory fairly while capturing customer data.
Resellers thrive on a public price, a public page, and a shareable code. Take away the code and gate the page, and the speed advantage that powers bots stops mattering.