Build a waiting list form
A waiting list form helps you capture early interest before your product launches. This tutorial shows you how to create a high-conversion form that collects email addresses and optional segmentation data, protect it from spam, and embed it on your landing page.
What you will build
- A minimal form with two fields: email (required) and role (optional select).
- Honeypot spam protection to keep your list clean from bot signups.
- A redirect to a custom thank-you or confirmation page.
- Segmentation data so you can prioritize outreach by role.
Create the form in your dashboard
Log in to your BForms dashboard and click New Form. On the Settings tab, give your form a name like Waiting List or Early Access Signup. This name is only visible in your dashboard.
Set a redirect to your thank-you page
In the Redirect URL field, enter the URL where visitors should land after signing up. For a waiting list, this is often a page that confirms their spot and sets expectations:
https://yoursite.com/thanksA good thank-you page for a waiting list might include the visitor's queue position, a share link so they can refer others, or an estimated launch date. If you leave the redirect URL empty, BForms will show a generic success message.
Configure your fields
Switch to the Fields tab and add the fields below. Waiting list forms convert best when they are short, so start with just two fields. You can always add more later.
EmailEmailRequiredThe only truly essential field. Uses the email input type for built-in browser validation.
emailplaceholder: you@example.comSelectRoleAn optional select field that lets you segment signups. Useful for prioritizing outreach to founders, product managers, or engineers.
roleplaceholder: Select your roleWhy keep the form short?
Every extra field reduces conversion. For a waiting list, your primary goal is capturing the email address. The role field is worth the slight friction because it gives you actionable segmentation data. Avoid adding fields like "company name" or "phone number" unless you have a specific use for them at this stage.
Enable spam protection
Back on the Settings tab, enter a name for the Honeypot Field. This adds a hidden field to your form that bots will fill out but real visitors will not. Any submission that includes a value for this field is automatically discarded.
The default suggestion is _honeypot. You can use any name you like — just make sure it matches the hidden input in your HTML (shown in Step 6).
Spam protection is especially important for waiting list forms because they are typically placed on public landing pages with high traffic. Without a honeypot, your list can quickly fill up with fake signups.
Restrict allowed domains
In the Allowed Domains field, enter the domains where this form will live. This prevents anyone from copying your form snippet and collecting signups on a different site.
yoursite.com, www.yoursite.comLeave this empty during development so you can test from localhost. Add your production domains before you launch.
Embed the form on your landing page
Click Create Form to save your endpoint. BForms will generate a unique URL and code snippets. Copy the HTML below and paste it into your landing page. Replace your-form-slug with the actual slug from your dashboard.
<form action="https://bforms.dev/api/f/your-form-slug" method="POST">
<label for="email">Email</label>
<input type="email" id="email" name="email" placeholder="you@example.com" required />
<label for="role">Role (optional)</label>
<select id="role" name="role">
<option value="">Select your role</option>
<option value="Founder">Founder</option>
<option value="Product">Product</option>
<option value="Engineering">Engineering</option>
<option value="Marketing">Marketing</option>
<option value="Other">Other</option>
</select>
<!-- Honeypot field - do not remove -->
<input type="text" name="_honeypot" style="display:none" tabindex="-1" autocomplete="off" />
<button type="submit">Join the Waitlist</button>
</form>Inline vs. full-page form
For maximum conversion, embed the form directly on your landing page hero section rather than linking to a separate page. Visitors should be able to sign up without scrolling or navigating away. If you are using a single-page app, consider the JavaScript snippet from your dashboard to submit via fetch without a page reload.
Test and launch
Before sharing your landing page, run through these checks:
- Submit a test signup and confirm it appears in your BForms dashboard.
- Verify you are redirected to your thank-you page after submitting.
- Test the honeypot by temporarily making it visible, filling it in, and confirming the submission is discarded.
- Check that the role select value is captured correctly in the dashboard.
Once everything looks good, share your landing page and start collecting signups. Every submission is stored in your dashboard where you can review, filter, and export them.
Track campaign sources
Add a hidden input like <source> with a value that identifies where the signup came from (e.g. 'twitter', 'producthunt'). This helps you measure which channels drive the most signups.
Segment by role
Use the role field to prioritize your outreach. Founders and product managers may be your best early adopters and can give valuable feedback.
Use fetch for SPA embedding
If your landing page is a single-page app, use the JavaScript snippet from your dashboard to submit via fetch. This avoids a full page reload and lets you show a success message inline.
Enable email notifications
Configure a notification channel on the form detail page in your dashboard. You will receive an email for every new signup so you can follow up quickly.