Operations 3 steps · 21 fields
Legal entity, tax, address, insurance and offering details to set up a new vendor. No bank details.
Get a hosted link and a responses inbox in a minute. No backend, no credit card.
Or set it up yourself
Live preview
{ "id": "supplier-registration", "title": "Become a supplier", "submit": { "label": "Register" }, "steps": [ { "id": "company", "title": "Company", "fields": [ { "key": "legalName", "type": "text", "label": "Legal business name", "validation": { "required": true } }, { "key": "tradingName", "type": "text", "label": "Doing business as (DBA), if different" }, { "key": "entity", "type": "radio", "label": "Business type", "options": [ { "value": "sole-proprietor", "label": "Sole proprietor or freelancer" }, { "value": "partnership", "label": "Partnership" }, { "value": "company", "label": "LLC or corporation" }, { "value": "nonprofit", "label": "Nonprofit" } ], "validation": { "required": true } }, { "key": "registrationNumber", "type": "text", "label": "Business registration number", "helperText": "State file number or the equivalent where you’re registered.", "show": [ { "field": "entity", "in": ["partnership", "company", "nonprofit"] } ], "validation": { "required": true } }, { "key": "taxId", "type": "text", "label": "Tax ID", "helperText": "EIN in the US, or your VAT or local tax number. We’ll ask for a W-9 or W-8 separately.", "validation": { "required": true } }, { "key": "country", "type": "text", "label": "Country of registration", "validation": { "required": true } }, { "key": "address", "type": "textarea", "label": "Registered business address", "rows": 3, "validation": { "required": true } } ] }, { "id": "offering", "title": "What you supply", "fields": [ { "key": "category", "type": "select", "label": "Main category", "options": [ { "value": "goods", "label": "Physical goods" }, { "value": "software", "label": "Software and SaaS" }, { "value": "professional", "label": "Professional services" }, { "value": "facilities", "label": "Facilities and maintenance" }, { "value": "logistics", "label": "Logistics" }, { "value": "other", "label": "Other" } ], "validation": { "required": true } }, { "key": "description", "type": "textarea", "label": "Describe what you offer", "rows": 3, "validation": { "required": true } }, { "key": "website", "type": "text", "label": "Website", "placeholder": "https://" }, { "key": "insurance", "type": "radio", "label": "Do you carry general or professional liability insurance?", "options": [ { "value": "yes", "label": "Yes" }, { "value": "no", "label": "No" }, { "value": "not-applicable", "label": "Not applicable to what we supply" } ], "validation": { "required": true } }, { "key": "certifications", "type": "text", "label": "Certifications or accreditations", "placeholder": "ISO 9001, SOC 2, B Corp…" }, { "key": "diversity", "type": "multiselect", "label": "Business classifications", "helperText": "Optional. Pick all that apply.", "options": [ { "value": "small", "label": "Small business" }, { "value": "minority-owned", "label": "Minority-owned" }, { "value": "women-owned", "label": "Women-owned" }, { "value": "veteran-owned", "label": "Veteran-owned" } ] }, { "key": "currency", "type": "select", "label": "Invoice currency", "options": [ { "value": "usd", "label": "USD" }, { "value": "eur", "label": "EUR" }, { "value": "gbp", "label": "GBP" }, { "value": "cad", "label": "CAD" }, { "value": "aud", "label": "AUD" }, { "value": "chf", "label": "CHF" }, { "value": "other", "label": "Other" } ], "validation": { "required": true } }, { "key": "currencyOther", "type": "text", "label": "Which currency?", "show": [{ "field": "currency", "eq": "other" }], "validation": { "required": true } } ] }, { "id": "contact", "title": "Your details", "fields": [ { "key": "name", "type": "text", "label": "Contact name", "validation": { "required": true } }, { "key": "jobTitle", "type": "text", "label": "Job title" }, { "key": "email", "type": "email", "label": "Email", "inputMode": "email", "validation": { "required": true } }, { "key": "phone", "type": "phone", "label": "Phone", "inputMode": "tel", "validation": { "required": true } }, { "key": "accountsEmail", "type": "email", "label": "Email for remittance and purchase orders, if different", "inputMode": "email" }, { "key": "terms", "type": "checkbox", "label": "I have read and accept the supplier terms", "validation": { "required": true } } ] } ]}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.