All articlesGuides

Form Backend for a Static Site: A Practical Formspree Alternative

Static sites cannot process a form on their own, so you need a backend that accepts the POST. Here is what a form endpoint actually has to do, and where the cheap options run out.

BotForms TeamUpdated 7 min read
A developer workspace with code on a monitor and a phone showing a submitted contact form

Short answer: a static site has no server, so a form needs a hosted endpoint to POST to. The endpoint category is commoditized and cheap; what actually differs is everything after the POST — spam filtering, storage, file handling and follow-up. As of August 2026 a business-grade form platform runs roughly $25–$80 a month, and BotForms Starter is $29. If you only need an email relay, buy the cheapest thing. If you need the pipeline, compare the pipeline.

If your site is Next.js exported statically, Astro, Hugo, Eleventy, Jekyll, plain HTML on a CDN, or anything on Netlify or Vercel without server functions, there is no process running to receive POST /contact. That is the entire problem, and it has exactly three solutions.

The three options, honestly

Option one: a hosted form endpoint. You point <form action> at a URL somebody else operates. They receive the submission, filter it, store it and notify you. Setup is minutes. You give up control of what happens after the POST.

Option two: your own serverless function. A Next.js route handler, a Netlify function, a Cloudflare Worker. You control everything and you maintain everything.

Option three: an embedded widget. A script tag that renders a form somebody else built and styled. Fastest to set up, easiest for a non-developer to change later, and it costs page weight on every visit.

Most developers instinctively reach for option two, and for a genuinely simple contact form that instinct is sound. The reason to reconsider is not difficulty — it is scope creep, which is predictable enough to plan for.

What building it yourself actually commits you to

The endpoint is an afternoon. Here is the list that follows it, roughly in the order teams hit each item.

Spam, within about two weeks. A public endpoint gets found by scrapers fast, and the submissions arrive in bursts. You will add a honeypot, then a timing check, then server-side content filtering. This is not hard, but it is three iterations you did not plan.

Storage, when email is not enough. Emailing yourself works until you need to find the enquiry from six weeks ago. Now you want a database, a query, and something to read it in.

Retry behaviour, the first time your email provider has an incident. If your route calls an email API synchronously and it fails, the submission is gone and the visitor saw a success message. This is the failure mode that costs real money, and it is invisible — nobody reports the lead that never arrived.

File uploads, if your form has any. Multipart parsing, size limits, virus scanning if you are handling anything sensitive, and storage that is not your git repository.

A reply to the submitter. People expect an acknowledgement. Now you are writing template rendering and managing a second email path.

Something a non-developer can use. The moment someone in the business asks "can you add a field", you either become the form department or you build an admin UI.

None of that is beyond a competent developer. The honest question is whether it is the best use of the time, and for most teams shipping a product it is not. If forms are core to what you sell, build it. If forms are how customers reach you, buy it.

What to compare when you buy

Assume every option in the category can receive a POST and email you. That is table stakes and it is where comparison usually stops, which is why people end up switching twice.

Capability Endpoint-only tools Full form platform
Accepts POST from any origin Yes Yes
Email notification Yes Yes
Spam filtering Basic, often honeypot only Layered, server-side content filtering
Submission storage and search Limited or absent Full history, filter, export
File uploads Often capped low or paid Included, with plan storage
Automatic reply to submitter Rare Standard
PDF of each submission No Common
Non-developer editing No Yes

The right column is not automatically better. If you have a personal site with a contact form, the left column is correct and cheaper, and paying for the right column is waste. The distinction matters when the form is a revenue path.

Two details are worth checking specifically because they are where quoted prices and real bills diverge. First, what happens at the submission cap — some platforms bill overage, some silently reject, and silent rejection while you are running paid traffic is the worst outcome in this entire category. Second, whether spam filtering and automatic replies are included or billed as extras, because those are the two things you will definitely end up wanting.

On BotForms, spam protection, PDF generation and the automatic welcome email are on every plan including Starter at $29/month. The full limits are on the pricing page — the number that constrains most people is submissions, at 1,000 a month on Starter and 10,000 on Pro.

The performance argument for endpoints

There is a real technical reason to prefer action="https://..." over an embedded script, and it gets overlooked.

An embed loads JavaScript on every page view. A visitor who never touches the form still pays for it in bytes and in main-thread time, and if it is on your homepage it is in the critical path for a Core Web Vitals measurement you care about. A form posting to a hosted endpoint loads nothing — the network call happens on submit, after the visitor has already decided to convert.

If you are optimizing page speed, this is one of the rare cases where the simpler implementation is also the faster one. Plain HTML, no dependency, no render cost.

The trade-off is that a plain HTML form gives you a full page navigation on submit unless you intercept it. Intercepting with fetch and showing an inline success state is about fifteen lines and worth writing, because a full page reload to a thank-you page loses the analytics context and feels dated.

Where AI generation fits for a developer

If you are technical, the pitch for AI form generation lands differently than it does for a marketer. You do not need help placing fields — you need to not write the same eight-field intake form for the fourth client this quarter.

