Waitlist
Form Action Endpoint
The form action endpoint allows you to point any HTML form directly to Waitlister to collect signups. This is perfect for integrating with no-code tools like Webflow, Framer, Bubble, or any custom HTML form without needing JavaScript embeds.
What is a Form Action Endpoint?
A form action endpoint is a URL that receives form submissions when a user clicks submit. Instead of handling the submission yourself, the form sends data directly to Waitlister, which processes the signup and redirects users to the appropriate page.
This approach is simpler than embedding forms and works with virtually any tool that supports HTML forms.
Why Use Form Action Endpoint?
The form action endpoint is ideal when:
- You're using no-code tools: Perfect for Webflow, Framer, Bubble, Wix, Squarespace, or any website builder
- You want complete design control: Style your form exactly how you want using your own tools
- You prefer simplicity: No JavaScript embeds or iframes to manage
- You're working with existing forms: Easily add waitlist functionality to forms you've already built
- You need native form behavior: Uses standard HTML form submissions that work everywhere
Form Action vs. Embeddable Form
| Feature | Form Action Endpoint | Embeddable Form |
|---|---|---|
| Setup | Point form action URL | Add script + container div |
| Design | Fully customizable in your tool | Customizable in Waitlister editor |
| Complexity | Simple | Requires JavaScript |
| Best for | No-code tools, custom designs | Quick setup, consistent branding |
| Flexibility | Use any form fields | Pre-configured form builder |
Both methods support all Waitlister features including referrals, email validation, double opt-in, and analytics.
Getting Your Endpoint URL
To find your form action endpoint:
- Navigate to your waitlist dashboard
- Go to the "Overview" page
- Your waitlist key is displayed at the top
Your endpoint URL will be:
https://waitlister.me/s/YOUR-WAITLIST-KEY
For a complete example with all supported fields, visit your endpoint URL in a browser to see the documentation page specific to your waitlist.
Basic Setup
Here's a minimal example to get started.
<form action="https://waitlister.me/s/YOUR-WAITLIST-KEY" method="POST">
<input type="email" name="email" required>
<button type="submit">Join Waitlist</button>
</form>
This form will collect signups and redirect users to the appropriate page — just make sure you've whitelisted the domain.
Redirect Behavior
After a successful form submission, users are automatically redirected based on your waitlist settings:
Standard Flow (Double Opt-in Disabled)
Users are redirected directly to the thank-you page:
https://waitlister.me/thank-you/YOUR-WAITLIST-KEY/sign-up-token
The thank-you page displays their waitlist position, referral code, and sharing options.
Double Opt-in Flow (Double Opt-in Enabled)
Users are redirected to a confirmation pending page:
https://waitlister.me/confirm-pending/YOUR-WAITLIST-KEY/confirmation-token
This page instructs users to check their email and confirm their subscription. Features include:
- Clear instructions to check their inbox
- Option to resend the confirmation email (up to 3 times)
- Spam folder reminder
Once the user clicks the confirmation link in their email, they're added to your waitlist and redirected to the thank-you page.
Existing Subscriber
If the email is already registered on your waitlist, users are redirected to the thank-you page with their existing signup details.
Pending Confirmation (Double Opt-in)
If the email already has a pending confirmation, users are redirected back to the confirmation pending page.
Supported Fields
The form action endpoint accepts the following fields.
Required Fields
| Field Name | Alternative | Type | Description |
|---|---|---|---|
email | e-mail | String | Subscriber's email address (required) |
Optional Fields
| Field Name | Alternative | Type | Description |
|---|---|---|---|
name | — | String | Subscriber's full name |
phone | phone_number | String | Subscriber's phone number |
referred_by | ref | String | Referral code from another subscriber |
Custom Fields
Any field not listed above will be automatically stored in the subscriber's metadata. This allows you to collect additional information specific to your use case:
<form action="https://waitlister.me/s/YOUR-WAITLIST-KEY" method="POST">
<input type="email" name="email" required>
<input type="text" name="name">
<input type="text" name="company">
<input type="text" name="role">
<select name="plan_interest">
<option value="starter">Starter</option>
<option value="pro">Pro</option>
</select>
<button type="submit">Join Waitlist</button>
</form>
In this example, company, role, and plan_interest will be saved as custom metadata.
Complete Example
Here's a full-featured form with all standard fields:
<form action="https://waitlister.me/s/YOUR-WAITLIST-KEY" method="POST">
<!-- Required -->
<label for="email">Email</label>
<input
type="email"
id="email"
name="email"
required
>
<!-- Optional standard fields -->
<label for="name">Name</label>
<input
type="text"
id="name"
name="name"
>
<label for="phone">Phone</label>
<input
type="tel"
id="phone"
name="phone"
>
<!-- Referral code (optional) -->
<input
type="hidden"
name="referred_by"
value="happy-star-4f3d"
>
<!-- Custom fields (stored in metadata) -->
<label for="company">Company</label>
<input
type="text"
id="company"
name="company"
>
<button type="submit">Join Waitlist</button>
</form>
Domain Whitelisting
For security, you must whitelist the domain(s) where your form is hosted. Submissions from non-whitelisted domains will be rejected.
Adding Whitelisted Domains
- Navigate to your waitlist dashboard
- Go to "Settings" page
- Scroll to the "Whitelisted domains" section
- Add your domain (e.g.,
yoursite.com) - Click "Update domains"
Domain Format
- Enter domains without
https://orhttp:// - Correct:
yoursite.com - Incorrect:
https://yoursite.com
Local Development
For testing locally, add:
localhost(includes all ports)
Double Opt-in
When double opt-in is enabled for your waitlist, the form action endpoint automatically handles the confirmation flow.
- User submits the form
- User is redirected to a "check your email" page
- Confirmation email is sent automatically
- User clicks the confirmation link
- User is added to your waitlist and redirected to the thank-you page
- Welcome email is sent (if enabled)
Benefits of Double Opt-in
- Verified emails: Only real, accessible email addresses join your waitlist
- Better deliverability: Reduces bounces and spam complaints
- GDPR compliance: Provides clear consent documentation
- Higher quality leads: Confirms genuine interest
Enabling Double Opt-in
- Navigate to your waitlist dashboard
- Go to "Settings" → "Security" tab
- Toggle on "Double opt-in"
- Configure the confirmation link expiration time (default: 48 hours)
- Customize your confirmation email in "Emails" → "Confirmation"
Handling Referrals
To track referrals, include the referrer's code in the referred_by field.
<form action="https://waitlister.me/s/YOUR-WAITLIST-KEY" method="POST">
<input type="email" name="email" required>
<input type="hidden" name="referred_by" value="happy-star-4f3d">
<button type="submit">Join Waitlist</button>
</form>
Referrals with Double Opt-in
When double opt-in is enabled, referral credit is awarded only after the new subscriber confirms their email. This ensures referrers only get credit for verified signups.
Dynamic Referral Codes
If you're capturing referral codes from URL parameters:
<!-- Example: yoursite.com/waitlist?ref=happy-star-4f3d -->
<form action="https://waitlister.me/s/YOUR-WAITLIST-KEY" method="POST">
<input type="email" name="email" required>
<input type="hidden" name="ref" id="referralCode">
<button type="submit">Join Waitlist</button>
</form>
<script>
// Get ref parameter from URL
const urlParams = new URLSearchParams(window.location.search);
const refCode = urlParams.get('ref');
if (refCode) {
document.getElementById('referralCode').value = refCode;
}
</script>
AJAX Submissions
If you prefer to handle form submissions with JavaScript (for a smoother user experience), you can submit to the same endpoint and receive JSON responses:
<form id="waitlistForm">
<input type="email" name="email" id="email" required>
<button type="submit">Join Waitlist</button>
</form>
<div id="message"></div>
<script>
document.getElementById('waitlistForm').addEventListener('submit', async (e) => {
e.preventDefault();
const email = document.getElementById('email').value;
const messageDiv = document.getElementById('message');
try {
const response = await fetch('https://waitlister.me/s/YOUR-WAITLIST-KEY', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({ email })
});
const data = await response.json();
if (data.is_pending_confirmation) {
// Double opt-in enabled
messageDiv.innerHTML = '✓ Please check your email to confirm your subscription.';
} else if (data.is_new_sign_up) {
// Standard flow - new signup
messageDiv.innerHTML = `✓ You're #${data.position} on the waitlist!`;
} else {
// Already registered
messageDiv.innerHTML = `✓ You're already on the waitlist at position #${data.position}!`;
}
} catch (error) {
messageDiv.innerHTML = 'Something went wrong. Please try again.';
}
});
</script>
JSON Response Format
When submitting with Accept: application/json header:
Standard Flow:
{
"success": true,
"is_new_sign_up": true,
"is_pending_confirmation": false,
"position": 42,
"referral_code": "happy-star-4f3d",
"redirect_url": "https://waitlister.me/thank-you/..."
}
Double Opt-in Flow:
{
"success": true,
"is_new_sign_up": true,
"is_pending_confirmation": true,
"message": "Please check your email to confirm your sign-up",
"redirect_url": "https://waitlister.me/confirm-pending/..."
}
Rate Limits
Form submissions are rate-limited based on your plan to prevent abuse.
| Plan | Rate Limit |
|---|---|
| Free | 10 signups per minute per IP |
| Launch | 20 signups per minute per IP |
| Growth | 50 signups per minute per IP |
| Business | 50 signups per minute per IP |
Rate limit information is included in response headers.
X-RateLimit-Limit: Maximum requests allowedX-RateLimit-Remaining: Requests remainingX-RateLimit-Reset: Time when the limit resets
Platform-Specific Guides
Webflow
- Add a form element to your page
- Select the form and open the settings panel
- Set Action to
https://waitlister.me/s/YOUR-WAITLIST-KEY - Set Method to
POST - Add form fields with the correct
nameattributes:- Email field: name =
email - Name field: name =
name - Phone field: name =
phone
- Email field: name =
- Whitelist your Webflow domain in Waitlister settings
Framer
- Add a Form component to your canvas
- Add input fields inside the form
- Set each field's
nameproperty:- Email input:
email - Name input:
name - Phone input:
phone
- Email input:
- Select the form and set:
- Action:
https://waitlister.me/s/YOUR-WAITLIST-KEY - Method:
POST
- Action:
- Whitelist your Framer site domain in Waitlister settings
Bubble
- Create a form element or use individual input fields
- Add a button that triggers a workflow
- In the workflow:
- Add "Open an external website" action
- Build the URL with query parameters or use a custom HTML element to submit a form
- Alternatively, use an HTML element with a form tag and set the action URL
- Whitelist your Bubble app domain in Waitlister settings
Custom HTML
For any platform that supports custom HTML:
<form action="https://waitlister.me/s/YOUR-WAITLIST-KEY" method="POST">
<input type="email" name="email" placeholder="Enter your email" required>
<input type="text" name="name" placeholder="Your name">
<button type="submit">Join Waitlist</button>
</form>
Style the form with CSS to match your design.
Related Features
- Configure Waitlist - Set up domain whitelisting and other settings
- Referral Program - Learn about referral mechanics
- Thank-You Page - Customize the post-signup experience
- Double Opt-in - Learn about email confirmation
- Analytics - Track signup performance
- API Reference - For programmatic integrations
Help and Support
Need assistance with the form action endpoint? We're here to help.
- Contact us via the public contact form
- Access the "Help" page in your account dashboard
