NEW AI agents now first-class: authorize · audit · revoke in one click — your agents submit cleanly, bots stay blocked. Read agent docs →

Netlify Forms alternatives in 2026: a migration guide

Netlify Forms used to be the no-brainer choice if your site was already on Netlify. Recent billing changes made the cost less predictable, and a lot of people are quietly migrating. Here's how to do it — including the actual code diff for each alternative.

Disclosure

I build Form4Dev, one of the alternatives below. This is written as a practical migration guide rather than a sales pitch — every alternative listed gets the same code-diff treatment, including the cases where I'd recommend a competitor.

What changed and why people are leaving

Netlify Forms was built around a simple value proposition: you're already on Netlify, so adding a form is one HTML attribute. For years, the included quota on most plans covered normal usage and nobody thought about it.

The shift to credit-based billing changed that. Form submissions now consume credits from a shared pool that also covers function invocations and bandwidth. A single afternoon of bot spam against a form can drain credits your build process expects, and the cost-per-submission becomes harder to forecast.

Combined with general Netlify pricing changes, this has pushed teams to look for a dedicated form backend that's priced per-form-submission, not per-credit. Below is what's available and how to migrate to each.

Before you migrate: export your data

Netlify Forms lets you export submission history as CSV from the dashboard. Do this first, regardless of which alternative you pick. Once you re-point your form's action URL elsewhere, the new service starts collecting submissions immediately, but the old ones stay in Netlify until you export.

$ # Site → Forms → [select form] → Download as CSV
$ # or via CLI:
$ netlify api listSiteForms --data '{"site_id":"YOUR_SITE_ID"}'

Save the CSVs somewhere durable. You may not need them, but you don't want to need them and not have them.

The migration: what actually changes

Netlify Forms works via a special HTML attribute pattern:

<form name="contact" method="POST" data-netlify="true">
  <input name="email" type="email" required>
  <textarea name="message" required></textarea>
  <button>Send</button>
</form>

Netlify's build process detects the data-netlify="true" attribute, registers the form, and rewrites it to POST to its own form-handling endpoint. To move off, you remove that attribute and explicitly point the form at the new service's endpoint URL.

Here's that change for each alternative.

Alternative 1 — Formspree

The boring, mature choice. Most documented, most integrations, $10/mo starter past 50 submissions.

The diff:

- <form name="contact" method="POST" data-netlify="true">
+ <form action="https://formspree.io/f/<YOUR_FORM_ID>" method="POST">
    <input name="email" type="email" required>
    <textarea name="message" required></textarea>
    <button>Send</button>
  </form>

Honeypot: Formspree uses _gotcha — add <input type="text" name="_gotcha" style="display:none">.
Redirect after submit: add a hidden _next field with your thank-you URL, or set it in the dashboard.

Alternative 2 — Basin

The dashboard-quality choice. Nicest UI in the category, $8.25/mo starter, 100/mo on free.

- <form name="contact" method="POST" data-netlify="true">
+ <form action="https://usebasin.com/f/<YOUR_FORM_ID>" method="POST">
    <input name="email" type="email" required>
    <textarea name="message" required></textarea>
    <button>Send</button>
  </form>

Basin's spam filtering is good enough that you can usually skip an explicit honeypot. Redirect URL goes in the form settings.

Alternative 3 — Formcarry

The price-optimized choice. $6/mo starter, lifetime archive on free tier.

- <form name="contact" method="POST" data-netlify="true">
+ <form action="https://formcarry.com/s/<YOUR_FORM_ID>" method="POST">
    <input name="email" type="email" required>
    <textarea name="message" required></textarea>
    <button>Send</button>
  </form>

Alternative 4 — Web3Forms

The unlimited-free-tier choice. POSTs go to a single endpoint with your access key embedded in the payload.

- <form name="contact" method="POST" data-netlify="true">
+ <form action="https://api.web3forms.com/submit" method="POST">
+   <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
    <input name="email" type="email" required>
    <textarea name="message" required></textarea>
    <button>Send</button>
  </form>

