PortForm

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.

1

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.

2

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.

3

Store

Every submission is written to the database first, so it exists whether or not the email later succeeds.

4

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.

endpoint
POST https://app.portform.co/api/submit

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.

We use optional analytics cookies to understand how the site is used. Necessary cookies for signing in and checkout always load. See our privacy policy.