Surveys 1 step · 6 fields
A one-minute anonymous check-in: eNPS, workload, clarity, manager support and recognition.
Get a hosted link and a responses inbox in a minute. No backend, no credit card.
Or set it up yourself
Live preview
{ "id": "team-pulse-survey", "title": "Team pulse", "description": "Your answers are anonymous. It takes about a minute.", "submit": { "label": "Send answers" }, "fields": [ { "key": "enps", "type": "radio", "label": "How likely are you to recommend this team as a place to work?", "layout": "inline", "helperText": "0 means not at all likely, 10 means extremely likely.", "options": [ { "value": "0", "label": "0" }, { "value": "1", "label": "1" }, { "value": "2", "label": "2" }, { "value": "3", "label": "3" }, { "value": "4", "label": "4" }, { "value": "5", "label": "5" }, { "value": "6", "label": "6" }, { "value": "7", "label": "7" }, { "value": "8", "label": "8" }, { "value": "9", "label": "9" }, { "value": "10", "label": "10" } ], "validation": { "required": true } }, { "key": "workload", "type": "radio", "label": "How is your workload?", "options": [ { "value": "too-much", "label": "Far too much" }, { "value": "bit-much", "label": "A bit too much" }, { "value": "right", "label": "About right" }, { "value": "room", "label": "I could take on more" } ], "validation": { "required": true } }, { "key": "clarity", "type": "radio", "label": "I know what is expected of me", "layout": "inline", "helperText": "1 means strongly disagree, 5 means strongly agree.", "options": [ { "value": "1", "label": "1" }, { "value": "2", "label": "2" }, { "value": "3", "label": "3" }, { "value": "4", "label": "4" }, { "value": "5", "label": "5" } ], "validation": { "required": true } }, { "key": "support", "type": "radio", "label": "I get the support I need from my manager", "layout": "inline", "helperText": "1 means strongly disagree, 5 means strongly agree.", "options": [ { "value": "1", "label": "1" }, { "value": "2", "label": "2" }, { "value": "3", "label": "3" }, { "value": "4", "label": "4" }, { "value": "5", "label": "5" } ], "validation": { "required": true } }, { "key": "recognition", "type": "radio", "label": "Good work gets recognized here", "layout": "inline", "helperText": "1 means strongly disagree, 5 means strongly agree.", "options": [ { "value": "1", "label": "1" }, { "value": "2", "label": "2" }, { "value": "3", "label": "3" }, { "value": "4", "label": "4" }, { "value": "5", "label": "5" } ], "validation": { "required": true } }, { "key": "oneThing", "type": "textarea", "label": "One thing that would make next month better", "rows": 3, "helperText": "Leave out names and details that could identify you." } ]}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.