Heads up: the access key is visible in your page source. Web3Forms scopes the key to one email destination, so a leaked key sends mail to your inbox — annoying but not catastrophic.

Alternative 5 — Form4Dev

Full disclosure — my product. The agent-and-automation-first choice, with transparent flat pricing ($0 / $9 / $29) and every feature on every plan.

- <form name="contact" method="POST" data-netlify="true">
+ <form action="https://login.form4dev.com/api/submit/<YOUR_SLUG>" method="POST">
    <input name="email" type="email" required>
    <textarea name="message" required></textarea>
+   <input type="text" name="_gotcha" tabindex="-1" style="position:absolute;left:-9999px">
    <button>Send</button>
  </form>

Slug is whatever you named the form when you created it. Redirect URL is configured in the form settings or passed via _next in the payload.

What to test after migrating

Five things, in this order:

  1. Submit each form once from a real browser. Confirm the new service receives it and the notification email arrives.
  2. Check the Reply-To header on the notification. It should be the submitter's email. If hitting "reply" emails the service instead, that's a config issue.
  3. Submit a deliberate spam payload (fill the honeypot, or paste a known-spam URL). Confirm it gets blocked or quarantined, not delivered.
  4. Re-run any webhook integrations. Netlify Forms' webhook payload shape is service-specific; your new service's shape will differ. Update receivers.
  5. Leave Netlify Forms enabled for a week while DNS and CDN caches settle. Then disable.

Things that quietly break

Your netlify.toml form settings

If you configured spam filtering or webhook destinations in netlify.toml, those don't transfer. Reconfigure in your new service's dashboard.

Form rendering during the Netlify build

Netlify's build inspected your HTML for data-netlify attributes and registered forms at deploy time. With that attribute gone, the build process won't complain — but if you have a "form not found" message cached in your generated output, clear the cache.

JavaScript-rendered forms

Netlify Forms had a special path for client-side-rendered forms (netlify-honeypot, data-netlify-honeypot). Most alternatives don't need this — they detect honeypot fields by name regardless of how the form was rendered.

Hidden form for static prerendering

If you used the Netlify trick of including a hidden HTML form in your site so the build could detect it, you can delete that hidden form. The new service registers your form when you create it in the dashboard, not at build time.

FAQ

Will my Netlify Forms submissions transfer to the new service?

No. Historical submissions stay in Netlify. Export them as CSV before migrating. The new service starts collecting from the moment you re-point the form.

Can I keep using Netlify hosting and switch only the form backend?

Yes. The form-backend service is independent of where your site is hosted. Many people stay on Netlify for hosting and use a third-party service just for forms.

What about Netlify Functions that processed form submissions?

Most alternatives offer webhooks that fire on each submission — point your Netlify Function at the webhook URL and you keep your custom logic. Or move the function to a serverless endpoint elsewhere.

Which Netlify Forms alternative is cheapest at 10,000 submissions/month?

Web3Forms ($10/mo with dashboard), Formcarry ($15-30/mo depending on plan), Form4Dev ($29/mo Team plan), Basin (~$25/mo), Formspree ($35-50/mo). Verify on current pricing pages — these change.

Which alternative handles AI agents submitting forms?

Of the services here, Form4Dev is built specifically for agent submission as a first-class case. Deeper writeup at form backends for AI agents.

The takeaway

Netlify Forms was a great default while the pricing was predictable. The credit-based model made it less so, and a dedicated form backend is now usually the simpler answer. Migration is an afternoon's work: export, swap the action URL, test, ship. The alternatives above all do the job; the right one depends on what you value past "it works."

If you want the cleanest path for forms that also accept submissions from scripts and AI agents, Form4Dev is built around that case. Start free — 100 submissions/month on free, all features unlocked, no credit card.

Last updated May 15, 2026. Spotted something out of date? Email [email protected].