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

FeatureForm Action EndpointEmbeddable Form
SetupPoint form action URLAdd script + container div
DesignFully customizable in your toolCustomizable in Waitlister editor
ComplexitySimpleRequires JavaScript
Best forNo-code tools, custom designsQuick setup, consistent branding
FlexibilityUse any form fieldsPre-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:

  1. Navigate to your waitlist dashboard
  2. Go to the "Overview" page
  3. 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 NameAlternativeTypeDescription
emaile-mailStringSubscriber's email address (required)

Optional Fields

Field NameAlternativeTypeDescription
nameStringSubscriber's full name
phonephone_numberStringSubscriber's phone number
referred_byrefStringReferral 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

  1. Navigate to your waitlist dashboard
  2. Go to "Settings" page
  3. Scroll to the "Whitelisted domains" section
  4. Add your domain (e.g., yoursite.com)
  5. Click "Update domains"

Domain Format

  • Enter domains without https:// or http://
  • 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.

  1. User submits the form
  2. User is redirected to a "check your email" page
  3. Confirmation email is sent automatically
  4. User clicks the confirmation link
  5. User is added to your waitlist and redirected to the thank-you page
  6. 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

  1. Navigate to your waitlist dashboard
  2. Go to "Settings" → "Security" tab
  3. Toggle on "Double opt-in"
  4. Configure the confirmation link expiration time (default: 48 hours)
  5. 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.

PlanRate Limit
Free10 signups per minute per IP
Launch20 signups per minute per IP
Growth50 signups per minute per IP
Business50 signups per minute per IP

Rate limit information is included in response headers.

  • X-RateLimit-Limit: Maximum requests allowed
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Time when the limit resets

Platform-Specific Guides

Webflow

  1. Add a form element to your page
  2. Select the form and open the settings panel
  3. Set Action to https://waitlister.me/s/YOUR-WAITLIST-KEY
  4. Set Method to POST
  5. Add form fields with the correct name attributes:
    • Email field: name = email
    • Name field: name = name
    • Phone field: name = phone
  6. Whitelist your Webflow domain in Waitlister settings

Framer

  1. Add a Form component to your canvas
  2. Add input fields inside the form
  3. Set each field's name property:
    • Email input: email
    • Name input: name
    • Phone input: phone
  4. Select the form and set:
    • Action: https://waitlister.me/s/YOUR-WAITLIST-KEY
    • Method: POST
  5. Whitelist your Framer site domain in Waitlister settings

Bubble

  1. Create a form element or use individual input fields
  2. Add a button that triggers a workflow
  3. 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
  4. Alternatively, use an HTML element with a form tag and set the action URL
  5. 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.

Help and Support

Need assistance with the form action endpoint? We're here to help.

Get started for free

Start collecting sign ups for your product launch in minutes — no coding required.