BBonafanBETA
BETA

Bonafan is in beta and under active development. Features and specifications may change without notice. Feedback and bug reports: bonafan098@gmail.com

TCG / SNEAKERS / FIGURES / LIMITED COLLABS

Deliver to real fans.

A raffle sales app for Shopify

A raffle sales app for Shopify. Drop the race and speed stops mattering, which is the only thing a bot is good at. On top of that, Bonafan turns each customer's purchase history into a fan score and lifts the odds for people who keep buying from you. Reseller entries are removed at draw time. And yes, there is still a separate pool where a first-time customer wins on equal odds.

The good parts

1

Starts at zero

Nothing is charged during the beta

2

One minute to set up

After that it runs itself

3

Regulars win more

Scored from their purchase history

The Bonafan dashboard, listing entrants with customer ID, email, fan score and payment status
The fan-facing entry page showing raffle name, price, winner count, closing time and an email field

Dashboard / Fan entry page

Your job ends at creating the raffle

how it works

Create one raffle. After that you only come back for the results.

  1. Email only!

    Enter

    Fans enter with just an email address. An entry counts only after pressing the confirm button behind the emailed link, so bots can't flood the raffle. One-click entry with a store account (App Proxy) is also supported.

  2. Works day one!

    Score

    Purchase count, total spend and retail purchases become a fan score, frozen at the moment of entry so it can't be gamed afterwards.

  3. Provably fair!

    Draw

    Winners are picked with cryptographic randomness. A weighted pool rewards loyal fans, and a separate equal-odds pool keeps newcomers in the game.

  4. Paid automatically!

    Win

    Each winner gets a checkout only they can open, delivered as an invoice email from your store. Reminders before the deadline and runner-up promotion after it are automatic.

Selling a limited run first come first served?

FOR LIMITED DROPS

The manufacturer sets your allocation. The collab contract caps the run. Neither number moves for you. Sell that on a first-come basis while demand still exceeds it, and the fastest buyer is not a person. It is a bot. Bonafan is built for that kind of sale.

Trading cards & hobby shops

Your allocation is fixed, so a first-come drop is gone in seconds and listed on resale sites by morning. You would run a raffle instead, but tallying entries and mailing winners by hand eats the day.

Sneakers & streetwear

Your allocation will not grow. Every drop becomes a speed contest against bots. The regulars who buy from you all year never get a pair, and they leave quietly.

Figures & garage kits

Limited runs and event exclusives are never reprinted. The high price tag makes them prime resale targets. Every release ends with you deciding what to do about the orders above the cap.

Limited collabs & apparel

The contract fixes the run, so making more is not on the table. Every release fills your mentions with fans who could not buy, and that enthusiasm is what wears down.

If you can make more, you do not need a raffle. Print-on-demand and made-to-order already sell to everyone who wants one. Bonafan earns its place only when the stock genuinely runs out.

Spreadsheet raffles do not scale

BEFORE / AFTER

Most stores already running raffles collect entries in a form, sort them in a spreadsheet, then email winners one at a time. Bonafan takes that chain off your hands.

Taking entries
Form + spreadsheet + manual workYou eyeball the list for duplicates and throwaway addresses, and bots can still flood it.
BonafanEmail verification pins entries to one per person, aliases of throwaway addresses count as the same person, and rate limits are built in.
The draw
Form + spreadsheet + manual workSort by a spreadsheet random function. Even if you want to favour regulars, you cannot show it was fair.
BonafanCryptographic randomness, weighted by purchase history, with a separate equal-odds pool reserved for newcomers.
Removing resellers
Form + spreadsheet + manual workReject them at entry and you get a public argument. They come back with another account anyway.
BonafanEntries are accepted at the door and quietly removed at draw time. Resellers never learn they were caught.
Notifying winners
Form + spreadsheet + manual workWork down the winner list, sending DMs and emails one at a time.
BonafanA checkout only the winner can open is issued automatically and delivered as an invoice email from your store.
Payment & runner-ups
Form + spreadsheet + manual workCheck payments by eye. Slots that go unpaid simply end up as unsold stock.
BonafanReminders before the deadline and promotion of runner-ups after it both happen automatically.
Following up with losers
Form + spreadsheet + manual workYou have their contact details but no practical way to use them before the next drop.
BonafanWon/lost tags land on customer records automatically, so Shopify Email can send priority invites for your next drop.
Time per drop
Form + spreadsheet + manual workHours to days, from tallying entries to confirming payment.
BonafanAbout a minute to create the raffle. Everything after that is automatic.

