Skip to content
FFormhook
Back to blog

Blog

Netlify Forms alternative: a form backend that works anywhere

· 4 min read

Netlify Forms is a genuinely convenient feature - if you stay on Netlify. It's built into the platform's build pipeline, so a form "just works" without any external service. The catch is in that first clause: it only works because Netlify's build step is doing the work, which means the form is quietly coupled to the host. Move the site, and the form stops working with it.

What Netlify Forms actually requires

Netlify Forms isn't a generic HTML feature - it's detected at build time. You add data-netlify="true" to a <form> tag, Netlify's build step scans the deployed HTML for that attribute, registers the form's fields, and only then does the endpoint exist to receive submissions. Three things follow from that:

  • The site has to be hosted and built on Netlify - the detection happens in their build pipeline, not in the browser.
  • Frameworks that render forms dynamically on the client (rather than emitting static markup with the attribute already in the HTML) often need extra workarounds, because there's nothing for the build-time scanner to find.
  • The form's existence is tied to a successful Netlify build, not to the markup itself.

The lock-in this creates

None of that is a flaw exactly - it's a reasonable design for a platform that wants an integrated feature. But it means your contact form isn't really a piece of your site; it's a piece of your hosting contract. Move to Vercel, Cloudflare Pages, a plain VPS, or anywhere else, and the form has to be rebuilt against a different mechanism. Evaluate a second host for cost, performance, or edge features, and the form is a line item you have to solve again before you can migrate. That's a strange amount of leverage for a contact form to hold over an infrastructure decision.

The host-agnostic alternative

A hosted form backend removes the coupling by not caring where the HTML is served from. There's no build-time scanning and no platform integration to depend on - just a plain form with its action pointed at an endpoint:

<form action="https://formhook.app/f/fh_your-key" method="POST">
  <label>Email <input type="email" name="email" required></label>
  <label>Message <textarea name="message" required></textarea></label>
  <button type="submit">Send</button>
</form>

That markup works identically on Netlify, Vercel, Cloudflare Pages, GitHub Pages, or a hand-rolled VPS - the browser submits the POST directly to the endpoint, so nothing about the host, the build tool, or the framework matters. Submissions land in a dashboard, trigger a push notification, and forward to a webhook (Formhook auto-detects Discord, Slack, and Microsoft Teams URLs and formats the payload for each; anything else gets a generic HMAC-signed JSON POST). Move hosts next year and the form doesn't notice - the action URL is the only thing tying it to anything, and it isn't tied to a host at all.

Spam, handled the same way regardless of host

Because the endpoint isn't relying on the host for anything, it has to handle spam itself rather than borrowing a platform's filtering: a honeypot field catches bots that fill in every input, rate limiting throttles abusive senders, and an optional Cloudflare Turnstile challenge (privacy-friendly, not Google reCAPTCHA) can be added per form for sites that need it. None of that depends on which platform is serving the page.

Switching is one attribute

If you're already on Netlify and happy there, Netlify Forms is fine - it's a legitimate convenience for sites that never plan to leave. But if you're migrating hosts, comparing platforms, or just don't want a contact form to be a reason you can't, a host-agnostic backend removes that constraint entirely. Formhook's Free tier handles 250 submissions a month with no card required, forms take a minute to wire up, and your full submission history - including uploaded files - exports as a ZIP whenever you want it. See the docs for the full setup, or start free and point your existing form at it today.

Ship a working form in one line

EU-hosted, submissions kept forever, push notifications on every tier.

Start free

No credit card · read the docs

Keep reading