Create a free access key
Sign up at splitforms (no credit card) and copy your form's access_key from the dashboard.
Contact form without backend
Point a plain HTML form at one hosted endpoint — no server, database, or PHP. Every submission is emailed to you, stored, and spam-filtered.

No PHP, Node.js, Python, database, or SMTP — plus one optional script tag for the time-trap field.
GitHub Pages, Netlify, Vercel, Cloudflare Pages, or Amazon S3 — anywhere you can serve HTML.
Honeypot, time-trap, and IP rate limits screen bots before they reach your inbox.
Copy-paste ready
A contact form without a backend works by pointing your HTML form's action at a hosted API instead of your own server. POST to https://splitforms.com/api/submit, add your access key as a hidden field, and the submission is emailed to you and saved to a dashboard — no PHP, Node process, or database required.
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<input type="hidden" name="redirect" value="https://yoursite.com/thanks">
<input type="hidden" name="form_loaded_at" id="form_loaded_at">
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1">
<input name="name" type="text" placeholder="Name" required>
<input name="email" type="email" placeholder="Email" required>
<textarea name="message" placeholder="Message" required></textarea>
<button type="submit">Send</button>
</form>
<script>
document.getElementById('form_loaded_at').value = Date.now();
</script>Setup
Four steps, no server or database — the same whether you paste the form into raw HTML, a framework component, or a WordPress Custom HTML block.
Sign up at splitforms (no credit card) and copy your form's access_key from the dashboard.
Set the form's action to https://splitforms.com/api/submit with method POST, then add access_key as a hidden field.
Include the hidden botcheck honeypot (leave it empty) and a form_loaded_at field set to the page-load timestamp — splitforms also rate-limits abuse automatically.
Push the page live, submit a real test entry, and confirm it lands in your inbox and the submissions dashboard.
Why it works
A working contact form usually needs four moving parts — a server to receive the POST, a database to store each message, an email service to notify you, and spam protection. On a static site or JAMstack app there's no server to run any of it, so a hosted contact form backend handles the server, database, email, and spam filtering for you — you just add one URL to your HTML form.

What you get
Every submission lands in your inbox and a searchable dashboard, stored in row-level-secured Postgres — see our GDPR page. The free plan covers 500 submissions a month across unlimited forms; see the full pricing breakdown.

How SplitForms works
Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

Point your form to your unique SplitForms endpoint. That's it.

We instantly capture and organize every submission in your inbox.

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

No credit card required. Set up in under 60 seconds.
Connect & automate
SplitForms works with the destinations you route to and the platforms you build on — from Slack and Sheets to WordPress, Shopify, and Next.js. And with Stripe connected, your forms can take payments too.

Trusted by indie teams and agencies shipping forms worldwide
Testimonials
40 quotes on record — from indie hacks to agency migrations.
“I replaced a Lambda + DynamoDB + SES contact form with six lines of HTML. It took eleven minutes, and the dashboard is better than what I was going to build.”
“We migrated 14 client sites off Formspree in a single weekend. The price is a third of what we paid, the API is more honest, and the spam filter actually works.”
“The webhook payload is signed, idempotent, and well-shaped. It reads like code from a competent team, not a CRUD app held together with duct tape.”
“I stopped reaching for Typeform on small marketing sites. splitforms covers 90% of the use case at none of the bloat.”
“I onboarded our whole agency in an afternoon. The MCP integration meant Cursor literally dropped the form straight into our client repos for us.”
“The free plan gave me 500 submissions before I paid a cent, and Pro is five dollars a month. I've spent more on coffee deciding which backend to use.”
“Spam went from forty junk entries a day to zero, with no reCAPTCHA puzzle ruining the form. The honeypot and time-trap just quietly do their job.”
“Point the form action at one endpoint and you're done. No SDK, no client library, no build step. This is how a form backend should feel.”
“Leads land in Slack the second someone submits, and a copy goes to Google Sheets for the sales team. I wired both up in under ten minutes.”
“I run a static Hugo site on a five-dollar VPS. splitforms gave it a real contact form without me standing up a single server.”
FAQ
Yes. Use a hosted form backend like splitforms. You point your HTML form at their endpoint URL, and they handle storage, email notifications, and spam filtering. No server-side code required.
No. A hosted form backend stores submissions for you. With splitforms, submissions are stored in row-level-secured Postgres — you don't need to set up or maintain a database.
Set your form's action attribute to a form backend endpoint (e.g., https://splitforms.com/api/submit), add your access key as a hidden field, and submissions are sent directly to the backend — bypassing your server entirely.
Yes. Form backends work on any static site host: GitHub Pages, Netlify, Vercel, Cloudflare Pages, Amazon S3, or any web server serving HTML files.
splitforms filters spam with a hidden honeypot field, a time-trap field that catches instant bot submissions, and server-side content heuristics — plus an optional reCAPTCHA v2 if you want extra coverage. Submissions are also rate-limited (6/minute per IP) to block abuse.
The free plan includes 500 submissions per month across unlimited forms, with email notifications, spam filtering, and dashboard access included. Paid plans start at $5/month (Pro) for 5,000 submissions with exports and webhooks.
Email notifications are included free on every plan. Paid plans add one-click integrations for Google Sheets, Notion, Airtable, Slack, Discord, Telegram, WhatsApp, Mailchimp, and generic signed webhooks.
No. A native HTML form submit works with zero JavaScript. Add a small script only if you want to set the optional time-trap spam field or show an inline success message instead of a redirect.
Simple pricing
Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, Stripe payments, and higher submission limits.
For side projects and indie devs.
For agencies and growing products.
Pay $59. 3 years sorted.
No credit card required on Free • Cancel anytime