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 / mo
  • 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

Every submission is stored in your dashboard and emailed to you within seconds.

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 full form backend service 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.

  • 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

From form to workflow in 3 simple steps.

Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

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

Connect your favorite tools and automate everything

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.

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 →

Trusted by indie teams and agencies shipping forms worldwide

PETAL/COKRAFT.DELINEAR-XBUILD.DEVSTUDIO 71MERIDIANFRAME&CO

Testimonials

Loved by developers shipping at every scale.

40 quotes on record — from indie hacks to agency migrations.

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/month, 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 (single attempt, no automatic retries) or a connected integration.

Simple pricing

Start free. Scale when you need more.

Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, Stripe payments, and higher submission limits.

Free

$0
 

Free forever

Best for testing

For side projects and indie devs.

  • 500 submissions / mo
  • Unlimited forms
  • Email notifications included
  • Honeypot spam filtering
  • Submissions dashboard
  • MCP setup stays free
  • No credit card required

3-Year

$59/ first 3 years
was $99 · save 40% · new-user price

Pay $59. 3 years sorted.

  • 15,000 submissions / mo
  • Unlimited forms
  • Everything in Pro
  • $59 for 3 years, then $59/year
  • Long-term discount
  • Priority support included
  • Vote on the roadmap

No credit card required on Free • Cancel anytime