You are building an AI product, maybe a support copilot, a coding assistant, or a niche automation tool wrapped around a foundation model API. You add a waitlist so people can sign up before launch. A week later you have 200 emails and no idea what any of them actually want to build with your product. An email address does not tell you if a signup is a solo indie hacker kicking tires or a team lead ready to pay for ten seats.
Generic waitlist tutorials stop at collecting the email. For an AI startup, the useful signal is the sentence someone writes about their use case, not the address itself.
Add the standard OperatorStack waitlist widget for the signup itself, then pair it with a lightweight custom form field that captures what the visitor is building. The waitlist endpoint only stores email, name, and referral code, so the use-case data has to travel through a form submission instead. Both land in the same unified contact record.
Why an Email-Only Waitlist Falls Short for AI Products
A generic SaaS waitlist assumes every signup wants roughly the same thing. AI products break that assumption. A "code review AI" signup might be a solo developer, a five-person startup, or an enterprise team evaluating a dozen tools at once, and each of those needs a different onboarding email, different beta access timing, and different pricing conversation.
Two things fix this without adding a backend: a use-case field captured at signup, and a chat assistant that lets curious visitors ask questions before they commit an email address.
Step 1: Set Up the Base Waitlist
Create your OperatorStack project and grab the script tag from your dashboard.
<script src="https://operatorstack.dev/os.js" data-project="pk_your_key"></script>
Drop in the waitlist widget wherever you want the signup form.
<div data-os-widget="waitlist"></div>
Or use the SDK directly if you want a form that matches your product's design:
const result = await OperatorStack.joinWaitlist({
email: userEmail,
name: userName,
});
const links = OperatorStack.getShareLinks(result.referral_code);
This gets you the standard waitlist: email, referral tracking, share links. joinWaitlist() only accepts email, name, and ref, so it has no field for "what are you building." That is what the next step adds.
Step 2: Capture the Use-Case Field With a Form
Create a second form in your dashboard (Forms tab, New Form) named something like "Waitlist Details." OperatorStack gives you a form key (frm_...). Add a single field to your signup page and submit it right after the waitlist call succeeds:
const result = await OperatorStack.joinWaitlist({
email: userEmail,
name: userName,
});
await OperatorStack.submitForm("frm_your_key", {
email: userEmail,
use_case: useCaseText,
});
Because both submissions carry the same email, OperatorStack merges them into one contact record. Open any contact in your dashboard and you see the waitlist signup, the referral code, and the use-case text together, no manual matching required.
Keep the use-case field to one short text input ("What are you hoping to automate?") instead of a multi-question form. Every extra required field on a pre-launch signup drops completion rate, and one honest sentence tells you more than a dropdown menu.
Step 3: Let Visitors Self-Qualify With AI Chat
AI-curious visitors ask more pre-purchase questions than average SaaS traffic, because they are evaluating whether your specific approach (which model, what data it touches, how it handles their edge case) fits their problem. Train OperatorStack's AI chat on your landing page and docs so it can answer those questions without you writing a single reply.
Visitors who get a real answer before signing up convert to genuine waitlist entries at a higher rate than someone who bounces off a vague landing page. See the site-scan setup in Training an AI Chatbot on Your Website for the exact steps.
Step 4: Track Which Channel Sends Real Use Cases
Not every signup channel produces equal signups. A Hacker News launch thread and a cold LinkedIn DM campaign both add emails to the list, but they rarely produce the same quality of use-case description. OperatorStack's cookie-free analytics track referrer and UTM parameters on every page view automatically, no consent banner required.
Cross-reference the Analytics tab's referrer breakdown against the use-case field in your contact list. If Hacker News traffic is writing detailed use cases and Twitter traffic is leaving the field blank, that tells you where to spend the next week of launch effort.
Do not gate the waitlist signup itself behind the use-case field. Make email-only signup instant, then ask for the use case as a second, optional step. A required qualification question in front of the signup button kills conversion before you learn anything.
Frequently Asked Questions
Does OperatorStack's waitlist support custom fields like 'use case'?
The waitlist signup endpoint itself only accepts email, name, and an optional referral code. To capture a use-case field, pair the waitlist widget with a separate OperatorStack form (a few lines of extra HTML) that submits alongside or right after the waitlist signup.
Can I use the AI chat widget to qualify leads before they join the waitlist?
Yes. Train the chat assistant on your product's docs or landing page copy, then let visitors ask what your tool does before they sign up. Answered visitors convert to waitlist signups at a higher rate than cold traffic, since they already understand what they are getting.
How do I know which signups came from Hacker News versus Twitter?
OperatorStack's cookie-free analytics track referrer and UTM data automatically. Check the Analytics tab, filter by referrer, and cross-reference with your contact list to see which channel is sending signups who actually describe a real use case in the form field.
Should I gate beta access by use case, or let everyone in?
For narrow AI products (a specific vertical copilot, a niche automation tool), gating by use case avoids onboarding people your product cannot help. For broad tools, skip the gate and use the use-case field for messaging and segmentation instead.