Quizzes 6 steps · 13 fields
Qualifies leads in a few taps and sends small budgets to a free guides signup instead of a sales call.
Get a hosted link and a responses inbox in a minute. No backend, no credit card.
Or set it up yourself
Live preview
{ "id": "agency-fit-quiz", "title": "Are we a good fit?", "submit": { "label": "Send" }, "steps": [ { "id": "stage", "title": "Where is your business today?", "next": false, "fields": [ { "key": "stage", "type": "radio", "label": "Business stage", "options": [ { "value": "idea", "label": "Just an idea" }, { "value": "launched", "label": "Launched, no revenue yet" }, { "value": "growing", "label": "Growing" }, { "value": "established", "label": "Established" } ], "validation": { "required": true }, "autoAdvance": true } ] }, { "id": "need", "title": "What do you need most?", "fields": [ { "key": "need", "type": "radio", "label": "Main need", "options": [ { "value": "brand", "label": "Brand and identity" }, { "value": "website", "label": "Website" }, { "value": "product", "label": "App or product design" }, { "value": "marketing", "label": "Marketing and growth" }, { "value": "other", "label": "Something else" } ], "validation": { "required": true } }, { "key": "needOther", "type": "text", "label": "What do you need?", "show": [{ "field": "need", "eq": "other" }], "validation": { "required": true } } ] }, { "id": "timeline", "title": "When do you want to start?", "next": false, "fields": [ { "key": "timeline", "type": "radio", "label": "Timeline", "options": [ { "value": "asap", "label": "As soon as possible" }, { "value": "1-3-months", "label": "In 1 to 3 months" }, { "value": "3-6-months", "label": "In 3 to 6 months" }, { "value": "later", "label": "Later or not sure yet" } ], "validation": { "required": true }, "autoAdvance": true } ] }, { "id": "budget", "title": "What budget do you have in mind?", "next": false, "fields": [ { "key": "budget", "type": "radio", "label": "Budget", "options": [ { "value": "under-5k", "label": "Under $5,000" }, { "value": "5k-15k", "label": "$5,000 to $15,000" }, { "value": "15k-40k", "label": "$15,000 to $40,000" }, { "value": "40k-plus", "label": "More than $40,000" } ], "validation": { "required": true }, "autoAdvance": true } ], "routes": [ { "to": "resources", "show": [{ "field": "budget", "eq": "under-5k" }] }, { "to": "call" } ] }, { "id": "resources", "title": "We’ll send you our free guides", "description": "Our projects usually start at $5,000. These guides will get you a long way on your own.", "fields": [ { "key": "guideEmail", "type": "email", "label": "Email", "inputMode": "email", "validation": { "required": true } }, { "key": "firstName", "type": "text", "label": "First name" }, { "key": "consent", "type": "checkbox", "label": "Email me the guides and occasional tips", "validation": { "required": true } } ], "routes": [{ "to": null }] }, { "id": "call", "title": "Book a call", "description": "Looks like a good fit. Leave your details and we’ll suggest a time.", "fields": [ { "key": "name", "type": "text", "label": "Full name", "validation": { "required": true } }, { "key": "email", "type": "email", "label": "Work email", "inputMode": "email", "validation": { "required": true } }, { "key": "company", "type": "text", "label": "Company" }, { "key": "website", "type": "text", "label": "Website", "placeholder": "https://" }, { "key": "context", "type": "textarea", "label": "Anything we should know before the call?", "rows": 3 } ] } ]}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.