Surveys 3 steps · 9 fields
The Sean Ellis “how disappointed would you be” survey, plus a short exit path for people who stopped.
Get a hosted link and a responses inbox in a minute. No backend, no credit card.
Or set it up yourself
Live preview
{ "id": "product-market-fit-survey", "title": "Help us improve", "submit": { "label": "Send answers" }, "steps": [ { "id": "fit", "title": "Your experience", "fields": [ { "key": "disappointment", "type": "radio", "label": "How would you feel if you could no longer use the product?", "options": [ { "value": "very", "label": "Very disappointed" }, { "value": "somewhat", "label": "Somewhat disappointed" }, { "value": "not", "label": "Not disappointed" }, { "value": "stopped", "label": "I already stopped using it" } ], "validation": { "required": true } }, { "key": "role", "type": "select", "label": "What best describes your role?", "options": [ { "value": "engineering", "label": "Engineering" }, { "value": "product", "label": "Product" }, { "value": "design", "label": "Design" }, { "value": "marketing", "label": "Marketing" }, { "value": "sales", "label": "Sales" }, { "value": "support", "label": "Customer support" }, { "value": "operations", "label": "Operations" }, { "value": "executive", "label": "Founder or executive" }, { "value": "other", "label": "Other" } ] } ] }, { "id": "value", "title": "What it does for you", "show": [{ "field": "disappointment", "neq": "stopped" }], "fields": [ { "key": "idealUser", "type": "textarea", "label": "What type of people do you think would benefit most from it?", "rows": 2 }, { "key": "benefit", "type": "textarea", "label": "What is the main benefit you get from it?", "rows": 3, "validation": { "required": true } }, { "key": "improve", "type": "textarea", "label": "How could we make it better for you?", "rows": 3 }, { "key": "alternative", "type": "text", "label": "What would you use instead if it were gone?" }, { "key": "discovery", "type": "text", "label": "How did you discover the product?" } ] }, { "id": "stopped", "title": "Why you stopped", "show": [{ "field": "disappointment", "eq": "stopped" }], "fields": [ { "key": "stopReason", "type": "textarea", "label": "Why did you stop using it?", "rows": 3, "validation": { "required": true } }, { "key": "replacement", "type": "text", "label": "What do you use now?" } ] } ]}Copy the JSON into a file in your app, install the renderer and pass the definition to it. The same JSON works with @formhaus/vue.
npm i @formhaus/core @formhaus/reactimport { FormRenderer } from '@formhaus/react';
import '@formhaus/core/style.css';
import definition from './form.json';
export function Form() {
return (
<FormRenderer
definition={definition}
onSubmit={(values) => console.log(values)}
/>
);
}See Getting started for validation, steps and custom components.