DOCS

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.

QUICKSTART

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.

contact.html
<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>
WHAT RUNS ON EVERY SUBMISSION

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.

WHILE THE REFERENCE IS WRITTEN

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.

Get an endpoint to point at.

FormRoute is live in private access. Drop your email and we'll send your invite.

Free forever · 1,000 submissions/mo · unlimited forms