Furrow Forms

Hosts & site builders · works with Furrow Forms

Contact forms for sites on Vercel

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

components/contact-form.tsx
'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

Why Vercel sites need a form backend

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.

01

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.

02

Function invocations for bot traffic

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.

03

Preview deploys, one config

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

Set it up yourself, or don’t

Hand it to your agent

[ recommended ]

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.
  1. 1.Registers the account over POST /api/register — you read one 6-digit email code
  2. 2.Provisions the site: client, project, and forms in one idempotent bootstrap_site call
  3. 3.Pastes the generated snippet into your codebase
  4. 4.Fires test_webhook and verifies the signed delivery

Or do it by hand

  1. 01Create a free account and a project for the site.
  2. 02Point your form at the endpoint — delete the /api/contact route if you had one.
  3. 03Allow your production (and preview) domains and set recipients once on the project.
  4. 04Ship. Settings changes apply instantly, with no redeploy.

free tier: 100 subs/mo · unlimited forms · full API + MCP · pricing →

FAQ

Vercel + Furrow Forms, answered

Does Vercel have built-in form handling?

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.

How do I add a contact form to a static site on Vercel?

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.

Do forms work on preview deployments?

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.

The form backend your agent can run.

paste this into your agent

Fetch furrowforms.com/ai and set up forms for this site.

Setup for agents →