splitforms.com

Contact form without backend

Contact form without a backend or server.

Updated · plan facts checked against /pricing

A contact form works without a backend: copy the HTML form, point its action attribute at a hosted form endpoint, and every submission is emailed to you and saved to a dashboard. No server, database, or PHP to run. First 500 submissions free.

  • 500 free total
  • No server or DB
  • Any static host
  1. 1Copy this HTML form. Paste it into any page, on any host.
  2. 2Point action= at a form endpoint. Use https://splitforms.com/api/submit and your free access key.
  3. 3Get submissions by email. Each one is emailed to you and saved to your dashboard.
contact.html
<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input name="name" placeholder="Name" required>
  <input name="email" type="email" placeholder="Email" required>
  <textarea name="message" placeholder="Message" required></textarea>
  <button type="submit">Send</button>
</form>

Compare the options

Three ways to run a contact form without a backend.

Each method below works with no server of your own. They differ in how long setup takes, what happens to spam, where messages end up, and what limits apply.

MethodSetup timeSpam handlingWhere submissions goLimits
Hosted form endpoint (splitforms, Formspree, Web3Forms…)About 5 minutes: change the form's action URL and add a hidden key field.Built in on the provider side — typically a honeypot, rate limits and content checks; details vary by provider.Emailed to you and stored in the provider's dashboard, with export or webhooks depending on plan.The provider's plan caps. Free tiers range from 50 a month to 500 in total (splitforms).
Google Apps Script + Google Sheets20–40 minutes: write a doPost script, deploy it as a web app, and handle the redirect or CORS response yourself.None by default. Any honeypot, rate limiting or filtering is code you write and maintain in the script.Rows in your own Google Sheet. Email alerts need extra script code.Google's daily Apps Script quotas — for example about 100 email recipients a day on a free Google account.
mailto: link as the form actionAbout 1 minute: set action="mailto:[email protected]".No filtering, and your address sits in the page source for scrapers to harvest.Nothing is stored. The visitor's own email app has to open and send the message.Fails silently for visitors with no desktop mail app set up, which includes most webmail and many phone users.

Just HTML, no backend

No PHP, Node.js, Python, database, or SMTP — plus one optional script tag for the time-trap field.

Works on any static host

GitHub Pages, Netlify, Vercel, Cloudflare Pages, or Amazon S3 — anywhere you can serve HTML.

Spam filtered by default

Honeypot, time-trap, and IP rate limits screen bots before they reach your inbox.

Optional extras

How do I add spam protection and a thank-you page?

Add three optional hidden fields to the same form: botcheck, a honeypot checkbox that must stay empty; form_loaded_at, a time-trap filled by one line of JavaScript; and redirect, the thank-you page visitors land on after they send. The form still posts to https://splitforms.com/api/submit, and it still works if you leave any of them out.

Generate access key
contact-with-extras.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://yoursite.com/thanks">
  <input type="hidden" name="form_loaded_at" id="form_loaded_at">
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1">

  <input name="name" type="text" placeholder="Name" required>
  <input name="email" type="email" placeholder="Email" required>
  <textarea name="message" placeholder="Message" required></textarea>
  <button type="submit">Send</button>
</form>

<script>
  document.getElementById('form_loaded_at').value = Date.now();
</script>

Setup

How to add a contact form without a backend.

Four steps, no server or database — the same whether you paste the form into raw HTML, a framework component, or a WordPress Custom HTML block.

Create a free access key

Sign up at splitforms (no credit card) and copy your form's access_key from the dashboard.

Point your form at the endpoint

Set the form's action to https://splitforms.com/api/submit with method POST, then add access_key as a hidden field.

Add the built-in spam fields

Include the hidden botcheck honeypot (leave it empty) and a form_loaded_at field set to the page-load timestamp — splitforms also rate-limits abuse automatically.

Deploy and test

Push the page live, submit a real test entry, and confirm it lands in your inbox and the submissions dashboard.

Why it works

Why does a contact form need a backend? It normally doesn't.

A working contact form usually needs four moving parts — a server to receive the POST, a database to store each message, an email service to notify you, and spam protection. On a static site or JAMstack app there's no server to run any of it, so a hosted contact form backend handles the server, database, email, and spam filtering for you — you just add one URL to your HTML form.

  • No server to receive the POST request
  • No database to store submissions
  • No SMTP or email service to configure
A no-backend form submission routed to email, dashboard, and integrations

What you get

What do you get with a no-backend contact form?

Every submission lands in your inbox and a searchable dashboard, stored in row-level-secured Postgres — see our GDPR page. The free plan covers 500 submissions total across unlimited forms, and paid plans start at $5/month (Pro); see the full pricing breakdown.

  • Email notifications on every plan, free
  • Searchable submissions dashboard; CSV, XML, and PDF export on paid plans
  • Honeypot, time-trap, and content-scoring spam filters, optional reCAPTCHA v2
  • Slack, Discord, Telegram, Sheets, Notion, Airtable, and signed webhooks on paid plans
  • File uploads on paid plans: up to 5 files × 5 MB per submission
No-backend contact form submissions in the splitforms dashboard

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 without a backend, answered.

View all FAQs
Can a contact form work without a backend?

Yes. Point the form's action attribute at a hosted form backend such as splitforms, and it receives the POST, emails you each submission, filters spam, and stores every entry in a dashboard. You write no server code and set up no database; submissions are kept in row-level-secured Postgres for you.

How do static sites handle contact forms?

A static site has no server to receive a POST, so the form sends its data straight to a hosted endpoint instead. Set action to https://splitforms.com/api/submit with method POST, add your access key as a hidden field, and it works on GitHub Pages, Netlify, Vercel, Cloudflare Pages, Amazon S3, or any host that serves HTML.

Is a contact form without a backend secure?

Yes. Submissions travel over HTTPS, and the access key in your HTML only lets people submit to your form; it can't read your submissions. Spam is screened by a hidden honeypot field, a time-trap that catches instant bot submissions, rule-based content scoring, and per-IP rate limits (6 per minute per form), with optional reCAPTCHA v2 for extra coverage.

Does a contact form without a backend need JavaScript?

No. A native HTML form submit works with zero JavaScript. Add one small script only if you want the optional time-trap spam field, or to submit with fetch() and show an inline success message instead of loading a new page.

How many submissions can I collect for free?

The free plan includes 500 submissions across unlimited forms, with email notifications, spam filtering, and the dashboard — no card and no time limit. It is a one-time allowance rather than a monthly one. When you need a monthly allowance, Pro is $5/month for 5,000 submissions a month with every paid feature, and Annual is $49/year for 15,000 a month.

Can I send no-backend form submissions to Slack, Sheets, or email?

Email notifications are free on every plan. Paid plans, from $5/month, add Google Sheets, Notion, Airtable, Slack, Discord, Telegram, WhatsApp, and HMAC-signed webhooks.

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