Skip to content

Forms

Send any HTML form to Manifolio, with spam protection and webhooks.

DocsSite data

Docs menuForms

Point any HTML form at Manifolio and the submissions land in Forms in the admin, with the page, country and device next to each one. No backend needed.

A plain HTML form

HTML
<form method="post" action="https://api.manifolio.com/v1/forms/contact?key=mf_pk_live_your_site_key">
  <input name="name" required>
  <input name="email" type="email" required>
  <textarea name="message"></textarea>

  <input type="hidden" name="_redirect" value="https://aurora.coffee/thanks">
  <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" hidden>
  <button>Send</button>
</form>

contact is the form key: lowercase letters, digits, - and _, up to 48 characters. A form appears in the admin with its first submission; a project can have up to 50 forms.

With fetch

JavaScript
const res = await fetch("https://api.manifolio.com/v1/forms/contact", {
  method: "POST",
  headers: { "content-type": "application/json", "x-manifolio-key": "mf_pk_live_your_site_key" },
  body: JSON.stringify({ name: "Ana", email: "ana@example.com", message: "Do you ship to Cluj?", _page: location.pathname }),
});
// 201 { "ok": true, "id": "01a1b2c3-0000-7000-8000-000000000003" }

The endpoint accepts JSON, application/x-www-form-urlencoded and multipart/form-data. Files in a multipart form are ignored.

The key

Send the publishable key in one of three ways: the key query parameter, the x-manifolio-key header or a _key field. The request must come from one of the key's domains (checked from Origin, then Referer).

Reserved fields

Fields that start with _ are read by Manifolio and not stored:

FieldDoes
_gotchaa honeypot: when it has a value, the answer is success and nothing is saved
_redirectafter saving, a 303 redirect to this address; it must be on the key's domain
_pagethe page the form was on, since browsers send only the origin across sites
cf-turnstile-responsethe Turnstile token, for forms that require a captcha

Limits

  • 32 KB per submission, 50 fields, 5,000 characters per value, no nested objects
  • 5 submissions a minute per visitor and form, 120 a minute per project

Webhooks and export

Every submission fires form.submitted, with the form and the submitted fields, so you can forward it anywhere. See Webhooks. In the admin you can mark submissions read, unread or spam, delete them and export a form to CSV.