Point any form at one URL.
FormFlow receives, filters, and forwards every submission — spam caught by a model that learns your forms, delivery you can trust. No backend to build, no frontend to host.
The path of one submission
Received, filtered, stored, delivered.
Received → filtered → stored → fanned out, in seconds.
Spam, without the busywork
A filter that learns each form.
Every form gets its own model. A submission is scored the moment it lands — and every time you correct a verdict, that form gets sharper. The score, the reason, the next action: all stated plainly. Try it →
Honeypot
An off-screen field bots fill and people never see. Costs nothing, so it runs first.
Per-form model
A naïve-Bayes model per form, trained by your corrections. A cold form borrows a team prior, so it flags from submission one.
Turnstile
Optional Cloudflare challenge. Fails open on an outage — a real submission never dies with the check.
Strict schema
Turn it on and fields your form never declared are rejected at the door. Off by default.
No backend to build
Change one attribute. Ship.
Point your form's action
at a FormFlow URL and you're done — no SDK, no client library, no server to stand up.
Works from a static site, a server, or a one-off curl.
Don't hand-write the fields, either. FormFlow infers your form's schema from its own traffic and generates the accessible markup — HTML, Blade, Vue, or React — ready to paste.
<!-- Your existing form. No JS, no SDK. --> <form method="POST" action="https://formflow.io/api/v1/f/ab12x9"> <input name="email" type="email" required> <textarea name="message"></textarea> <button>Send</button> </form>
# Or POST from anywhere curl -X POST https://formflow.io/api/v1/f/ab12x9 \ -d "email=jane@acme.dev" \ -d "message=Loved the demo" # → 200 OK · {"success":true,"id":"…"}
<form method="POST" action="https://formflow.io/api/v1/f/ab12x9"> <label for="email">Email</label> <input id="email" name="email" type="email" required> <label for="message">Message</label> <textarea id="message" name="message"></textarea> <button>Send</button> </form>
<!-- Drop into any component. Still no SDK. --> <template> <form method="POST" action="https://formflow.io/api/v1/f/ab12x9"> <input name="email" type="email" required /> <textarea name="message"></textarea> <button>Send</button> </form> </template>
// Native form action — no client, no state. export default function Contact() { return ( <form method="POST" action="https://formflow.io/api/v1/f/ab12x9"> <input name="email" type="email" required /> <textarea name="message" /> <button>Send</button> </form> ); }
Files, without the bucket
Take file uploads. Skip the storage.
Declare a file field and
your form accepts image uploads over plain multipart — nothing to configure. FormFlow stores
them on a private disk and hands the inbox a signed link that expires, so an attachment
never sits on a public URL.
- Raster images only — SVG is refused, and every file is magic-byte checked, not trusted by extension.
- Per-plan size ceiling, enforced on the way in — 5 MB on Starter, 25 MB on Pro.
- Stored privately; the inbox shows an expiring signed link, never an inline
<img>.
Where a real submission goes
One inbox, fanned out to everywhere you need it.
Read them in one place — and push the same submission to every destination you've wired up.
Signed webhooks
Every submission POSTed to your endpoint with an HMAC signature you verify. Retried on failure, with the reason logged.
Notification mail
A formatted email to your team the moment a real one lands. Bots never trigger a notification.
CSV · XLSX · JSON export
Export the whole inbox from the panel. FormFlow builds the file off a queue and emails you a signed link that expires in an hour — spreadsheets are formula-injection safe.
Priced by real submissions
Pay for what lands. Not for what bots send.
Spam is filtered before it counts, and going over your allowance flags — it never rejects a real submission. Every plan gets the full pipeline; the tiers differ on volume and upload size.
Free
$0forever
One form, wired in two minutes.
- 100 submissions / month
- Per-form spam model + training
- Signed webhooks, email, export
- No file uploads
Starter
$19/ month
Production forms with real traffic.
- 10,000 submissions / month
- Image uploads up to 5 MB
- Everything in Free
- Multiple forms & endpoints
Pro
$49/ month
High volume, larger files.
- 100,000 submissions / month
- Image uploads up to 25 MB
- Everything in Starter
On every plan: Owner & member roles, a full activity log, and GDPR data retention — email addresses and IPs stored as keyed hashes, purged on schedule.
Per-team billing · bots don't count against quota
Point your first form at FormFlow.
Wire a form in two minutes and watch the inbox fill. No backend to build, no frontend to host.