Form backend
What is a form backend?
A form backend is the service that runs behind an HTML form. When someone hits submit, it receives the request, validates and stores the data, filters spam, and delivers it somewhere you will see it. PortForm is a hosted one: you point a form at it and skip building any of that yourself.
A form is the easy half.
The markup takes a minute. The work is everything that has to happen after submit, and a static site can send an email or write to a database on its own.
Do it yourself and the list is the same every time: an endpoint, request handling, validation, spam protection, storage, email delivery, retries, and something to watch it. That is a backend you now maintain forever, for a contact form.
You can build it yourself. A form backend is for when you would rather keep your own backend focused on your actual product.
How a form backend works.
Four steps between someone submitting and you reading it. PortForm runs all of them.
Receive
The form posts to a URL the backend owns. It accepts form encoding, multipart and JSON, so any form or client can reach it.
Validate and filter
Required fields are checked, the payload is size-limited, and spam is caught by a honeypot and, on Pro, a CAPTCHA before it reaches you.
Store
Every submission is written to the database first, so it exists whether or not the email later succeeds.
Deliver
An email lands in your inbox with Reply-To set, and any integrations fire. Email is attempted immediately, with a late recovery attempt for a stuck submission and a manual retry from the dashboard. Integrations are retried automatically; every delivery is logged.
What PortForm handles for you.
- Storage of every submission, searchable and exportable to CSV.
- Email delivery with Reply-To set to the sender: attempted immediately, one late recovery attempt if a submission has no recorded attempt after 10 minutes, and a manual retry from the dashboard for a failed send, which is recorded with its error. Integrations are retried automatically.
- Spam filtering: a honeypot on every plan, hCaptcha free, Turnstile and reCAPTCHA on Pro.
- Integrations to Slack, Google Sheets, Notion, HubSpot, Discord and webhooks (Pro).
- A dashboard, quotas and retention, so nothing runs unmonitored.
For developers.
One endpoint, one hidden field. It works from a plain <form action>, from fetch, or from a server action. Full request and response reference is in the docs. For the email side, see sending an HTML form to email; for a site with no server, see a form backend for static sites.
POST https://app.portform.co/api/submitOne backend, every kind of form.
The same service behind a waitlist, a contact form, a survey or a job application.
- Waitlist formsCollect early signups before you have a product.
- Contact formsThe classic name / email / message, delivered to your inbox.
- Newsletter signupCapture subscribers straight into your inbox or a sheet.
- Lead captureRoute new leads to your inbox, Slack, or CRM.
- Feedback formsLet customers tell you what to fix, straight to your inbox.
- Survey formsMulti-question responses collected as one submission.
- Job application formsCollect applications and résumés in one submission.
- Event registrationRSVPs and sign-ups collected straight to your inbox.
- Customer supportA support form that reaches your team fast.
- Demo requestsQualify and route demo requests to sales.
Questions
- What is a form backend?
- A form backend is the service that runs behind an HTML form. When someone submits, it receives the request, validates the data, stores it, filters out spam, and delivers it somewhere you will see it, usually an email and a dashboard. It is the part a static site cannot do on its own.
- Why not build a form backend myself?
- You can. For a simple website form it is often more work than it looks: an endpoint, request handling, validation, spam protection, storage, email delivery, retries and monitoring. A hosted form backend gives you those so your own backend can stay focused on your actual product.
- Do I need a server to use a form backend?
- No. That is the point. Your form posts to the backend over plain HTTP, so a static HTML page, a landing page or a Jamstack site works with no server of your own.
- What happens to a submission after it is sent?
- With PortForm every submission is stored first, then the email is attempted immediately. A submission with no recorded attempt after 10 minutes can get one late recovery attempt, failed sends can be retried manually from the dashboard, and integrations are retried automatically on failure. Storage does not depend on the email succeeding, so a submission is never silently lost.
Skip the backend. Keep the form.
Point a plain HTML form at PortForm and the submissions start arriving. 300 every 30 days, free, no card.