Generating from a description gets you a complete field set with sensible types and validation in seconds, and you then edit it. The edits are predictable: generated forms over-collect, over-validate, and mark too many fields required. That is consistent enough to be a checklist rather than a surprise, and we wrote it up in what AI can and cannot do with form questions.

The more useful capability for agency work is the document path — upload an existing PDF or a photo of a paper form and get a working digital version back. Clients almost always have the paper version, and rebuilding it by hand is the tedious part of the job. The PDF-to-form workflow covers what OCR reliably recovers and what it does not.

Migrating off an existing endpoint

Straightforward, and worth doing carefully for one reason.

  1. Create the new form and get its endpoint URL.
  2. Export your existing submissions to CSV. Do this before you change anything. It is the only irreplaceable part.
  3. Change the action attribute. That is the actual migration.
  4. Submit a real test through the live form, from a real browser, not curl. Confirm the notification arrives where you expect and the stored submission looks right.
  5. Leave the old endpoint live for a week. Cached pages and stale service workers will keep posting to it, and cancelling immediately means silently losing those.

That last step is the one people skip. A CDN-cached HTML page can serve the old form action for longer than you expect, and those submissions vanish without any error anyone will see.

Spam is the thing that will actually bother you

Every public form endpoint gets found. The submissions are recognisable — bursts rather than a trickle, a URL in a name field, the same text pasted into every input.

Three cheap defences handle nearly all of it, in this order: a honeypot field hidden from humans, a minimum time-to-submit threshold because bots complete forms in under two seconds, and server-side filtering on content. A visible CAPTCHA works too, but it costs real submissions from real people, which is a bad trade for a contact form. The full approach is in stopping contact form spam without a CAPTCHA.

Worth knowing that "bot form" is ambiguous when you go searching for help with this — it is used for chat-style forms, for AI-built forms, and for the spam bots attacking your form. Which one people mean is usually clear from context, and we untangled the three in what a bot form actually is.

Choosing, in one paragraph

If the form is a contact link on a personal site, use the cheapest endpoint that emails you and stop thinking about it. If the form is how customers buy from you, the endpoint is the least interesting part of the decision — compare on what happens after the POST, and specifically on spam filtering, submission storage and whether the person who submitted gets an acknowledgement without you building one.

Every BotForms plan runs a 30-day trial with no free tier. Capabilities are on features, limits and add-ons on pricing, and you can start a trial and have a working endpoint in about five minutes.

Frequently asked questions

What is a form backend and why does a static site need one?

A static site is files served from a CDN with nothing running on a server, so there is no code to receive a form submission, validate it, store it or email you. A form backend is a hosted endpoint you point your form's action attribute at — it accepts the POST, filters spam, stores the submission and notifies you. It exists purely because static hosting deliberately has no server-side runtime.

What is a good Formspree alternative?

It depends on whether you need just the endpoint or the whole pipeline. If all you want is a POST target that emails you, the category is commoditized and almost anything works. If you also need spam filtering that survives contact with reality, submission storage you can search, PDF generation and automatic replies, you are comparing platforms rather than endpoints. As of August 2026 BotForms starts at $29/month with 1,000 submissions, unlimited forms and all of that included.

Can I just use a Next.js API route instead?

Yes, and for a simple contact form it is a reasonable choice — a route handler, a validation library and an email API get you working in an afternoon. What you are signing up to maintain is everything after that: spam filtering, storage and retrieval, retry behaviour when the email API is down, file upload handling, and a UI for reading submissions. Most teams build the endpoint, skip the rest, and then discover the gaps one incident at a time.

How do I stop spam on a static site form?

Layer three cheap defences before you reach for a visible CAPTCHA. A honeypot field hidden from humans catches naive scripts. A minimum time-to-submit check catches anything completing the form in under two seconds. Server-side content filtering catches the rest. A CAPTCHA works but costs real submissions from real people, so treat it as the last resort rather than the first move.

Do form backends handle file uploads?

Most do, but the limits vary enormously and this is the detail that bites. Check the maximum file size, the total storage included, and what happens when you exceed it. A contact form rarely needs uploads; an intake form for a trades business or a claims process needs them constantly, and a 5 MB cap makes photos from a modern phone fail silently for the visitor.

Will a hosted form endpoint slow my site down?

No, because nothing loads at page render — the endpoint is only touched on submit, when the visitor has already decided to convert. This is a genuine advantage over embedded third-party widgets, which pull JavaScript on every page view whether anyone fills the form or not. If page speed matters to you, a plain HTML form posting to a hosted endpoint is the fastest option available.

Can I keep my own form design?

Yes. Posting to a hosted endpoint means the markup and styling stay entirely yours — you are only outsourcing what happens after submit. This is the main reason developers prefer endpoints over embeds. An embed is faster to set up and easier for non-developers to change later, so the right choice depends on who maintains the site more than on the technology.

Build this form in about a minute

Describe what you need to collect — or upload a PDF of the form you already use — and BotForms builds it, hosts it, and routes every submission to your inbox.

Start your 30-day trial

Keep reading