A waitlist form records who wants access and why, without promising an invitation or launch date the team can't guarantee.
Create the form
const waitlist = defineForm({
id: "analytics-beta-waitlist",
title: "Join the analytics beta",
pages: [{
id: "request",
blocks: [
{ id: "email", kind: "email", label: "Work email", required: true },
{ id: "company", kind: "short_text", label: "Company" },
{
id: "goal",
kind: "select",
label: "What do you want to understand?",
options: [
{ id: "activation", label: "Activation" },
{ id: "retention", label: "Retention" },
{ id: "reliability", label: "Reliability" },
],
},
{ id: "source", kind: "hidden", label: "Source", paramName: "src" },
],
}],
settings: {
submitLabel: "Join waitlist",
successTitle: "You're on the list",
successMessage: "We'll email you if this beta is a fit.",
responseLimit: { by: "field", field: "email", onRepeat: "keep" },
},
});An email-field response limit cuts down accidental duplicates, but it doesn't verify that the person owns the address. If the waitlist lives inside a signed-in product, use verified respondent identity instead.
Decide how invitations are sent
Send accepted requests to the response grid, Google Sheets, Notion, Zapier, or a webhook. Qualify people outside the form, record invitation state in the system that owns access, and send invitations from an approved messaging tool — a waitlist response signals interest, it doesn't grant access.
Test signups, duplicates, and delivery
Try each campaign parameter, a duplicate email, missing optional fields, and destination retries. Keep the confirmation copy honest: it should read true even if no invitation is ever sent.
Try it
Start with a prompt and your coding agent builds the first form, staged for your review — or open the editor.
Related
- Beta access example: See a live waitlist-style form.
- Response limits: Reduce repeat requests by contact or signed account.
- Capture UTM attribution: Add campaign context without another visible question.
- Zapier: Hand accepted requests to a lifecycle workflow.