BONA FIDE = GENUINE

Not a tool for blocking.A tool for delivering.

Reject an entry at the door and the reseller learns exactly where the wall is. They come back with a different account. So Bonafan lets every entry through and removes the bad ones quietly at draw time. There is nothing to learn from, and nothing to argue about in public.

Paid automatically!

Winner notice

Winners are sent straight to a checkout only they can open, from your store.

Each winner gets a checkout only they can open, delivered as an invoice email from your store. Reminders before the deadline and runner-up promotion after it are automatic.

The raffle result page showing a winning message and a payment link

Let the system handle the resellers

features

Score-weighted draws

A fan with score 20 is about 5× more likely to win, while score-0 entries can still win. Nobody wins twice, and the boost and newcomer quota are adjustable per raffle.

Silent blocklist

Suspicious entries are accepted at the door and removed at draw time. Resellers never learn they were caught, so there is nothing to work around.

Scores that work from day one

Fan scores are built from your last 60 days of orders the moment you install, so they work on day one. New orders add to them and cancelled ones are deducted.

Automatic follow-through to payment

Winners get their checkout link as an invoice email from your store's own address (even if it leaks, nobody else can buy), an automatic reminder before the deadline, and missed slots pass to runners-up.

Losing entrants are your next regulars

After each draw, won/lost tags are added to entrants' customer records automatically. Use Shopify Email (10,000 free emails/month) to send loser announcements and priority invites for your next drop.

Bot- and alias-resistant entries

Entries are confirmed by email, and throwaway-address aliases count as the same person. Rate limits are built in, with optional Cloudflare Turnstile bot verification.

Fan scoreBuilt from purchase count, retail purchases and total spend. It keeps growing between drops.

The customer list showing each customer's score, purchase count, retail purchases and total spend

Specification

SPECIFICATION

Draw
Score-weighted pool plus an equal-odds pool
Randomness
Cryptographic
Fan boost
About 5x at score 20 (adjustable per raffle)
Duplicate wins
None
Initial scores
Built from the last 60 days of orders on install
Score updates
Added per order, deducted on cancellation
Score freeze
Stored as of the moment an entry is confirmed
Entry methods
Email verification / one-click with a store account (App Proxy)
Bot defence
Email verification, rate limits, Cloudflare Turnstile (optional)
Blocklist
Entries accepted, removed at draw time
Winner notice
Invoice email from your store with a winner-only checkout
Payment window
48 hours by default (adjustable per raffle)
On expiry
Promoted to a runner-up automatically
Result tags
Won/lost tags added to customer records
Export
Entrants and fan scores as CSV

Set up in 3 steps.

SHOPIFY APP

With a Shopify store, you can run your first raffle the same day.

  1. 1

    Install

    Replace the end of the install link with your store domain, open it, and approve the permissions in your Shopify admin.

  2. 2

    Automatic setup

    Order data sync is configured on approval, and fan scores are built automatically from your last 60 days of orders.

  3. 3

    Create a raffle

    Create a raffle in the dashboard and share the entry page URL with your fans. Entries are open.

Install link

https://bonafan-worker.bonafan098.workers.dev/shopify/install?shop=your-store.myshopify.com

Bonafan is a public beta

BETA — IN DEVELOPMENT

We are building Bonafan together with a small group of stores. Before installing, please note the following.

Free during the beta

Nothing is charged until paid plans launch. Limits do start at the Free tier though: 100 entries a month, 20 winners, and no email-verified entry yet. Tell us if that is too tight and we will lift them. We will announce billing in advance and give existing stores a transition period.

Things will change

The dashboard, entry pages and plan limits may change without notice based on feedback. Raffle results and entry data are preserved across changes.

Usable for real sales, but verify first

The raffle engine and winner checkout are built and tested for production sales, but please run a one-winner test raffle end to end before your first drop.

Feedback is welcome

Tell us what kind of raffle you want to run, or what is confusing. That is what shapes the next release.

Contact

Questions about setup, bug reports and feature requests are welcome by email. We usually reply within two business days.

bonafan098@gmail.com

Start with a test raffle

No setup fee and no monthly fee to start. Creating a raffle takes about a minute. Both the entry page and the dashboard work in English and Japanese.