Eighty percent of pre-launch founders skip structured research and go straight to building. The other twenty percent learn what problem to solve before they touch the code. The difference shows up six months later when the first group is pivoting and the second group is shipping features their customers already asked for by name.
A research form on your landing page is the fastest path to that signal. You do not need a survey platform, a researcher, or a CRM. You need five fields and somewhere to send the data.
Add a research form to your landing page before you build. Five fields -- email, current_tool, biggest_challenge, time_spent, willingness_to_pay -- give you job-to-be-done, pain intensity, and pricing signal in one submission. Use schema-on-write (OperatorStack) so you can iterate on questions by editing HTML, not reconfiguring a dashboard. Responses land in your dashboard alongside your waitlist as unified contacts.
The Five Fields That Actually Matter
Most research forms ask too much. Visitors drop off after the third question. These five fields fit in one screen and give you everything you need to decide whether to build:
email -- Required. Creates a contact record so you can follow up. Every other field is optional by comparison.
current_tool -- What are they using to solve this problem today? The answer tells you who your real competition is, not who you assumed it was. "I use a spreadsheet" means you are competing with inertia. "I use Jotform" tells you exactly what to compare against.
biggest_challenge -- One sentence about what they hate most. Leave it as a free-text field. The patterns that emerge from 30 unfiltered answers are more useful than the patterns you would have designed into a dropdown.
time_spent -- How many hours per week do they spend on this problem? Two hours versus twenty hours is the difference between a vitamin and a painkiller. If the answer clusters below two hours, reconsider whether you have a real pain point.
willingness_to_pay -- "What would you pay per month for a solution?" People's answers are directional, not literal. $0 means they see this as a commodity. $50-100/mo means they feel real pain. Over $100/mo means you have a business problem, not a consumer pain point.
Setting Up the Research Form
Create a form in your OperatorStack dashboard. Go to the Forms tab and click New Form. Name it "Customer Research" or "Beta Research." OperatorStack generates a form key like frm_research_abc123.
Add the form to your landing page. Drop a plain HTML form on the page pointing at the endpoint. No JavaScript required:
<form method="POST" action="https://api.operatorstack.dev/v1/f/frm_research_abc123">
<input type="email" name="email" placeholder="your@email.com" required />
<input type="text" name="current_tool" placeholder="What do you use today?" />
<textarea name="biggest_challenge" placeholder="What is the hardest part?" rows="3"></textarea>
<input type="text" name="time_spent" placeholder="Hours per week on this problem?" />
<input type="text" name="willingness_to_pay" placeholder="What would you pay per month?" />
<input type="hidden" name="_redirect" value="https://yoursite.com/thanks" />
<button type="submit">Share your experience</button>
</form>
The _redirect field sends the visitor to a thank-you page after they submit. Without it, the browser renders a JSON response.
Or use the SDK for an inline confirmation. If you have the OperatorStack script tag on your page, you can submit programmatically and show a message without a page reload:
document.getElementById("research-form").addEventListener("submit", async (e) => {
e.preventDefault();
const form = e.target;
await OperatorStack.submitForm("frm_research_abc123", {
email: form.email.value,
current_tool: form.current_tool.value,
biggest_challenge: form.biggest_challenge.value,
time_spent: form.time_spent.value,
willingness_to_pay: form.willingness_to_pay.value,
});
form.innerHTML = "<p>Thank you. We will reach out soon.</p>";
});
Verify the first submission. Fill out the form yourself and submit. Open the Forms tab in your dashboard. The submission should appear with all five fields detected and their types inferred. The schema view shows email as an email type, the rest as text.
Iterating on Your Questions
You will not get the questions right on the first attempt. After fifteen responses, you will notice patterns: everyone skips time_spent, or current_tool answers cluster around two tools you did not expect, or biggest_challenge reveals a problem you had not thought of.
With schema-on-write, you change the form by editing HTML. No dashboard visit, no plan upgrades, no schema migration:
- Add a field: Drop a new
<input>into the HTML. The next submission adds it to the schema. Old submissions show it as empty. - Remove a field: Delete the input from the HTML. Existing data stays intact. The column remains visible in your dashboard for historical responses.
- Rename a field: Change the
nameattribute. This creates a new column. Old data stays under the original name. If you want to consolidate, export and merge manually.
Add a version hidden field when you make significant question changes. <input type="hidden" name="version" value="v2"> lets you filter responses by question set in the dashboard, so you are comparing apples to apples.
Combining Research With Your Waitlist
Running research and waitlist collection as separate forms is a mistake. You end up with two email lists with no connection between them: one for people who gave you feedback, one for people who signed up.
OperatorStack solves this automatically. Both the research form and the waitlist widget write to the same unified contact model, keyed on (project_id, email). A visitor who fills out your research form appears as a contact. When they later join your waitlist, the same contact record gets updated. You see the full history: what they told you in research, when they signed up, and any referrals they drove.
This matters when you start building. You can open your Contacts tab, filter to respondents who said time_spent > 10 hours/week and willingness_to_pay > $50, and reach out to those people first.
Do not ask for email twice. If your page has both a waitlist widget and a research form, make the research form the primary entry point. Set the waitlist widget to appear after research form submission, or use a single combined form with the waitlist endpoint. Asking for email in two separate places on the same page annoys visitors and produces duplicate records.
Analyzing What You Collect
Once you have 20-30 responses, open the Forms tab and look for:
Repetition in biggest_challenge. If the same phrase or concept appears in more than 30% of free-text answers, that is your headline feature. Write it back to respondents verbatim: "We're building X to solve Y" where Y is their words, not yours.
Outliers in willingness_to_pay. Zero responses signal commodity thinking or trust problems. Very high responses (5-10x your expected price) signal an enterprise buyer in a consumer audience -- worth a direct follow-up.
Tool patterns in current_tool. If 60% of respondents name the same tool, that tool is your positioning anchor. Build your comparison page around it, not around abstract alternatives.
Drop-off by field. If time_spent and willingness_to_pay are consistently blank, the question is confusing or too sensitive to answer. Rephrase or remove them.
Reaching Out After Research
Because every research submission creates a contact record, you can follow up directly from the Contacts tab. Filter by form name, sort by date, and send a personal email to the first 20 respondents. Thank them by name, quote their biggest_challenge back to them, and ask for a 15-minute call.
This is the part most founders skip. The form data is directional. The call is where you learn the nuance that the form could not capture.
Frequently Asked Questions
What questions should I ask on a pre-launch research form?
Start with five fields: email, current_tool (what they use now), biggest_challenge (one sentence), time_spent (hours per week on the problem), and willingness_to_pay (a number or range). These give you job-to-be-done, pain intensity, and pricing signal in one form.
How many responses do I need before I can act on the data?
Twenty to thirty responses is enough to spot patterns if your traffic is targeted. The goal is saturation: when new responses stop introducing new answers to your key free-text fields, you have enough.
Should my research form be separate from my waitlist?
No. Collect email once and let OperatorStack link the research response to the contact. A visitor who fills out your research form and later joins your waitlist appears as one person with both interactions recorded.
How do I iterate on my research questions without breaking existing data?
With schema-on-write, add or remove fields by editing your HTML. New fields appear for future submissions; old submissions show them as empty. You never lose previous responses when you change the form.
When should I stop doing customer research and start building?
When you can predict what the next respondent will say before they say it. If 80% of responses to your key open-ended field cluster around the same two or three answers, you have enough signal to build a focused v1.