Free tool

Waitlist form generator

Launching soon? Drop a waitlist signup form on your landing page in one line. Capture emails, block spam, and get notified. No server required.

Fields

Submission

Where submissions go. Paste your form ID to make the code real — or keep the placeholder while you experiment.

On submit

Spam & privacy

Design

Styling

Adds Tailwind utility classes. Your project needs Tailwind installed.

Live preview

A promise with a shelf life

A waitlist is a promise to tell someone when a thing exists. Its value decays: a list you email six weeks after signup converts far better than the same list emailed six months later, when nobody remembers signing up.

Email
Enough on its own. A waitlist is the one form where asking for a second field is hard to justify.
What would you use it for — optional
The highest-value field on the form despite being optional. It tells you which segment is actually waiting, which changes what you build before launch.
Name — optional
Only if the launch email will use it. Otherwise it is friction for nothing.

The mistake to avoid: The launch email that arrives cold

The common failure is not collecting too few signups, it is the gap. Someone signs up, hears nothing for five months, then receives an announcement from a company they have forgotten. It reads as spam and gets reported as spam, which damages the sending domain you will need for everything else.

Email once shortly after signup even when you have nothing to announce. One line confirming they are on the list makes the eventual launch email recognisable rather than cold, and it tells you immediately which addresses were fake.

How it works

  1. Choose a template and fields. Pick a template, then add, remove, or reorder fields and mark the required ones. Add step breaks to turn a long form into a multi-step form.
  2. Style it. Pick CSS, Tailwind, or unstyled output and tune the theme: accent color, light or dark, rounded corners.
  3. Copy your framework's code. Switch to HTML, React, Vue, Svelte, Astro, or a fetch() version and copy, download, or open it in CodePen.
  4. Connect an endpoint. Create a free ShipMyForm form to get a real endpoint, then drop your form ID in so submissions actually arrive.

Want the background? Read what a form backend is and how to stop form spam without reCAPTCHA. Want the submissions in your inbox? See how to send an HTML form to email. Already have a Google Form? Convert it to HTML. Got a form that submits but delivers nothing? Check its HTML.

Frequently asked questions

What should a waitlist form ask for besides an email?
One optional question about what they would use it for. It is the highest-value field on the form: it tells you which segment is waiting, which can change what you build before launch. Keep it optional so it does not cost you signups.
How do I stop duplicate signups on a waitlist?
Expect them: people sign up twice when they forget, and the same person uses two addresses. Deduplicate on the email when you export rather than rejecting the second submission, because an error message at signup reads as a broken form to someone who genuinely does not remember.
When should I email a waitlist?
Once shortly after signup, then at launch. The confirmation matters more than it looks: without it, the launch email arrives months later from a name nobody recognises, and the list that was meant to be your warmest audience generates spam complaints instead.
Can I show someone their position on the list?
Not from a static form by itself, because the page has no idea how many people signed up before. It needs a backend that counts and returns a number, so treat position and referral mechanics as a feature to build rather than something a generated form provides.