How I Solved Form Submissions on a Static Netlify Website Without Using Netlify Forms
Static websites are amazing.
They're fast, secure, cheap to host, and incredibly easy to deploy. Platforms like Netlify have made static site development more enjoyable than ever.
But there is one problem that every developer eventually runs into:
Forms.
A contact form looks simple on the frontend, but the moment a user clicks "Submit", you need somewhere to send that data.
Traditionally, Netlify Forms has been the go-to solution for static websites hosted on Netlify. It works well and integrates directly into the platform, allowing developers to receive submissions, email notifications, and trigger workflows.
The catch?
It ties your forms to Netlify's infrastructure.
Recently, I needed a solution that would work regardless of where a site was hosted. Whether it's Netlify, Cloudflare Pages, GitHub Pages, Vercel, S3, or a custom CDN, I wanted form handling to be completely independent from hosting.
That's when I switched to a form endpoint approach.
The Idea
Instead of relying on hosting-provider-specific form processing, the form sends data directly to a dedicated endpoint.
The frontend remains fully static.
No backend code.
No serverless functions.
No API routes.
Just plain HTML.
<form action="https://onsubmit.dev/f/YOUR_FORM_ID" method="POST">
<input
type="email"
name="email"
placeholder="Your email"
required
/>
<textarea
name="message"
placeholder="Your message"
required
></textarea>
<button type="submit">
Send
</button>
</form>
That's it.
The form data is posted directly to the endpoint, and the static website remains static.
Why I Prefer This Approach
1. Hosting Independence
The biggest advantage is portability.
The form works exactly the same whether the website is deployed on:
- Netlify
- Cloudflare Pages
- GitHub Pages
- Vercel
- AWS S3
- Any CDN or static host
There is no platform lock-in.
Move your site tomorrow and your forms continue working.
2. No Backend Maintenance
A lot of developers solve form handling by creating:
- Express APIs
- Fastify services
- Serverless functions
- Edge functions
That works, but now you're maintaining infrastructure.
For a simple contact form, that's often unnecessary complexity.
A dedicated form endpoint removes that burden completely.
Simply visit onsubmit.devΒ to get your form endpoint.
3. Notifications Everywhere
Getting submissions is only half the problem.
The real value comes from what happens after the form is submitted.
For example:
- Email notifications
- Slack alerts
- Discord messages
- Webhook integrations
- CRM automation
- Custom workflows
Instead of manually checking a dashboard, submissions can instantly reach the tools your team already uses.
Netlify Forms also supports notifications and integrations through email, webhooks, Slack, and automation platforms.
The difference is that a dedicated form backend can provide the same flexibility without requiring Netlify hosting.
Example: Contact Form
A simple contact form becomes:
<form action="https://onsubmit.dev/f/YOUR_FORM_ID" method="POST">
<input type="text" name="name" required />
<input type="email" name="email" required />
<textarea name="message" required></textarea>
<button type="submit">
Send
</button>
</form>
No JavaScript required.
No framework required.
Works with plain HTML.
Example: Newsletter Signup
<form action="https://onsubmit.dev/f/YOUR_FORM_ID" method="POST">
<input
type="email"
name="email"
placeholder="Enter your email"
required
/>
<button type="submit">
Subscribe
</button>
</form>
This can then trigger:
- Email notifications
- Mailing list automation
- CRM updates
- Custom webhooks
Example: Feedback Widget
<form action="https://onsubmit.dev/f/YOUR_FORM_ID" method="POST">
<textarea
name="feedback"
placeholder="Share your thoughts"
required
></textarea>
<button type="submit">
Send Feedback
</button>
</form>
Perfect for product landing pages and SaaS projects.
The Developer Experience Matters
As developers, we often over-engineer simple problems.
A contact form should not require:
- A database
- A backend service
- A serverless function
- An authentication system
Most of the time, we simply need:
- Receive data
- Get notified
- Trigger integrations
That's it.
The simpler the setup, the easier it is to maintain.
Final Thoughts
Static websites continue to grow in popularity because they are fast, secure, and inexpensive to run.
The missing piece has always been form handling.
While Netlify Forms is a solid solution for projects hosted on Netlify, I found that using a dedicated form endpoint gives me something I value even more: freedom.
My forms work regardless of hosting provider, require zero backend code, and can integrate with the tools I already use through notifications, webhooks, and automation workflows.
For developers building landing pages, portfolios, SaaS websites, documentation sites, or marketing pages, that's often all that's needed.
Sometimes the best backend is no backend at all.
Top comments (0)