← Blog

The Form Backend Tax: Why You're Paying Extra for Something That Should Be Free

The Form Backend Tax: Why You're Paying Extra for Something That Should Be Free

I wrote about the contact form problem before. When I wanted to build a personal site, the contact form is where the whole thing fell apart. Not because forms are hard — because the options for handling them were all wrong.

I never tried any of the form backend services. They limit you on the free plan, they require another account and dashboard, and I didn’t want any of that for a simple site. My options were either skipping the form entirely or just putting my email address on the page.

So I skipped it. For years.

That’s the real cost of the form backend tax. It’s not the $9 or $19 a month. It’s all the sites that ship without a contact form because the overhead wasn’t worth it.

What does a form backend actually do?

Let’s strip this down to what a contact form actually needs:

  1. Collect the form data
  2. Send an email to the site owner

That’s it. Someone fills in their name, email, and a message. You get an email about it. Maybe you want to export the submissions later. Maybe you want to see them in a dashboard.

But the core job is: receive data, send email. It’s not a product. It’s a feature.

The $19/month pipe

Think about what you’re actually paying for with a form backend service.

Formspree gives you 50 submissions a month for free. Need more? That’s $8/month. Getform is similar — 50 free submissions, then $16/month. Netlify Forms costs $19/month as an add-on to your hosting.

What do you get for that money? A service that receives a POST request, stores it, and sends you an email. That’s a pipe. Data goes in one end, a notification comes out the other.

I’m a developer. Why would I pay for something so basic as submitting a contact form? But the alternative — building your own form endpoint — means writing a serverless function, setting up CORS, handling rate limiting, building spam protection, configuring email delivery, and maintaining all of it. For a contact form on a personal site.

The form backend industry lives in the gap between “too simple to justify a subscription” and “too annoying to build yourself.” It’s a gap that shouldn’t exist — and yet it’s wide enough that an entire SaaS category grew inside it.

Why this became a product category

The reason form backends exist as standalone services is that static hosting platforms didn’t include them. GitHub Pages can’t process form submissions — it’s a file server. Cloudflare Pages doesn’t have built-in forms — you need to write a Worker yourself. Even Netlify, which pioneered the Jamstack movement and understood that static sites need forms, decided to charge $19/month extra for it.

There’s a Cloudflare community thread that captures this perfectly. People just want a simple contact form. They don’t want to build their own backend. They don’t want to read docs about Workers, set up KV namespaces, or configure email routing. They want to add a <form> tag and have it work.

When the hosting platform doesn’t handle forms, someone else will — and they’ll charge you for it. That’s how a feature became a product category.

The two things you’ll do with form data

When you think about what you’re actually going to do with form submissions, there are really only two paths:

Path 1: Send me an email. This is most contact forms. Someone fills out the form, you get notified, you reply from your inbox. The form service is just a relay between the visitor and your email.

Path 2: Do something custom. Maybe you want to pipe submissions into a CRM, trigger a Slack notification, or kick off an automation. For that, you need webhooks or integrations — and a basic form backend service probably isn’t giving you the flexibility you need anyway. You’ll end up using Zapier, Make, or writing custom code. The form backend is just a middleman.

In path 1, you’re paying for email delivery you could get for free. In path 2, you’re paying for a pipe that adds a hop between the form and where the data actually needs to go. Either way, the value of the standalone form service is thin.

When a dedicated form service makes sense

I’m not saying Formspree, Typeform, or Getform are bad products. They make sense when you need things that go beyond basic data collection:

  • Multi-step forms with conditional logic and branching
  • Complex integrations — CRM sync, payment processing, file uploads
  • Form building — drag-and-drop editors for non-developers
  • Advanced validation and custom workflows

If you’re building a multi-step lead form that routes to different places based on what people select — yes, use a dedicated tool. That’s genuine product complexity.

But a contact form on a portfolio? A feedback form on a landing page? An RSVP form for an event? That’s not a product problem. That’s a hosting feature that’s missing.

What I built instead

ZeroDeploy handles forms the way I think they should work. Set your form’s action to /_forms/contact, set method to POST, and it works:

<form action="/_forms/contact" method="POST">
  <input type="text" name="name" placeholder="Name" required>
  <input type="email" name="email" placeholder="Email" required>
  <textarea name="message" placeholder="Message" required></textarea>
  <button type="submit">Send</button>
</form>

No third-party account. No API keys. No JavaScript. The form is auto-created on the first submission. We store the data, check if you configured email notifications, and send them. That’s all.

Spam protection is built in — honeypot fields, time-based checks, content scoring, rate limiting. Spam was a bigger problem than I expected. Bots find open form endpoints fast. But you can block most of it without complex tooling or worsening the experience for real visitors. No CAPTCHAs, no “click every traffic light” puzzles.

Forms are included on every plan — 100 submissions a month on free, 1,000 on Pro. Because a contact form shouldn’t require a subscription. It should be part of your hosting, the same way HTTPS is part of your hosting.

Wrap up

A contact form collects data and sends an email. That’s a feature, not a product. The only reason it became a product category is that hosting platforms forgot to include it.

If you’re tired of the form backend tax, try ZeroDeploy for free. Deploy your site, add a form tag, done. No extra accounts, no credit card, no extra billing. Or read our guide on adding a contact form to a static site for a full comparison of your options.