"I had over 750 visitors but only seven email subscribers. After three days my subscribers had jumped to 75! I love this app and how easy it is to set up."
The spin-to-win popup for Shopify. Try the one on the right.
It's a real working wheel — same code that ships in your account. Weighted prize odds you control, anti-cheat that actually works, mobile haptics, and a 5-minute setup. The 13.2% number is real, and every spin the wheel discount doubles as email capture — the address is validated before the wheel moves.
Three psychology levers,
doing all the real work.
Wheels don't convert because users like wheels. They convert because of three mechanics underneath. Full walkthrough at /games.
Unknown payoff beats known.
A fixed "10% off" popup has a known reward. The wheel's reward isn't — you might land on 40%, you might land on "try again." Variable-ratio reinforcement is the most powerful schedule in behavioural psychology. It's why slot machines exist.
Won beats given.
A coupon by email feels like an ad. A coupon you spun for feels like something you won. Users who spin are 2.4× more likely to redeem the resulting code than users who receive the same code by email.
Mid-flow beats upfront.
Once a visitor types an email and clicks "spin," closing the popup means losing the result they're now invested in. The micro-commitment ladder is the unsung hero — the email becomes a side effect, not the ask.
Numbers from real stores
shipping the wheel today.
Straight from the Shopify App Store — real reviews, real store names. Read all 500 at /customers.
"We have over 100 emails collected in just 5 days! We highly recommend this app to increase your email subscribers."
"This app brought over £1,000 in sales leads in one week from spin-the-wheel. Well worth the install — I'd highly recommend adding it to your store."
Start from a wheel that's
already made someone money.
Discount spin wheel templates, each shipping with our best-performing prize odds and trigger defaults pre-configured. Clone, brand, publish.
// + more spin-wheel templates in the library
Browse all wheel templates →From signed up
to wheel-on-your-site.
Five minutes is the median for new accounts. Brand-kit import auto-fills your colors and logo. The default template ships with our best-performing settings — don't change them on day one.
Sign up. Paste your store URL.
The brand kit auto-imports — logo, primary, secondary, fonts, radii. Every template instantly looks like your store. No design work.
Pick a wheel template.
"Lucky Wheel" ships with our cohort's best-performing prize odds — 40% on a 0.5% slice, 25% / 15% / 10% / 5% on the rest. Don't touch them on day one.
Set the trigger.
The default: visit ≥ 2, scroll > 40%, not seen for 14 days, cart empty. Stripping it down to these four conditions outperforms every "smart" algorithm we've tested.
Wire your ESP.
Klaviyo, Mailchimp, Omnisend — one-click OAuth. Captured emails route by list and tag. The prize each winner saw is attached as a property.
Hit publish.
The script is async, under 10KB gzipped, doesn't touch your Lighthouse score. From this moment, you'll see live activity in the dashboard within 30 seconds. The median first capture comes ~90 seconds in.
The wheel looks random.
The math behind it isn't.
Every safeguard we ship to stop visitors gaming the wheel for the jackpot. The defaults are airtight; you can dial them up or down per campaign.
Weighted prize odds.
The 40% slice looks 1/8 of the wheel. Visually that's true. The actual probability is whatever you set — 0.5%, 2%, 10%. We default to 0.5% on the big prize. The wheel still spins fairly; the math is just yours to tune.
Email validation before spin.
The default flow asks for the email before the wheel spins — not after. This single change cuts fake emails by 73% and tightens fraud detection on the back-end.
Cookie-based attempt limit.
One spin per visitor per session, by default. Clearing cookies doesn't reset it — we fingerprint browser, IP, and ESP-side email collision.
IP rate limiting.
More than three spins from one IP in an hour and the wheel quietly stops awarding the big prize. Most cheaters never realize they've been ratelimited.
Disposable email blocking.
1,200+ disposable-email domains blocked by default. Custom block-list per account. Visitors who use a disposable address get a "try again" outcome.
Frequency cap, per visitor.
Default: 14 days between spins for the same visitor. Stores that ignore this and show the wheel every session lose 60% of the conversion lift.
Unique code per winner.
Flip one toggle and every winner gets their own one-time code — your code as the prefix, e.g. SAVE20-K4M7Q2R8 — created in your Shopify store automatically and capped to a single use. Add a rolling expiry counted from each person's win, so a leaked or scraped code is already spent or expired before it can spread.
Spin-the-wheel questions, answered.
If something isn't here, ping team@getwoohoo.com — we answer in under an hour.
Does the wheel actually pay out the big prize?+
What happens when someone clears their cookies and tries again?+
Can winners just share the code they won?+
Will the wheel slow down my site?+
Can I use the wheel on a non-Shopify site?+
Does the spin-wheel work on mobile?+
Can I run the wheel only during BFCM?+
What's a good spin-to-win conversion rate?+
Ship the wheel.
See the 13.2% for yourself.
The 'Lucky Wheel' template includes every default in this page — prize odds, trigger rule, mobile haptics, anti-cheat. Free up to 500 monthly visitors, no card, no demo call.