All resources
Concepts & fundamentals

What Is a Form Backend? (And When You Need One)

A form backend receives, stores, and routes HTML form submissions so static sites can have working forms without a server. Here's how they work and when to use one.

The ShipMyForm team

· 3 min read

A form backend is a hosted service that receives your HTML form's submissions at a URL, stores them, and routes them to destinations like email, Slack, or a spreadsheet. It does the server-side work a <form> normally needs — without you running a server. You point your form's action at the backend, and it takes over from there.

That one idea is what lets a purely static site — an Astro build on a CDN, a Hugo site on GitHub Pages, a plain HTML page — have a working contact form.

Why static sites need one

A browser can send a form submission anywhere, but something has to be listening on the other end. Traditionally that "something" was your own backend: a PHP script, an Express route, a serverless function. You'd write code to parse the fields, block spam, save the data, and email yourself.

Static sites have no server to run that code. A form backend is the missing half:

  • The form markup stays in your site (you own the HTML and styling).
  • The submission handling moves to a hosted endpoint you don't maintain.

How a form backend works

The flow is short:

  1. A visitor fills in your form and hits submit.
  2. The browser sends a POST request with the field data to the backend's endpoint.
  3. The backend validates and spam-filters the submission.
  4. It stores the submission and fans it out to your configured destinations.
  5. It responds — either a JSON { ok: true } for a fetch request, or a redirect back to a thank-you page for a plain form.

With ShipMyForm, the endpoint is a per-form URL, and wiring it up is a single line:

html
<form action="https://shipmyform.com/f/YOUR_FORM_ID" method="POST">
  <input type="email" name="email" required />
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</form>

No fetch, no API route, no keys in your client code. The form's name attributes become the fields you receive.

Form endpoint:

The URL in your form's action is the form endpoint. Each form gets its own, so submissions are grouped per form and can have their own notifications and spam rules.

What a good form backend handles for you

The reason not to roll your own is everything around the submission:

JobWhat it means
StorageA searchable inbox of submissions, with CSV/JSON export
Spam filteringHoneypots, rate limiting, and challenges like Cloudflare Turnstile so bots don't flood you
NotificationsEmail on every submission, or a routed message to Slack/Discord
IntegrationsPush submissions to Google Sheets, Notion, Airtable, Zapier, or a webhook
Delivery reliabilityRetries when a downstream service is briefly down
CORS & originsOnly accept submissions from your own domains

Spam handling alone is worth it. If you want the details, see how to stop contact form spam without reCAPTCHA.

Build it yourself vs. use a hosted backend

You have two realistic options:

Roll your own (serverless function)Hosted form backend
Setup timeHours to daysMinutes
Spam protectionYou build itBuilt in
Storage & inboxYou build itBuilt in
Email deliverabilityYou manage a sending domainHandled
IntegrationsOne at a time, by handToggle on
MaintenanceOngoingNone
Cost at low volumeFree-ish, plus your timeFree tier, then flat

Rolling your own makes sense when you have genuinely custom server logic. For a contact, waitlist, or feedback form, a hosted backend is faster and you stop maintaining plumbing.

When you might not need one

  • You already run a backend and the form logic is trivial to add.
  • Your framework has first-class form handling you're happy with (e.g. a Next.js Server Action writing to your own database). Even then, a hosted backend still saves you the notification, storage, and spam work.

Getting started

If your site is static and you just want a form that works, a form backend is the shortest path. Point your action at ShipMyForm, and you get an inbox, spam filtering, and email notifications on the free tier.

Next: pick your stack — add a contact form to Astro, or compare the options in Formspree alternatives.

Frequently asked questions

What is a form backend?
A form backend is a hosted service that receives HTML form submissions at a URL, then stores them and routes them to destinations like email, Slack, or a spreadsheet. It replaces the server-side code you would otherwise write to handle a form.
Do I need a backend for a contact form?
Not your own. A static site can post its form to a hosted form backend, which handles storage, spam filtering, and notifications. You only need to run your own server if you have custom server-side logic that a backend can't cover.
What is a form endpoint?
A form endpoint is the URL your form's action attribute points to. When someone submits the form, the browser sends the field data to that URL, where the form backend processes it.
Is a form backend the same as a form builder?
No. A form builder (like Typeform or Google Forms) gives you a hosted form UI. A form backend leaves the form markup to you and only handles what happens after submit, so it fits developers building their own HTML.

Related guides