OllieLeads Start free
Blog · 8 min read

Formspree not sending email: how to fix it

Formspree not sending email? Check spam, the monthly limit, its bounce block and the form address. Each fix, from Formspree's own docs, checked October 2026.

person using MacBook Pro - person checking email on computer screen
Photo: Glenn Carstens-Peters on STOCK_UNSPLASH
On this page
  1. Key takeaways
  2. Check these five things first
  3. Is it the form or the email?
  4. The email arrives, but it's blank
  5. It works on your computer but not on the live site
  6. Symptoms and fixes at a glance
  7. Keep the lead even when the email fails
  8. How OllieLeads handles the same failures
  9. FAQ

When Formspree stops sending email, the submission usually still reached Formspree: the email is what failed. Check five things in this order: your spam folder (and Outlook's quarantine), the plan's monthly limit, whether your email server bounced Formspree, whether the form still posts to an email address instead of a form ID, and whether the address it sends to is verified. Your Formspree dashboard tells you which: if the submission is there, the form works and only delivery broke.

Key takeaways

  • Open your Formspree dashboard first. A submission that is there but not in your inbox means delivery failed, not the form.
  • Past the monthly limit, Formspree keeps accepting submissions but stops emailing them, and holds them in an Over Limit folder until you upgrade.
  • If your mail server once rejected a Formspree email, Formspree blocks that address until you unblock it at formspree.io/unblock/ followed by the address.
  • Forms that post to formspree.io/your@email.com are legacy forms that Formspree is phasing out; move them to a /f/ form ID.
  • A form field without a name attribute is never sent, so its email arrives blank.

Check these five things first

  1. Spam, and Outlook's quarantine. Search your mail for "formspree" rather than scrolling. Formspree's own guide to missing emails starts here, and adds that Outlook 365 can quarantine the formspree.io domain, which hides messages from the junk folder too. A Microsoft 365 admin can release them from quarantine.
  2. The monthly limit. The Free plan includes 50 submissions a month (Formspree plans, checked October 2026). Past the limit, Formspree keeps accepting submissions but sends no notification emails, emails you once to say so, and holds the rest in an Over Limit folder where you only see a preview of each. Upgrade, then reprocess them to get the emails.
  3. Your mail server bounced Formspree. If your server once answered a Formspree email with an error, Formspree blocks that address so it doesn't keep bouncing. Open https://formspree.io/unblock/you@example.com with your own address in place of the example.
  4. The form posts to an email address. Look at your form's action. If it is https://formspree.io/you@example.com, it is a legacy form, and Formspree is phasing those out. A legacy form only delivers once you click its activation email: Formspree holds the first submission for 24 hours and discards the ones after it until then. Create a form in the dashboard and use its https://formspree.io/f/ address instead.
  5. The address it sends to isn't verified. A form can only send to your verified email addresses. If you changed where the form sends, link and verify the new address in your account first.

Is it the form or the email?

Send the form once with your browser's developer tools open on the Network tab, and look for the request to formspree.io.

  • No request appears: the form never sent. Check that the action is your Formspree address, the method is post, and no script stops the submit without sending it.
  • A success, or a redirect to Formspree's thank-you page: Formspree has the submission. Find it in your dashboard and work through the email checks above.
  • A 429: the form was sent more than 20 times in a minute, Formspree's rate limit for each form (Formspree system limits). Wait a minute and try once.
  • Another 4xx: read the response. Formspree says what it refused.

To rule out your page completely, send a test from a terminal, with your form's ID:

curl -X POST https://formspree.io/f/YOUR_FORM_ID \
  -H "Accept: application/json" \
  -d "email=test@example.com" -d "message=Test from curl"

If that arrives and your form's doesn't, the problem is on your page.

The email arrives, but it's blank

Browsers only send fields that have a name attribute, so an input without one reaches Formspree empty. Formspree's note on blank emails has the fix: give every input, textarea and select a name. Forms written by coding agents often set only an id, which isn't enough.

It works on your computer but not on the live site

  • A different form ID. Projects often keep one form for development and another for production. Check the action in the deployed HTML, not in your editor.
  • A script that expects JSON. A form sent with fetch should send the header Accept: application/json; that is how Formspree tells a script from a page. Without it, Formspree answers the way it answers a browser form, with a redirect, which a script can mistake for a failure.
  • Your host isn't the cause. A form that posts to Formspree goes straight from the visitor's browser to formspree.io, so Vercel, Netlify or Cloudflare never see it. Only if your own server or a serverless function forwards the form does the host matter, and then its logs show the error.

Symptoms and fixes at a glance

What you seeMost likely causeFix
In the dashboard, not in your inboxSpam, quarantine or a bounce blockSearch spam, release from quarantine, open the unblock page
Emails stopped mid-monthThe monthly limitUpgrade, then reprocess the Over Limit folder
Nothing in the dashboard eitherThe form never sent, or posts to an email addressCheck the Network tab and the action
A 429 responseMore than 20 posts in a minuteWait a minute, then send once
Email arrives with empty fieldsFields without nameAdd a name to every field
Works locally, not liveA different form ID, or a script without the JSON headerCheck the deployed action and the request headers

Keep the lead even when the email fails

Most of these failures share one thing: the lead exists, and nobody hears about it. Formspree handles the first half well. Submissions it accepts stay in your dashboard, so check it after any outage. The gaps are the ones above: leads past the limit stay hidden behind a preview until you pay, a legacy form discards everything after its first submission until it is activated, and nobody hears about a lead whose email bounced until they think to look.

Whatever you use, make the stored lead the source of truth and the email only the alert.

How OllieLeads handles the same failures

OllieLeads is a form backend built on that rule: every lead is stored before your visitor sees the thank-you page, and you hear about it by email, Slack or Discord within a minute. Here is how the failures above play out on each (plans checked October 2026 on Formspree's plans and OllieLeads pricing):

When this happensFormspreeOllieLeads
You use the free plan50 submissions a month500 leads in total, with no monthly reset
You pass the free limitKept in an Over Limit folder as previews, with no emails, until you upgrade7 days with nothing changed, then new leads are kept for 30 days, showing the form, time, source and first name, until you upgrade
You need morePersonal: $15 a month for 200 a month. Professional: $30 for 2,000Pro: $29 a month for 1,000 a month, then $10 for each extra 1,000, and capture never pauses
The alert email failsThe submission stays in your dashboardThe lead stays in the app, and the same alert can also go to Slack or Discord
A new form goes liveLegacy email forms wait for activationNo activation: a form takes leads as soon as its site is allowed
A visitor leaves halfwayNothing is savedContact fields are saved with the OllieLeads script, after consent where the law asks for it

On OllieLeads, only leads with an email address or phone number count toward a plan; spam and test leads never do.

Formspree does some things OllieLeads doesn't. It takes file uploads, it has a longer track record and a catalogue of plugins, and at 2,000 a month its Professional plan ($30) costs less than OllieLeads Pro with one extra block ($39). If those matter more to you than the failures above, stay, and fix the cause with the checklist.

Moving a Formspree form to OllieLeads

  1. Create the form in OllieLeads, or ask your coding agent: Claude Code and Cursor can connect it through OllieLeads' remote MCP server.
  2. Allow your site. OllieLeads refuses browser posts from sites that aren't on the brand's allowed list, so add your domain first.
  3. Change the action to https://ollieleads.com/f/YOUR_FORM_ID. Field names stay as they are, and a _next field keeps working as long as it points at a page on your own site.
  4. Send a test lead. Posts from local development (localhost on port 3000, 5173, 4321 or 8080) count as tests automatically, so they never use up your plan.

A side-by-side comparison with Formspree goes through the rest, and the guide to contact forms not sending email covers the same problem for any form service.

FAQ

Why does my Formspree form say it was sent, but no email arrives?

Because Formspree accepted it and the email is what failed. Open the form's submissions in your dashboard: if the submission is there, check spam and Outlook's quarantine, open Formspree's unblock page for your address, and check whether you passed the monthly limit, which stops the emails but not the submissions.

Where does Formspree keep submissions when the email fails?

In the form's submissions in your dashboard. Submissions past the monthly limit go to an Over Limit folder instead, where you see only a preview of each until you upgrade and reprocess them (Formspree).

How many submissions does the Formspree free plan include?

50 a month. Paid plans start with Personal at $15 a month, or $10 a month billed yearly, for 200 submissions a month (Formspree plans, checked October 2026).

Can I still post a form straight to my email address with Formspree?

Those are legacy forms, and Formspree is phasing them out: they expose your address to bots and rely on a header browsers now limit. Create a form in the dashboard and point your action at its /f/ address.

What should I use if Formspree's emails keep failing?

First fix the cause above: most are settings, not Formspree faults. If you want a service where the alert can fail without the lead being out of reach, compare form backends on what happens when email fails and when you pass a limit. OllieLeads stores every lead first and never stops capturing on a paid plan; Basin, Web3Forms and Netlify Forms are other options, each with its own free tier, so check their pricing pages before you switch.

Published with SuperDuperSEO

This post as Markdown, for your coding agent or AI assistant.