You built your site on GitHub Pages, Netlify, Vercel, or a plain HTML file. It looks great. But there is one problem.
Your contact form has nowhere to go.
Static sites have no server. No server means no backend. No backend means no way to process form submissions natively. You need a form backend to handle what your static site cannot.
This post covers every realistic option in 2026, what each one actually costs, and which one makes the most sense depending on your use case.
Why Static Sites Need a Form Backend
When a user submits a form on a regular server-rendered site, the server processes the submission, sends an email, saves it to a database, and does whatever else you configured.
Static sites have none of that. The page is just HTML and CSS served from a CDN. There is no process running in the background waiting to handle submissions.
Your options are:
1. Use a third-party form backend service
2. Write a serverless function yourself
3. Use your hosting platform's built-in forms
4. Self-host your own form backend
Each approach has genuine tradeoffs. Here is the honest breakdown.
Option 1: Third-Party Form Backend Services
These are hosted services that give you an endpoint URL. You point your form action at that URL, and they handle everything else.
Formspree
One of the oldest form backends. Been around since 2012.
What it does well:
Simple and reliable
Good documentation
Works with any HTML form
Large user base
Established reputation
The honest problems:
Free plan: 50 submissions per month
1 form only
No spam filtering
Submissions go straight
to the inbox, including spam
Paid plan: $15 per month
Spam filtering
More submissions
No lead management
No pipeline
Stops at the inbox
The biggest limitation of Formspree is that it stops at the inbox. Every submission becomes an email. You are responsible for tracking who you contacted, who you followed up with, and who converted. There is no system for that built in.
If you receive 20 enquiries per month and manually track them all in a spreadsheet or Gmail labels, Formspree works. If you want something that actually helps you manage leads, it does not.
Pricing: Free up to 50 submissions. $15 per month for paid features.
Netlify Forms
If you are already hosting on Netlify, their built-in forms are a natural first choice.
What it does well:
Zero configuration if already on Netlify
No external service needed
Clean integration with existing workflow
Submissions visible in the Netlify dashboard
The honest problems:
Free plan: 100 submissions per month
Basic spam filtering only
No email notifications by default
Need to set up notifications manually
Paid plans: $19 per month minimum
Still no lead management
Basic submission storage only
Locked to Netlify:
If you move hosting, you
lose your form history
Not portable
Netlify Forms is convenient if you are already on Netlify and have low volume. The moment you outgrow 100 submissions per month or need any form of lead tracking, it falls short.
Pricing: Free up to 100 submissions on Netlify free tier. $19 per month for Pro.
Basin
A simpler form backend aimed at developers who want clean, minimal tooling.
What it does well:
Clean developer experience
Good spam filtering
Reasonable pricing
Simple dashboard
The honest problems:
Free plan: 100 submissions per month
Paid plan: $15 per month
No lead pipeline
No follow-up reminders
No Google Sheets sync
Stops at the inbox like Formspree
Basin is a solid Formspree alternative, but it solves the same problem in roughly the same way. If Formspree is not working for you, Basin is a lateral move, not an upgrade.
Pricing: Free up to 100 submissions. $15 per month paid.
Web3Forms
A newer form of backend that has grown quickly.
What it does well:
Generous free plan
Good deliverability
Clean API
Actively maintained
The honest problems:
Free plan: unlimited submissions
but basic features only
Paid plan: $18 per month
No lead management
No pipeline
No follow-up system
Stops at the inbox
Web3Forms has a genuinely generous free plan, which is why it has grown. But the same limitation applies: it stops at the inbox. Every submission becomes an email, and you manage the rest manually.
Pricing: Free with limited features. $18 per month paid.
Formgrid
Full disclosure: I built Formgrid. This is the tool I use and the one I think is the most complete solution for developers and small businesses on static sites.
What it does differently:
Every other form backend on this list stops at the inbox. Formgrid does not.
Every submission becomes a tracked lead automatically. Not just an email. A lead with a status, a notes field, a follow-up reminder, and a conversion tracking system built in.
Submission arrives
Automatically becomes a lead
Status: New
You contact them
Status: Contacted
They become a customer
Status: Converted
Conversion rate updates automatically
You can rename the stages to match your exact workflow. A quote request business might use New Request, Quote Sent, Negotiating, and Won. An event organizer might use Registered, Confirmed, Attended. The pipeline adapts to how you actually work.
Google Sheets sync without Zapier:
Formspree charges $90 per month for Google Sheets integration. Formgrid includes it on Premium at $12 per month. No Zapier account. No automation setup. Every submission appears as a new row in your Google Sheet automatically.
Spam protection on every plan:
I tested the same crypto spam submission on the Formspree free plan and the Formgrid free plan last week. Formspree delivered it straight to the inbox. Formgrid blocked it silently before it reached the inbox.
Emoji in name fields, disposable email addresses, HTML injection, and known crypto spam patterns are filtered automatically on every plan, including free.
Open source and self-hostable:
The entire codebase is on GitHub under the MIT license. If you want unlimited free usage, you can self-host on Docker. No vendor lock-in.
Pricing:
Free: 3 forms, 25 submissions per month
Premium: $12 per month, unlimited forms,
1000 submissions, Google Sheets,
file uploads, CSV export,
auto-responder emails
Business: $29 per month, everything in
Premium plus custom HTML emails,
unlimited Google Sheets,
webhooks and Zapier,
15000 submissions
Option 2: Serverless Functions
If you are comfortable with code, you can write your own form handler as a serverless function on Vercel, Netlify, or Cloudflare Workers.
// Example Vercel serverless function
export default async function handler(req, res) {
const { name, email, message } = req.body
await sendEmail({
to: 'you@yourdomain.com',
subject: `New contact from ${name}`,
body: message
})
res.status(200).json({ success: true })
}
What it does well:
Complete control
No monthly fees beyond email service
Integrates with any email provider
Customizable to any requirement
The honest problems:
You maintain it yourself
No dashboard to view submissions
No spam protection unless you build it
No lead management unless you build it
Email delivery setup and maintenance
Cold start latency on some platforms
Debugging is your responsibility
This approach makes sense if you are a developer who enjoys building infrastructure and has specific requirements that no service can meet. For everyone else, the maintenance overhead is not worth it.
Option 3: Platform Built-in Forms
Some static site platforms include form handling natively.
Netlify Forms: covered above.
Vercel: No built-in form handling. Requires serverless functions or a third-party service.
GitHub Pages: no built-in form handling. Requires a third-party service.
Webflow: has basic form handling but no auto-responder emails natively. You need a third-party service for confirmation emails and lead management.
Framer: same limitation as Webflow. Basic form submissions only. No native auto-responder or lead management.
Option 4: Self-Hosted Form Backend
If you want complete control and no monthly fees, self-hosting is a legitimate option.
Tools worth considering:
Formgrid (open source):
MIT license
Docker deployment
Full feature set, including lead pipeline
PostgreSQL database
Runs on any VPS
Formbricks:
Open source survey and form tool
Self-hostable
More survey-focused than form backend
Good for research and feedback forms
Pocketbase:
Not a form backend specifically
But can handle form submissions
Single binary deployment
Very lightweight
Self-hosting requires a server, maintenance, backups, and email delivery setup. For developers comfortable with DevOps, this is a great option. For everyone else, a managed service is more practical.
The Honest Comparison
| Feature | Formspree | Netlify Forms | Basin | Web3Forms | Formgrid |
|---|---|---|---|---|---|
| Free submissions | 50/month | 100/month | 100/month | Unlimited | 25/month |
| Paid price | $15/month | $19/month | $15/month | $18/month | $12/month |
| Spam filtering | Paid only | Basic | Yes | Yes | All plans |
| Lead pipeline | No | No | No | No | Yes |
| Follow up reminders | No | No | No | No | Yes |
| Google Sheets sync | $90/month | No | No | No | $12/month |
| Auto-responder | Paid | No | No | No | Premium |
| Open source | No | No | No | No | Yes |
| Self-hostable | No | No | No | No | Yes |
Which One Should You Use?
Use Formspree if:
You are already using it
Your use case is simple
You just need email notifications
You have fewer than 50 submissions
per month
Use Netlify Forms if:
You are already on Netlify
You have very low form volume
You do not need email notifications
immediately, and are okay with configuring them
Use a serverless function if:
You are a developer who wants
complete control
You have specific requirements
no service can meet
You enjoy building and maintaining
infrastructure
Use Formgrid if:
You want more than just email notifications
You want to track leads after they submit
You want Google Sheets sync without Zapier
You want spam filtering on the free plan
You want an open source option, you can
self-host if needed
You are managing enquiries for a
real business and need to follow up
without losing track of anyone
How to Connect Any HTML Form to Formgrid
If you are currently using Formspree or no form backend at all, switching to Formgrid takes about 5 minutes.
Step 1: Create a free account at formgrid.dev
Step 2: Create a new form and copy your endpoint URL
Step 3: Update your HTML form action
From this:
<form action="https://formspree.io/f/your-id" method="POST">
<input type="text" name="name" placeholder="Your Name" />
<input type="email" name="email" placeholder="Your Email" />
<textarea name="message" placeholder="Your Message"></textarea>
<button type="submit">Send</button>
</form>
To this:
<form action="https://formgrid.dev/api/f/your-form-id" method="POST">
<input type="text" name="name" placeholder="Your Name" />
<input type="email" name="email" placeholder="Your Email" />
<textarea name="message" placeholder="Your Message"></textarea>
<button type="submit">Send</button>
</form>
Step 4: Submit a test form to confirm it is working
That is it. Your form is live. Every submission now arrives as a tracked lead in your Formgrid dashboard.
Adding the Honeypot Field for Spam Protection
For HTML forms on your own site, add this hidden field inside your form tag to enable honeypot spam protection:
<input
type="text"
name="_honey"
style="display:none"
tabindex="-1"
autocomplete="off"
/>
Bots fill in every field, including hidden ones. This catches them automatically. Legitimate users never see or interact with this field.
If you are using the Formgrid form builder, the honeypot field is added automatically. No extra code needed.
The Bottom Line
Every form backend on this list will get your form submissions to your inbox. The question is what happens after that.
If you want to just receive emails, Formspree, Basin, and Web3Forms all work fine. Pick the one with the free tier that fits your volume.
If you want to actually manage the leads that come through those forms, know who you contacted, set follow-up reminders, and track how many enquiries became customers, then Formgrid is the only option on this list that does that without requiring a separate CRM.
For most developers building client sites or running small businesses, the lead management features pay for themselves the first time you close a deal you would otherwise have forgotten to follow up on.





Top comments (0)