splitforms.com

Contact form backend

Contact form backend for any website.

Point your form at one endpoint and every submission is filtered for spam, stored, and emailed to you — no PHP, SMTP, or server route.

  • 500 free total
  • No PHP/SMTP
  • 30-sec setup
A website contact form submitting to the splitforms hosted backend

No backend to build

No PHP, SMTP, or server route — the hosted endpoint is your contact form backend.

Spam filtered by default

A honeypot, time-trap, and rate limits screen bots before they reach your inbox.

Emailed in seconds

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

Add a contact form backend to any HTML page.

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.

Get your access key
contact.html
<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

How to connect a contact form to a backend.

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.

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.

Point your form at the endpoint

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.

Arm the spam fields

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.

Set a redirect (optional)

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().

Send a test submission

Submit the form once and confirm the message shows up in your inbox and in the dashboard.

Connect a destination (optional)

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

What does a contact form backend actually do?

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.

  • Receive HTML, FormData, JSON, and multipart submissions from one endpoint
  • Filter bots with a honeypot, time-trap, content checks, and IP rate limiting
  • Store every submission in a searchable dashboard with CSV/XML/PDF exports
  • Route owner email on every plan, plus signed webhooks and 1-click integrations
A contact form submission received, filtered, stored, and routed to your inbox

No server needed

Do you need a server for a contact form backend?

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.

  • No PHP mail() script or SMTP credentials to manage
  • Aligned sender email that lands in the inbox, not spam
  • Nothing to deploy, patch, or keep running on your server
A contact form posting straight to the splitforms endpoint with no server of your own

Spam filtering

Does a contact form backend block spam?

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.

  • Honeypot + time-trap that reject instant, scripted submissions
  • Server-side content heuristics and per-IP rate limiting
  • Optional allowed-domains lock or your own reCAPTCHA v2 key
Spam and bot submissions being filtered out before reaching your contact form inbox

How SplitForms works

What happens after someone submits your form?

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.

A SplitForms contact form submission launching straight to your inbox

Add your endpoint

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

HTML form pointing at a SplitForms submit endpoint

Receive submissions

We instantly capture and organize every submission in your inbox.

Submissions inbox with searchable leads and status pills

Route anywhere

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

Generic integration tiles for email, sheets, chat, CRM, automate, and webhook

No credit card required. Set up in under 60 seconds.

Connect & automate

Where can submissions go besides email?

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.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more
NewTake payments on your formsDeposits, bookings, order forms — submitters check out through Stripe and the money goes straight to your Stripe account. Included on every paid plan.See plans →

Setup guides for the stacks you use

FAQ

Contact form backend questions.

View all FAQs
What is a contact form backend?

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.

Do I need PHP or SMTP for a contact form backend?

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.

Can I use this with React, Next.js, Webflow, or static HTML?

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.

Does the backend prevent contact form spam?

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.

Is a contact form backend free to use?

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.

Can I submit the form as JSON instead of a plain HTML POST?

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.

Can I customize the email subject or reply-to address?

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.

What happens after someone submits the form?

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

How much does splitforms cost?

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.

Free

$0— 500 submissions
 

No card, no time limit

Best for testing

For side projects and indie devs.

  • 500 free submissions
  • Unlimited forms
  • Email notifications included
  • Smart spam filtering
  • Submissions dashboard
  • Redirect after submit
  • MCP server included

Annual

$49/ year
About $4.08/mo, billed yearly
Best value

Every Pro feature with triple the volume — $0.27 per 1,000 at full use.

  • 15,000 submissions / mo
  • Unlimited forms
  • Everything in Pro
  • File uploads with 5 GB storage
  • 3 team seats
  • Priority email support

No credit card required on Free • Cancel anytime • Full pricing and FAQ