Hello, world — public beta
FormFlow is now in public beta. Everything below ships in this first public release — create a form in the console, point your HTML at its endpoint, and read everything back from a console that doesn’t look like a 2014 admin panel.
Submission ingest
- One public endpoint per form:
POST /v1/f/<slug>— form posts,multipart/form-dataand JSON. - Email forwarding to your notification addresses.
Idempotency-Keysupport: client retries never create duplicates.- Predictable
application/problem+jsonerrors.
Anti-spam
- Honeypot field on every form by default — trips are stored as spam silently, with no notifications sent.
- Cloudflare Turnstile verification, toggleable per form.
- Per-IP, per-form rate limits with KV-backed counters.
- Spam-rate visibility in the submissions overview.
File uploads
multipart/form-dataattachments stored in R2 (formId/yyyy/mm/subId/idx-namelayout).- Per-plan file size limits, enforced before storage.
- Files attached to spam submissions are never stored.
Webhooks
- Per-form webhooks with server-generated secrets and one-click rotation.
- Deliveries signed with HMAC-SHA256 (
x-formflow-signature: sha256=…). - Retries on a 1 s → 10 s → 1 min → 10 min → 1 h schedule, 5 attempts max.
- Delivery log with manual replay, plus a synchronous signed test ping.
Console & accounts
- Console: form list, form detail, submission viewer with files.
- Magic-link sign-in; sessions in KV. No passwords.
- API keys (
ff_sub_…/ff_mgmt_…) with one-time display and instant revocation. - Usage view: monthly submission quota and per-plan limits.