Get a free access key
Sign up at splitforms.com/login and create a form. Your access key appears instantly — Free covers 500 submissions/month with no credit card required.
HTML form action
One attribute turns a static form into a working submission: point your form action at a free splitforms endpoint and every entry is stored, emailed, and spam-filtered — with no backend of your own.

action + method="POST" is the whole integration — no PHP, SMTP, or server route.
Honeypot, time-trap, and rate limits screen bots before your inbox.
Every submission is saved to your dashboard and emailed to you for free.
Working example
This posts the submission to splitforms, where it is stored, emailed, filtered for spam, and — with the optional redirect field — sends the visitor to a thank-you page.
<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/thank-you" />
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<!-- honeypot: must stay empty -->
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
<button type="submit">Send</button>
</form>Step by step
No server, no SMTP setup. These six steps are the same whether you paste the form into raw HTML, a React component, or a WordPress custom-HTML block.
Sign up at splitforms.com/login and create a form. Your access key appears instantly — Free covers 500 submissions/month with no credit card required.
Point action at "https://splitforms.com/api/submit" and set method="POST" — that pair is what turns a static HTML form into a working submission.
Add <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" /> inside the form so splitforms knows which form the submission belongs to.
Leave <input type="checkbox" name="botcheck" /> in the markup and hidden from view — it must stay empty for a submission to be treated as human.
Fill out the form and send it. The submission lands in your dashboard and your inbox within seconds — email notifications are free on every plan.
Add <input type="hidden" name="redirect" value="https://yoursite.com/thank-you" /> to send visitors to a thank-you page after they submit.
Attributes
The action URL is where the browser sends your form data — and a few attributes decide whether that POST arrives intact. Get these right and every submission routes cleanly to email, a webhook, or an API.

File uploads
Add enctype="multipart/form-data" alongside action and method="POST" whenever the form includes a file input. splitforms accepts multipart submissions on every plan; storing the files themselves needs the paid Storage integration.

Cross-domain
Yes. A normal browser form submit can POST to an absolute URL on another domain, including the splitforms endpoint. CORS only becomes a concern when you intercept the submit with JavaScript and use fetch instead of a native form POST.

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.

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
The action attribute tells the browser which URL should receive the form data when a visitor submits the form. If you set action to a hosted form backend endpoint like https://splitforms.com/api/submit, the form can work without your own server.
Use POST. GET puts form fields into the URL query string and is appropriate for search and filters. POST sends fields in the request body and is the correct method attribute for contact forms, lead forms, file uploads, and anything that creates a record.
Yes. A normal browser form submit can POST to an absolute URL on another domain, including https://splitforms.com/api/submit. CORS only becomes a concern when you intercept the submit with JavaScript and use fetch or XMLHttpRequest instead of a native form POST.
Use a form-backend endpoint like https://splitforms.com/api/submit. Add your access key as a hidden field, keep method set to POST, and submissions are stored in a dashboard, emailed to you for free on every plan, and filtered for spam automatically.
The enctype attribute controls how the browser encodes the request body. The default, application/x-www-form-urlencoded, works for text fields. Add enctype="multipart/form-data" when the form includes an <input type="file">, such as a resume or attachment upload — splitforms supports multipart submissions and, on paid plans with the Storage integration, stores up to 5 files per submission at 5 MB each.
Add a hidden field named redirect with the destination URL, for example <input type="hidden" name="redirect" value="https://yoursite.com/thank-you" />. splitforms sends the visitor there after a successful POST — no JavaScript required.
Yes. splitforms recognizes a few special hidden fields alongside access_key: subject sets the notification email's subject line, and replyto sets the address you can reply straight to. Both are optional and read from the same POST your form action already sends.
No — spam protection travels with the endpoint, not the markup around it. As long as the botcheck honeypot field is present and left empty, splitforms also runs a form_loaded_at time-trap, server-side content heuristics, and rate limiting (6 submissions/minute per IP) on every request that hits the action URL, regardless of how the surrounding page is built.
Simple pricing
Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, and higher submission limits.
Free forever
For side projects and indie devs.
For agencies and growing products.
Pay $59. 3 years sorted.
No credit card required on Free • Cancel anytime