Features
Formivo does one job: receive form submissions, keep them safe, and let the right people read them. Every feature below exists because that job breaks without it.
One POST URL that accepts JSON, urlencoded and multipart bodies. It works with plain HTML, any framework, curl or a webhook. There is no key to embed because a key in client markup is not a secret.
Endpoint reference256 KB body cap, 100-field limit, depth and value limits, unsupported content types rejected, and structured error codes that never leak schema details.
How validation worksFixed windows stored in the database, applied per form, per IP and per form+IP. Parallel requests serialize before the limit is evaluated, so spikes cannot slip through.
Spam preventionEvery submission becomes a record with a status, a source and the raw fields. Search across name, email, message, subject and phone without exporting anything first.
Create an accountInvite a client to one form. They get a read-only account with no workspace and no billing, can be revoked per form, and never see your other projects.
Client access explainedExports respect the workspace plan and the form permission, are escaped for spreadsheets, and are gated on the server. Hiding a button is not a control.
See plansRestrict a form to the sites that should use it. Documented honestly as a browser control, not authentication, and paired with rate limits for that reason.
Security modelForm count, viewer count and monthly submissions are checked in the same transaction that stores the data. The plan is a ceiling, not a suggestion.
Plan limitsCreating a form opens the endpoint, a copy button and ready-made snippets, so the first submission happens minutes after signup instead of after reading a manual.
Walk through the quickstartCopy a prompt written for Claude Code, Cursor, Copilot, Codex, OpenCode, Antigravity, Windsurf or v0, aimed at HTML, React, Next.js, Vue, Svelte, Astro, vanilla JavaScript or PHP.
See an integration exampleTwelve pages of reference, not one long scroll: sidebar search, on-page contents, previous and next links, and a real status-code table.
Open the docsSend a metadata object with a submission, such as the page path or a campaign, and it is stored beside the answers rather than mixed into them.
Reserved fields