Quickstart
A plain HTML form that sends Submissions to Insane Forms.
1. Create a Form
Sign in at app.insaneforms.com with a magic link, GitHub or Google. Create a Workspace and choose its Region, EU or US. The Region can't be changed later, so pick the one your visitors' data should live in (see Regions and your data).
Add a Project for your website, then a Form inside it. The Form's Setup tab shows its endpoint URL and ready-made snippets:
2. Point your form at it
Set the form's action to the endpoint URL and its method to POST. Name
your fields however you like: the endpoint stores every field it receives.
The _gotcha field is the honeypot. People never see it, so a Submission that
fills it in is marked as Spam. Spam protection has the
other checks.
3. Send a test Submission
Open the page, fill in the form and send it. The browser follows a 303
redirect to the Form's success URL, or to a hosted thank-you page if you
haven't set one. Set the success URL in the Form's General tab. It has to
start with http:// or https://.
You can also send one from a terminal. Ask for JSON to see the answer instead of the redirect:
The Submission appears in the Project's inbox in the dashboard, marked Unread. If the Form has Recipients, each confirmed one gets a Notification too.
Running Insane Forms yourself? In development the endpoint is
http://submit.localhost:<port>/f/YOUR_FORM_ID, on the dashboard's port.
What the endpoint accepts
- Bodies:
application/x-www-form-urlencoded(what a plain form sends),multipart/form-data(for file uploads) and JSON. A request with any otherContent-Type, or none, gets400 invalid_body. - Up to 100 fields, with up to 65,536 characters in each value.
- Up to 1 MB for a urlencoded or JSON body, and 4.5 MB for a multipart body, files included.
- A field name that appears more than once, such as a group of checkboxes, arrives as a list of values.
Anything larger gets 413 payload_too_large.
Gotchas
- Errors always come back as JSON, even for a plain HTML post. The visitor's browser shows the JSON, so catch likely failures before the form is sent, or send with fetch and show your own message.
- A Form you've switched off answers
404 form_not_found, the same as one that doesn't exist. - The beta Plan takes 1,000 Submissions a month per Workspace. Spam doesn't
count. Past the limit the endpoint answers
429 plan_limit_reached. - If the Form has Allowed Origins, a plain HTML post is checked too. The page needs to be one of them.
Next steps
- Send from your own code instead: JavaScript fetch.
- Choose who gets an email for each Submission: Notifications.