Get a free access key
Sign up at splitforms.com/login and create a form. Your access key appears instantly — Free covers 500 submissions total with no credit card required.
Form action endpoint
Updated · plan facts checked against /pricing
Set your form's action to https://splitforms.com/api/submit, keep method="POST" and add a hidden access_key input. Submissions are spam-filtered, saved to your dashboard and emailed to you on every plan, and a hidden redirect field can send visitors to your thank-you page. Free covers 500 submissions total, no credit card.

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. Not sure where a given action URL actually sends data? Check it with the form action tester.
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<!-- optional: a path on your site, or a full URL on your own domain -->
<input type="hidden" name="redirect" value="/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 total 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. Accepted submissions are saved in your dashboard before owner notification email is attempted on every plan; delivery time and inbox placement depend on provider and recipient settings.
Add <input type="hidden" name="redirect" value="/thank-you" /> to send visitors to your thank-you page after they submit. It works on every plan: use a path starting with / or a full http(s) URL on your own site.
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. For how the attribute itself behaves, see the HTML form action attribute reference.

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. Form action not working? See the form action CORS and 405 fixes.

How SplitForms works
splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

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
On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

FAQ
It is the value of a form's action attribute: the address that receives the submitted data. splitforms gives you one, https://splitforms.com/api/submit, so the form works without a server of your own. Keep method="POST" and add a hidden access_key input.
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. If you do submit with fetch, the splitforms endpoint answers with Access-Control-Allow-Origin: * and handles the OPTIONS preflight.
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.
Yes. Point action at https://splitforms.com/api/submit instead of a mailto: link, which only works when the visitor has an email app set up. splitforms sends the owner notification email on every plan, including Free, with no server or SMTP setup.
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, for example <input type="hidden" name="redirect" value="/thank-you" />. After a classic HTML POST, splitforms answers with a 303 redirect to it, on every plan and with no JavaScript. The value can be a path starting with /, or an absolute http(s) URL on your form's allowed-domains list, on splitforms.com, or (when no allow-list is set) the site the form was submitted from. Anything else is ignored: the visitor goes to the redirect URL set in Form settings if there is one, otherwise to the default thank-you page. A Form settings redirect URL works on every plan, and the hidden field takes priority over it.
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. splitforms checks the botcheck honeypot, applies a time trap when the form sends a form_loaded_at field, scores content server-side, and rate-limits each visitor IP on each form (6 a minute, 20 per 15 minutes), however the surrounding page is built.
Simple pricing
Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.
For side projects and indie devs.
Every paid feature, for agencies and growing products.
Every Pro feature with triple the volume — $0.27 per 1,000 at full use.
No credit card required on Free • Cancel anytime • Full pricing and FAQ