Documentation
FormRoute is in private access, and the full API reference ships with public access. What the product does today is below, and the per-stack code is already written.
One attribute
Point the form's action at your endpoint. There is no SDK to install and no library to import.
Every named field is submitted. FormData reads thename attribute, so a field without one never arrives.
<form action="https://api.formroute.dev/f/YOUR_ID" method="POST"> <input name="email" type="email" required /> <textarea name="message" required></textarea> <button>Send</button> </form>Server-side, in this order
Cloudflare Turnstile and an AI classifier run at the edge first, so blocked spam is never stored, never forwarded, and never counted against your limit. Then your validation rules run: email format, required fields, minimum length. Browser attributes are advisory, because anything that is not your form can POST to the endpoint, so the rules have to hold here.
What survives both is delivered. Email notification on every plan, plus your webhook and, on Indie and above, whichever destinations your routing rules name. Submissions are stored for a window you set from 0 to 30 days, 7 by default, or not stored at all.
Start where your stack is
Contact forms by stack has the working code for React, Next.js, Vue, Svelte, Astro, Hugo, Jekyll, GitHub Pages and plain JavaScript, with the constraint each one actually has. Integrations covers where a submission goes after the POST.