Search for a Formspree alternative and you get the same article fifteen times: a table of free tier limits, a paragraph of filler per service, and an affiliate link. The tables are usually right and almost never useful, because submission count is the thing that matters least about a form backend.

Here is a more useful way to think about it, written by people who build one. We have an obvious interest in your conclusion, so everything below is checkable against the services themselves.

Why people leave Formspree

Three reasons come up repeatedly, and only one of them is about price.

The free plan is a trial in disguise. Fifty submissions a month is enough for a portfolio and not enough for a working business site. The first paid tier starts at $15 a month for 200 submissions, which is a real jump for a brochure site that gets forty enquiries.

Branding on notification emails. Free-tier notifications carry Formspree's branding. For an agency forwarding enquiries to a client, that is somebody else's logo in your client's inbox.

Features you assumed were table stakes sit behind the paywall. Webhooks, team access and the stronger spam filtering are paid. If you arrived expecting a free plan to be a small version of the product rather than a subset of it, that stings.

None of this makes Formspree a bad product. It has run production traffic for a decade and it is more battle-tested than anything newer, including us. It is a pricing model, not a defect.

The question to ask first

Not "how many submissions do I get?" but "what happens when a submission goes missing?"

Every form backend works when everything works. They differ entirely in what they do when something breaks, and something always breaks. A mail provider gets slow. A client's IT filter quarantines your notifications. A recipient address has a typo in it. A bot floods the endpoint.

The service you want is the one that can tell you which of those happened.

That comes down to a design decision the marketing pages rarely mention: does the service store the submission, or does it just forward it?

A forwarder receives your POST, fires an email, and returns 200. If the email never lands, the message is gone, and there is nothing to recover. A store-then-deliver service writes the submission to a database first, returns 200 only once that write is durable, and treats the notification as a separate job with its own retries and its own recorded state.

The second design costs more to build. It is also the only one where "did it arrive?" has an answer.

The checklist

Take it to any service's docs, including ours.

Storage. Is the submission stored independently of the email? Can you read it in a dashboard a month later? What is the retention on the free plan?

Delivery visibility. Can you see per-attempt delivery state, including failures and retry counts? Or only a list of submissions with no indication of what happened next?

Spam that is held, not deleted. Silent filtering is unauditable. You want scored submissions held somewhere you can review, and you want spam to not count against your quota, because otherwise a bot can exhaust your plan.

Server-side validation. Field types, lengths and required checks enforced by the service. Anything relying on your HTML attributes is enforcing nothing.

Webhooks with signatures and retries. If you ever want submissions in your own system, you need a signed payload (HMAC, so you can verify it came from them) and automatic retries with a visible attempt log. Fire-and-forget webhooks fail silently.

Export. CSV and JSON, self-serve. Check that CSV export neutralises cells starting with =, +, - and @, or opening the file in Excel runs whatever a spammer typed into your form.

Domain restriction. Can you limit the endpoint to your own site's origin? Without it, anyone who views source can post to your form from anywhere.

Where FormJetty lands

We built FormJetty around the storage question, so this is where we do well and where we do not.

Every submission is written to the database inside one transaction with its delivery intent, before the endpoint returns success. Each notification and each webhook call keeps its own attempt record: status, retry count, error text, timestamps. Spam is scored, held in a separate inbox, and never counted against your monthly limit. All of that is on the free plan, along with signed webhooks, team workspaces and field rules, because a free plan that hides the useful parts is a trial.

What we do not have: file uploads (deliberately, with a 1 MB request cap), click-to-connect integrations beyond email and webhooks, and a track record. We are new. Formspree is not.

If your forms are load-bearing for a business today, that last point is worth taking seriously. If you are choosing a backend for a client site and you want to answer questions about it without opening a support ticket, we are a good bet.

A reasonable way to decide

Do not migrate. Add.

Point one low-traffic form at a new service and leave everything else where it is. Send a real submission. Then send a deliberately broken one: a bad recipient address, a payload that should trip the spam rules. Watch what each dashboard tells you.

The service that explains what happened is the one to move the rest of your forms to.

FormJetty is free for 500 submissions a month, every feature included.