Skip to content
FormSubmit

Getting started

FormSubmit documentation

FormSubmit is a headless form backend. Point any form at your endpoint and receive submissions by email, webhooks and integrations — no server code.

FormSubmit turns any HTML form into a working form with one change: set the form's action to your FormSubmit endpoint. Every submission is filtered for spam, stored in your dashboard, emailed to you and (optionally) forwarded to webhooks, Slack, Discord, Google Sheets, Airtable, Mailchimp or Kit.

contact.html
<form action="https://formsubmit.app/f/YOUR_FORM_ID" method="POST">
  <input type="email" name="email" required>
  <textarea name="message" required></textarea>
  <input type="text" name="_gotcha" style="display:none">
  <button type="submit">Send</button>
</form>

Start here

  • Quickstart — create a form and receive your first submission in about a minute.
  • Endpoint reference — accepted content types, responses, redirects and error codes.
  • Control fields — special _ fields like _redirect, _subject and _replyto.
  • AJAX & JavaScript — submit with fetch and handle JSON responses.

How FormSubmit works

  1. You create a form in the dashboard and get an endpoint: https://formsubmit.app/f/{id}.
  2. Your website posts to that endpoint — from plain HTML, JavaScript, WordPress, Webflow, Framer, or an AI-built site.
  3. FormSubmit checks the domain allowlist, rate limits, captcha and spam signals, then stores the submission.
  4. The response redirects the visitor (HTML) or returns JSON (JavaScript).
  5. In the background, we send your notification email, the optional autoresponder, and deliver to each enabled integration with automatic retries.

Looking for framework-specific instructions? See the guides or build a form visually in the form generator.