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:
- A visitor fills in your form and hits submit.
- The browser sends a
POSTrequest with the field data to the backend's endpoint. - The backend validates and spam-filters the submission.
- It stores the submission and fans it out to your configured destinations.
- 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:
<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.
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:
| Job | What it means |
|---|---|
| Storage | A searchable inbox of submissions, with CSV/JSON export |
| Spam filtering | Honeypots, rate limiting, and challenges like Cloudflare Turnstile so bots don't flood you |
| Notifications | Email on every submission, or a routed message to Slack/Discord |
| Integrations | Push submissions to Google Sheets, Notion, Airtable, Zapier, or a webhook |
| Delivery reliability | Retries when a downstream service is briefly down |
| CORS & origins | Only 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 time | Hours to days | Minutes |
| Spam protection | You build it | Built in |
| Storage & inbox | You build it | Built in |
| Email deliverability | You manage a sending domain | Handled |
| Integrations | One at a time, by hand | Toggle on |
| Maintenance | Ongoing | None |
| Cost at low volume | Free-ish, plus your time | Free 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
Astro Contact Form Without a Backend (2026)
A copy-paste contact form for Astro that emails you on every submission — no server or API route.
ShipMyForm vs Formspree: An Honest 2026 Comparison
An honest look at ShipMyForm vs Formspree: free tiers, retention, spam, pricing, and a drop-in migration that is usually one URL change.
How to Stop Contact Form Spam Without reCAPTCHA
Honeypots, rate limiting, and Turnstile — layered spam defenses that beat reCAPTCHA without the puzzles.