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"ornetlifyplusname="contact", or a hiddenform-namefield - Any POST to your site is treated as a submission; the name comes from
form-nameor_form
Special fields
| Field | Purpose |
|---|---|
_gotcha, bot-field, _honey | Honeypot — if filled, the submission is silently dropped |
_redirect or _next | Where to send the visitor afterwards |
form-name, _form | Form 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.