Skip to content
StaticHero

Forms

Forms

Collect form submissions on any static site with a single attribute — fields, spam protection, redirects and JSON responses.

Basic setup

<form action="/_forms/contact" method="POST">
  <input name="email" type="email" required>
  <textarea name="message"></textarea>
  <button>Send</button>
</form>

The last part of the URL (contact) is the form name. The form appears in Forms after its first submission.

Other ways to name a form

  • <form data-statichero-form="contact"> (we add the action for you)
  • Netlify style: data-netlify="true" or netlify plus name="contact", or a hidden form-name field
  • Any POST to your site is treated as a submission; the name comes from form-name or _form

Special fields

FieldPurpose
_gotcha, bot-field, _honeyHoneypot — if filled, the submission is silently dropped
_redirect or _nextWhere to send the visitor afterwards
form-name, _formForm name when posting to a path other than /_forms/…

JSON responses

Send Accept: application/json (or a JSON body) to get {"ok": true} instead of a redirect.

Limits

Up to 100 fields, 10,000 characters per field, 512 KB per submission. File inputs are recorded by name only. Monthly submissions: Starter 500, Pro 1,500, Business 5,000. Forms aren’t available on the Free plan.

Notifications & export

Each form emails your account address by default — change recipients in the form’s Settings. Export any form as CSV.

Still stuck? Contact support.