29 July 2026

Every way to add a contact form to a static site (2026)

mailto links, DIY serverless functions, host-native forms, and form backends — an honest tour of the options, with the trade-offs spelled out.

Static sites are fast, cheap, and secure — right up until the client asks for a contact form, the one feature that genuinely needs a server somewhere. Here's the full menu of options in 2026, including the ones that don't involve us.

Option 1: a mailto link

Zero infrastructure: the 'form' is a link that opens the visitor's email app. It's also the option that loses the most leads — it fails silently for everyone without a configured mail client (most phones, most locked-down work machines), exposes the address to scrapers, and gives you no record of anything. Acceptable for a personal homepage; not for anything where an inquiry has value.

Option 2: build it yourself

A serverless function (Vercel, Netlify, Cloudflare Workers) that accepts the POST and relays it through an email API (Postmark, Resend, SES). This is a legitimate choice, and if you enjoy owning infrastructure it's a fine weekend project. The honest costs: you now maintain spam filtering, retries, storage, and an email sender reputation — per site. Multiply by ten client sites and 'it's just a small function' becomes a quiet standing liability. The build is a weekend; the maintenance is forever.

Option 3: your host's built-in forms

Netlify Forms is the best-known: add a data attribute, submissions appear in the Netlify dashboard. Genuinely convenient — with two catches. It couples your forms to your hosting (migrate the site, rebuild the forms), and the pricing ladder is steep past the free 100 submissions. If every site you'll ever build lives on one host and stays under quota, it's a reasonable choice.

Option 4: a form backend service

Point your form's action at a hosted endpoint; the service handles spam, storage, notifications, and integrations. This is the category FormDock is in, alongside Formspree and Web3Forms. The honest differences within the category: Web3Forms is email-first with a generous free tier — hard to beat for a personal site. Formspree has the deepest integration ecosystem. FormDock is built for client work: flat pricing, one workspace per client, notification routing, white-label emails, and submissions that are stored no matter what.

The integration, regardless of vendor
<form action="https://formdock.app/f/your-key" method="POST">
  <input type="email" name="email" required>
  <textarea name="message"></textarea>
  <button>Send</button>
</form>

Option 5: an embedded form builder

Typeform, Tally, and friends solve a different problem: they own the form UI itself, embedded via iframe. Right for surveys and multi-step intake flows; wrong when you want the form to look native to the site you carefully designed — and iframes bring their own weight, styling limits, and cookie implications.

How to choose

  • Personal site, near-zero traffic: Web3Forms' free tier or a mailto link if you truly don't care about missed messages.
  • One product site, deep integrations needed: Formspree or DIY serverless.
  • All-in on one host, low volume: that host's native forms.
  • Client sites, multiple projects, leads with real value: a form backend with workspaces and flat pricing — that's the exact shape FormDock was built for.
  • Surveys and complex intake: an embedded builder like Tally or Typeform.

Whichever you pick: use HTTPS, add a honeypot, and make sure submissions are stored somewhere other than an inbox. Email is a notification channel, not a database.

FormDock is a flat-priced form backend for freelancers and agencies — spam-filtered, stored, routed to the right inbox.

See how it works