Everything FormHeron actually does
Form backend with a lead inbox — not a drag-and-drop builder, not file uploads, not an autoresponder. Verified against the product.
Ship it in five minutes
No backend code
Paste one HTML snippet. No server, no PHP, no serverless function to maintain.
Works with any stack
Plain HTML, React, Next.js, Astro, Vue, Svelte, Webflow, Framer, Hugo, Eleventy. It’s just a form action.
Custom redirect
Send visitors to any URL on your own domain after submit. Validated at save and at submit time so it can never become a phishing hop.
JSON or form-encoded
POST either way. JSON responses carry a stable machine-readable code field for every error.
Spam dies before it costs you
Honeypot, always on
Included on every plan, free included. Positioned off-screen — not type=hidden, which password managers fill and which flags real people as bots.
Bring your own Turnstile
Free Cloudflare Turnstile with your keys, so captcha analytics stay in your Cloudflare account. Never a shared sitekey.
Atomic rate limiting
Per-IP, per-form and per-account limits enforced in a single atomic database operation — correct under concurrent bot floods.
Spam never spends quota
Spam is stored for review but never counted against your monthly limit and never emailed. A bot flood costs you nothing.
Duplicate protection
A double-clicked submit button is stored once, counted once, and notified once.
A real lead inbox
Status pipeline
Move every lead New → Contacted → Won → Lost. It’s a pipeline, not an archive.
Tags and notes
Indie and ProLabel leads and keep a running note per conversation.
Full-text search
Search across every field a visitor submitted, not just name and email.
CSV export
ProDownload everything, with formula-injection escaping so a malicious submission can’t execute when opened in Excel.
Integrations that actually deliver
HMAC-signed webhooks
Indie and ProEvery payload signed HMAC-SHA256(secret, timestamp + "." + body). Verification snippets for Node, Python and PHP in the docs.
Retries and a delivery log
Indie and ProFailed deliveries retry at 1m / 5m / 25m, then dead-letter and email you. Every attempt is logged with status code.
Slack notifications
Indie and ProIncoming-webhook URL, stored encrypted.
Connect anything
Point a webhook at Zapier, Make or n8n to reach Sheets, Notion, Airtable or any CRM. Not native — via webhook.
Built to be trusted with other people’s data
Leads stored in the EU
Amsterdam. Operated from India — both stated plainly in our sub-processor list.
A DPA you can sign
Processor DPA available to every account, free included. When your client’s procurement asks, you have an answer.
No raw IP addresses
We store a salted HMAC for rate limiting. A database leak exposes no visitor IPs.
Automatic retention limits
30 / 90 / 365 days by plan, then hard-deleted by an automated job. Not soft-deleted — actually gone.
Export and delete on demand
Per-project JSON export and hard delete from the dashboard, both audit-logged.