leads · waitlist · alternative
Free Waitlist Alternative: Emails on Your Own Site
A hosted waitlist keeps your signups on someone else's server. Collect emails on your own site, saved once, spam-limited, in a database you own.

Who this is for
Your product doesn't exist yet, and you want the first hundred email addresses before it does. A hosted waitlist service will do that, at the price of keeping your list on its servers.
BoringPush already has the plain version: a signup form on your own site, and a list in your own database. This post shows what it does, and what it leaves for you.
What you get
A form with an email box and a "Join waitlist" button. A spinner while it saves, a confirmation when it's done, and a list of addresses in a database that's yours.
No monthly fee, no subscriber limit from us, and no export button to hunt for. The rows are on your own disk.
Put the form on your home page, on a launch page, or at the end of a blog post. It works the same wherever it sits, and you can restyle it to match your brand.
What happens when someone signs up
It tidies the address. [email protected] and [email protected] become one person.
It checks the basics. An empty box or something that isn't an email address is turned away with a clear message.
It saves once. A double click, a refresh or autofill produces one entry, never three.
It never scolds. Someone who joins twice sees "success" both times. Joining again shouldn't look like an error for something that worked.
Spam has a budget
A visitor can submit the form five times a minute. Beyond that, the request is refused until they slow down.
That's a speed limit, not a proof of humanity. A bot farm using many addresses can still fill your list, so if the list matters, add a hidden trap field or a challenge in front of it and keep the limit.
Where the emails live
By default your list is a small database file of its own, kept apart from your product data. You can export it or wipe it without touching your app's records.
If you run on Supabase or MongoDB, it lands in a table there instead, with the same form and the same behaviour. There's no admin screen for the list, but with the default setup one simple query gets you every address and when it joined.
Export it, pipe it into your email tool, or let a scheduled job read it. It's your file.
The form that gets out of the way
Once someone signs up, the form disappears. On every later visit, on every page, they never see the signup box again.
That includes the card at the end of each blog post. A reader who has joined isn't asked twice.
Know this first
BoringPush doesn't send a confirmation email when someone joins. It saves the address and shows a message in the browser, and nothing lands in anyone's inbox until you add that step.
There's also no referral loop, no queue position and no email sequence. Those are features of dedicated waitlist products, built around growth.
If a double opt-in or a welcome note matters to you, it's a small addition: BoringPush already sends emails through Resend for sign-in links and receipts. See Resend Emails That Land.
Why BoringPush is the way to do this
Your first hundred addresses are the most valuable list you'll ever have. They shouldn't sit behind a paid plan on someone else's server.
In BoringPush the form, the list and the product live together. You can restyle the form, read the list with a one-line query and move it to another database when you grow. Nothing to rent, nothing to export first.
When a waitlist tool still earns its fee
A hosted waitlist service pays for itself when growth is the product: referral rankings that move people up the queue, per-referrer tracking, automatic email sequences and a dashboard a non-technical co-founder will open.
If all you need is the first hundred addresses from people who already read your blog or follow you, none of that machinery pays for itself.
FAQ
Does it send a welcome email?
No. It saves the address and shows a message in the browser. A subscriber hears nothing until you add a send step yourself.
What happens when someone submits the same email twice?
One entry, and a success message both times. The address is checked before it's saved, so double clicks never show an error.
How many signups can one address send?
Five a minute. Beyond that the request is refused until the visitor slows down.
Where do I find the emails?
By default in a database file of their own, separate from your app's data. On Supabase or MongoDB, in the leads table or collection your setup points at.
Does it work if my app runs on Supabase or MongoDB?
Yes. The form behaves the same on all three. The field names stay the same, so moving later is a data move, not a rewrite.
Can I use it for more than a waitlist?
Yes. It stores an email and a time, which also makes it a newsletter signup, a beta tester list or an address list for one product page. The signup card on every blog post uses the same list.
Keep reading
- Resend Emails That Land — adding the confirmation this form doesn't send
- One Codebase, Three Databases — how the list works on every engine
- Free Ghost Alternative: A Markdown Blog Built In — publishing to collect the addresses
+ all the boring stuff (analytics, auth, SQLite ↔ Supabase, full marketplace, webhooks)
Command from your phone.
Built so autonomous AI agents build what you want without breaking what's already paying you.
- Built-in analytics — cookie-free mode, $0 forever, no PostHog bill
- SQLite ↔ Supabase: one setting, same field names
- Full digital marketplace & feedback boards included
- 3 payment rails: Stripe, LemonSqueezy & Dodo Payments
- Agent fences: lint gate, read-only data access, auto-rollback
- Ship from your phone via SSH & WireGuard/Tailscale in under a minute
$199
Get BoringPushOne-time payment · Lifetime updates · Unlimited projects.
Keep reading


