Get a free access key
Sign up at splitforms.com/login — no credit card. Every form gets its own access_key, and the Free plan covers 500 submissions/month across unlimited forms.
HTML form backend
Set your form's action to https://splitforms.com/api/submit and add a hidden access_key field — every submission is validated, filtered for spam, stored in a dashboard, and emailed to you. No PHP, Node, SMTP, or database.

No PHP, Node, SMTP, or database — one action URL is the whole HTML form backend.
A honeypot, a form_loaded_at time-trap, and server-side content checks screen bots before your inbox.
Every submission lands in your searchable dashboard and inbox within seconds, free on every plan.
Quick start
Paste this into any HTML page, set the action to the endpoint, and add your access key. That's the whole integration — no PHP, no build step, no server.
<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" />
<label>
Name
<input name="name" autocomplete="name" required />
</label>
<label>
Email
<input name="email" type="email" autocomplete="email" required />
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
<button type="submit">Send</button>
</form>
<script>
document.getElementById('form_loaded_at').value = Date.now();
</script>Setup
The whole setup is editing a handful of attributes on a <form> tag you already have — no build step, no dependency to install.
Sign up at splitforms.com/login — no credit card. Every form gets its own access_key, and the Free plan covers 500 submissions/month across unlimited forms.
Set action="https://splitforms.com/api/submit" and method="POST" on your <form> tag — both are native HTML attributes, nothing new to import.
Add access_key with your key as the value, an empty botcheck honeypot input, and a form_loaded_at field set to the page-load timestamp — all three are shown in the code example above.
Drop in subject for a custom notification email subject, redirect for a post-submit thank-you URL, or replyto to set the reply-to address — no backend code for any of them.
Fill out the form yourself. The entry lands in your splitforms dashboard and triggers an email notification within seconds, so you can confirm the endpoint is wired up before going live.
Backend responsibilities
An HTML form backend is a hosted endpoint that receives your <form>'s POST request instead of a server you'd have to write yourself. Your HTML file only collects fields — splitforms handles the parts that normally require backend code. See the full HTML request/response reference for every field the endpoint accepts.

When to use it
Reach for this pattern when you want to own the page markup but not maintain the receiving server. See the static site contact form guide for GitHub Pages, Astro, Hugo, Eleventy, and Jekyll specifics, or contact form without a backend for the broader no-server pattern.

Spam protection
The HTML form backend screens bots before anything reaches your inbox — no CAPTCHA to bolt on. The full spam stack, reserved field names, and rate limits are covered in the spam protection docs.

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.”
Questions
An HTML form backend is the server-side endpoint that receives a form POST, validates the fields, filters spam, stores the submission, and can send notifications or webhooks. With splitforms, your static HTML page keeps the normal form tag and posts directly to https://splitforms.com/api/submit — there's no PHP script or server process to write.
Yes. Point the form action at https://splitforms.com/api/submit, add your access key as a hidden field, and the browser sends the submission to splitforms instead of a PHP script. Email notifications to the form owner are free on every plan, including Free.
Yes. The same form works on GitHub Pages, Vercel, Netlify, Cloudflare Pages, S3, shared hosting, and any site that can render HTML — the request leaves the browser and goes straight to splitforms, so the host never needs to run server code.
Add the hidden botcheck honeypot field (it must stay empty) and a form_loaded_at hidden field set to the page-load timestamp. splitforms combines those with server-side content checks and per-form allowed-domain rules to filter spam before it reaches your inbox.
Use a hosted backend instead of SMTP. splitforms emails the form owner on every submission, on every plan including Free — no mail server, API key, or SMTP credentials to configure. Just set the form action to https://splitforms.com/api/submit.
Yes. Call GET https://splitforms.com/api/submissions with an Authorization: Bearer header set to your personal access token (Dashboard → MCP). Filter by form, page with limit (up to 100), before, and since; the response is { submissions, has_more }, capped at 60 requests/minute.
Yes, on the Starter plan and above. splitforms adds one-click integrations for Google Sheets, Notion, Airtable, Slack, Discord, Telegram, WhatsApp, and Mailchimp, plus signed generic webhooks (HMAC-SHA256, single attempt, 8s timeout, no automatic retries).
Yes. Each form accepts up to 6 submissions per minute per IP address, with a sustained cap of 20 within a 15-minute window. Requests beyond that return HTTP 429, which protects your inbox from being flooded.
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