Create a free access key
Sign up and create a form in the splitforms dashboard — no credit card required. Every form gets its own access_key on the embed tab.
Contact form backend
Point your form at one endpoint and every submission is filtered for spam, stored, and emailed to you — no PHP, SMTP, or server route.

No PHP, SMTP, or server route — the hosted endpoint is your contact form backend.
A honeypot, time-trap, and rate limits screen bots before they reach your inbox.
Accepted submissions are saved to your dashboard before owner notification email is attempted; delivery time and inbox placement depend on provider and recipient settings.
Quick start
Drop this into any page, point the action at the endpoint, and add your access key. That's the whole integration — no server, no build step.
<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://example.com/thanks" />
<input name="name" autocomplete="name" required />
<input name="email" type="email" autocomplete="email" required />
<textarea name="message" required></textarea>
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off" />
<input type="hidden" name="form_loaded_at" value="" />
<script>document.currentScript.previousElementSibling.value = Date.now();</script>
<button type="submit">Send message</button>
</form>Setup
No server, no SMTP setup — the same six steps whether you paste the contact form backend into raw HTML, a React component, or a Next.js app. Step six forwards every submission with an HMAC-SHA256 signed request — see the webhooks docs.
Sign up and create a form in the splitforms dashboard — no credit card required. Every form gets its own access_key on the embed tab.
Set the form action to https://splitforms.com/api/submit (or POST JSON from a fetch() call) and include access_key as a hidden field.
Add the botcheck honeypot input, left empty, and a form_loaded_at hidden field set to Date.now() on load. Bot and instant submissions get filtered before they reach you.
Add a redirect field with a thank-you page URL if you want a classic HTML post-submit redirect, or read the JSON response yourself from fetch().
Submit the form once and confirm the message shows up in your inbox and in the dashboard.
On paid plans, forward every submission to a signed webhook or a 1-click integration — Google Sheets, Notion, Airtable, Slack, Discord, Telegram, or Mailchimp.
Backend responsibilities
A contact form only looks simple. The backend behind it has to receive the request, filter spam, keep a copy, and get the message to a human — reliably, on every submission. Those are the same jobs a hosted form backend handles for you.

No server needed
Build it yourself and you are writing a PHP mail() script or your own API route plus SMTP credentials, spam filtering, a database, and the server to run it all. A hosted backend replaces every one of those with a single endpoint — you can even run a contact form without a backend of your own. Still choosing a provider? See how the free form backends compare on limits, spam filtering, and webhooks.

Spam filtering
Yes — on every plan, including Free. A botcheck honeypot and a form_loaded_at time-trap reject the obvious bots, then server-side heuristics and IP rate limiting (6/min, 20 per 15 minutes) screen the rest before they reach your inbox. Read the full guide to stopping contact form spam.

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 'send' half of your contact form. Your HTML collects the name, email, and message; the backend is what receives that POST, screens it for spam, saves a copy, and delivers it to your inbox. Traditionally you'd build that with PHP mail(), SMTP, or a custom API route. splitforms replaces all of it with one hosted endpoint — add your access_key and the plumbing is handled for you.
No. A hosted backend lets your form submit directly to an HTTPS endpoint. You do not need a PHP mail script, SMTP credentials in your app, or your own server route — the endpoint is the backend.
Yes. The same endpoint works from a native HTML form, a React or Next.js submit handler using fetch(), Webflow custom code, or any static site. See the framework-specific copy-paste examples for HTML, React, and Next.js.
Yes. Every plan, including Free, includes a botcheck honeypot field, a form_loaded_at time-trap that rejects instant bot submissions, server-side content heuristics, and IP rate limiting (6 submissions/min, 20 per 15 minutes). You can also restrict a form to allowed domains or add your own reCAPTCHA v2 key.
Yes. The Free plan includes unlimited forms, 500 submissions total, owner email notifications, spam filtering, and dashboard storage — no card required. Paid plans start at $5/mo (Pro) for 5,000 submissions and add CSV/XML/PDF exports, webhooks, integrations, and an auto-responder.
Yes. The endpoint accepts an HTML form action, a fetch() call with a JSON body, or multipart/form-data for file uploads — same access_key, same response. See the contact form API page for request/response examples.
Yes. Three hidden fields change delivery behavior without any code: subject sets a custom email subject line, replyto sets the reply-to address to the sender's email, and redirect sends the visitor to a URL after a successful submit.
Two things happen at once. The visitor either lands on your redirect page (if you set a redirect field) or gets the endpoint's JSON success response to handle in your own UI. Behind the scenes, splitforms stores the submission in your dashboard and emails you on every plan — and on paid plans forwards it to an HMAC-SHA256 signed webhook (8-second timeout; one retry on network errors, timeouts or 5xx) or a connected integration.
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