Lead generation 1 step · 4 fields
Name, email, topic and message. The form almost every website needs.
Get a hosted link and a responses inbox in a minute. No backend, no credit card.
Or set it up yourself
Live preview
{ "id": "contact-form", "title": "Contact us", "submit": { "label": "Send message" }, "fields": [ { "key": "name", "type": "text", "label": "Name", "validation": { "required": true } }, { "key": "email", "type": "email", "label": "Email", "inputMode": "email", "validation": { "required": true } }, { "key": "topic", "type": "select", "label": "Topic", "options": [ { "value": "question", "label": "General question" }, { "value": "sales", "label": "Sales" }, { "value": "support", "label": "Support" }, { "value": "press", "label": "Press and media" }, { "value": "other", "label": "Other" } ] }, { "key": "message", "type": "textarea", "label": "Message", "rows": 5, "validation": { "required": true, "maxLength": 2000 } } ]}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.