← Use cases

Product waitlists

Collect waitlist emails for a launch with spam protection, optional double opt-in, and a simple export when you are ready.

The problem

Pre-launch interest piles up on a landing page and you do not want a custom database for one form.

How Simple Signups fits

One campaign per waitlist. Domain gate + rate limits keep junk out; export CSV when invites go out.

Working example

Swap in your public campaign id (pub_...) and add your site domain to the campaign allow-list. Full field reference is in the developer docs.

HTML waitlist form
<p>Be first in line. Join the waitlist and we will email you when early access opens.</p>
<form action="https://simple-signups.com/api/subscribe" method="POST">
<input type="hidden" name="campaignId" value="pub_your_campaign_id" />
<input type="email" name="email" required placeholder="you@example.com" />
<input type="text" name="hp" tabindex="-1" autocomplete="off"
style="position:absolute;left:-9999px" aria-hidden="true" />
<button type="submit">Join waitlist</button>
</form>
fetch (JSON)
await fetch('https://simple-signups.com/api/subscribe', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
"campaignId": "pub_your_campaign_id",
"email": "jane@example.com",
"metadata": {
"source": "landing",
"list": "early-access"
}
}),
});

Next step

Create a campaign in the dashboard, copy the public id, and paste the form above onto your site.