Create a form
One click in the console. You get a unique endpoint and a snippet to drop into your HTML.
Point any HTML form at FormFlow and get email + webhooks, spam protection, file uploads and analytics. No server, no SDK, no rebuild.
<form> to inbox in under a minute. One click in the console. You get a unique endpoint and a snippet to drop into your HTML.
Set the form's action attribute. Works with raw HTML, Next.js, Astro, SvelteKit — anything that submits.
Email, webhooks, R2 file storage, Slack, Discord, sheets. Filters, retries and a clean audit log.
Honeypot, Turnstile and per-IP rate limits ship on by default. Quiet inbox, no setup.
Forward to anyone on your team, fire webhooks to Slack, Discord, sheets — with retries and a delivery log.
Accept attachments up to 25 MB. Stored in your R2 bucket, served behind signed URLs.
Submission volume, success/spam ratio, response times — read straight from Analytics Engine.
API responds in the request's Accept-Language. English + Russian shipped; more on the way.
Memberships and roles modelled into the schema. Bring your studio, share a workspace.
REST + OpenAPI 3.1, generated from the same zod schemas that validate the requests. Predictable errors in application/problem+json.
Idempotency keys on every write.
Monthly submissions, not seats. Move up only when your traffic does — never the other way around.
Compare all features →
No. FormFlow runs on Cloudflare Workers and accepts your HTML form posts directly. The only thing you change is the action attribute.
Honeypot, Cloudflare Turnstile and rate-limits are on by default. You can disable any of them per form if you need to.
Any time, as JSON or CSV. Files in R2 stay in your bucket; we keep a metadata pointer and nothing more.
Yes — encrypted at rest, deleted after the retention window you pick. 30 days is the default.