There is no native forms feature to lean on
Unlike some hosts, Vercel leaves form handling entirely to you. Furrow supplies it as a service: storage, spam stack, email, signed webhooks — one POST away from any deployment.
Hosts & site builders · works with Furrow Forms
Vercel serves the site; Furrow catches the forms.
paste this into your agent
Fetch furrowforms.com/ai and set up a contact form backend for my site on Vercel.agent-readable recipe: /forms-for/vercel.md
prefer clicking? start in the dashboard
'use client';
export function ContactForm() {
const loadedAt = Date.now();
async function submit(formData: FormData) {
const res = await fetch('https://api.furrowforms.com/s/fp_k7m2', {
method: 'POST',
body: formData,
});
const { ok } = await res.json();
}
return (
<form action={submit}>
<input type="text" name="_gotcha" style={{ display: 'none' }} tabIndex={-1} />
<input type="hidden" name="_ft" value={loadedAt} />
<input name="email" type="email" required />
<textarea name="message" required />
<button>Send</button>
</form>
);
}The gap
Vercel gives you world-class deploys — and no form handling: there is no “Vercel Forms,” so every template’s contact form either ships dead or drags in an API route, a mail provider, and a spam story of its own. Furrow Forms is the missing piece, shaped like Vercel itself: a managed endpoint you point markup at. It works identically for Next.js, Astro, SvelteKit, or plain static output; config changes apply without a redeploy; and the whole backend is operable by the same agents that build and deploy on Vercel.
Unlike some hosts, Vercel leaves form handling entirely to you. Furrow supplies it as a service: storage, spam stack, email, signed webhooks — one POST away from any deployment.
Handling forms in your own API route means paying compute for every spam POST and writing the rate limiting yourself. Furrow absorbs raw traffic on its side; rejected posts never reach your functions or your quota.
Domains, recipients, and webhooks live at the project level in Furrow — allow your production and preview domains once, and every branch deploy has working forms.
Two ways in
Furrow’s whole control plane is an API and MCP server. Paste this prompt into Claude Code, Cursor, or any agent — it does the rest:
paste this into your agent
Fetch furrowforms.com/ai and set up a contact form backend for my site on Vercel.free tier: 100 subs/mo · unlimited forms · full API + MCP · pricing →
FAQ
No — Vercel deploys and serves your site but offers no forms product. You either write an API route and own spam, email, and storage yourself, or point the form at a form backend like Furrow, which provides all three as a managed endpoint.
A plain HTML form with its action set to a Furrow endpoint works from any static output — the browser POSTs directly to Furrow and gets redirected to your thank-you page. No serverless function required.
Yes — add the preview domain pattern you use to the project’s domain allowlist alongside production. The allowlist is also what stops strangers from pointing their sites at your endpoint.
paste this into your agent
Fetch furrowforms.com/ai and set up forms for this site.