Get your free access key
Sign up at splitforms.com/login with your email. Your free form API key is generated instantly — no credit card required. Free includes 500 submissions total.
HTML contact form
Updated · plan facts checked against /pricing
An HTML contact form is a <form> whose action points at a backend URL. Set it to https://splitforms.com/api/submit, add a hidden access_key, and every submission is spam-filtered, stored and emailed to you — no PHP or server code, 500 free submissions in total. Want the shortest route to a working Contact page? See the free website contact form.

No PHP, Node, or server route of your own — the splitforms endpoint is the backend for your HTML contact form.
A honeypot, time-trap, and rate limits screen bots out of every HTML form submission before your inbox.
Accepted submissions are saved to the searchable dashboard before owner notification email is attempted. Delivery time and inbox placement depend on provider and recipient settings.
Copy-paste HTML
Paste this HTML contact form into any page, point the action at the endpoint, and replace YOUR_ACCESS_KEY with the key from your dashboard. That's the whole integration — no server, no build step. Need more variations (dark mode, multi-column, file upload)? See the HTML contact form template collection.
<form action="https://splitforms.com/api/submit" method="POST">
<!-- Required: your free access key -->
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<!-- Optional: redirect after submit -->
<input type="hidden" name="redirect" value="https://yoursite.com/thank-you">
<!-- Name field -->
<label for="name">Name</label>
<input type="text" id="name" name="name" placeholder="Your name" required>
<!-- Email field -->
<label for="email">Email</label>
<input type="email" id="email" name="email" placeholder="you@example.com" required>
<!-- Message field -->
<label for="message">Message</label>
<textarea id="message" name="message" rows="5" placeholder="Your message" required></textarea>
<!-- Honeypot spam protection (bots fill this, humans don't see it) -->
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">
<!-- Time trap: posts sent under 2 seconds after page load are dropped -->
<input type="hidden" name="form_loaded_at" value="">
<script>document.currentScript.previousElementSibling.value = Date.now();</script>
<!-- Submit button -->
<button type="submit">Send Message</button>
</form>Setup
Three steps, about a minute. Sign up for a free access key, paste the form, and watch submissions land in your dashboard within seconds.
Sign up at splitforms.com/login with your email. Your free form API key is generated instantly — no credit card required. Free includes 500 submissions total.
Copy the HTML contact form code below and paste it into any page on your website. Replace YOUR_ACCESS_KEY with the key from your dashboard.
Fill out the form and submit. The accepted submission is saved in your SplitForms dashboard before owner notification email is attempted. Delivery time and inbox placement depend on provider and recipient settings.
Line by line
Seven parts, each with one job. The only one splitforms needs is the access key; everything else is ordinary HTML that any browser understands. See how the form action attribute works for the details of the first line.

What happens
The moment a visitor hits Send, the browser's native POST hands the data to splitforms. From there it's received, filtered, stored, emailed, and — on paid plans — routed onward to your connected integrations, all without a server of your own.

Spam protection
The pasted form already ships with a botcheck honeypot, and splitforms adds a time-trap, content heuristics, and rate limiting on every request. It all runs server-side, so you can keep the page entirely JavaScript-free — a working reCAPTCHA alternative with nothing for visitors to solve.

Customize
Every field name becomes a column in your dashboard, so adding fields is just adding inputs. Prefer a styled starting point? See the Tailwind CSS forms guide for a dark-mode-ready template with validation states.

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.

Questions
Create a <form> element, set the action attribute to a form backend endpoint like https://splitforms.com/api/submit, add a hidden input with your access key, then add your input fields (name, email, message) and a submit button. The form backend handles storage, email notifications, and spam filtering — no server-side code required.
Yes. Point your form's action attribute at a hosted form backend like splitforms. The backend receives the POST request, stores the submission, sends you an email, and handles spam filtering. You don't need PHP, Node.js, Python, or any server-side code of your own.
Yes. The form is a standard HTML form POST. It works on any static site host including GitHub Pages, Netlify, Vercel, Cloudflare Pages, Amazon S3, and any web server that can serve HTML files.
No. The form uses native HTML form submission. The one-line script in the example only fills the form_loaded_at time-trap field; delete it and the form still works, the time trap simply does not run. JavaScript is otherwise optional, for custom validation or AJAX submission.
The form above includes a botcheck honeypot (a hidden input bots fill in but people never see) and a form_loaded_at timestamp: posts sent less than 2 seconds after the page loaded are dropped. splitforms also runs server-side content scoring and rate limiting (6 submissions a minute and 20 per 15 minutes per IP, per form) on every request. reCAPTCHA v2 or Cloudflare Turnstile can be added with your own keys, but neither is required.
Yes. The splitforms Free plan covers unlimited forms, 500 submissions total (a one-time allowance, not monthly), owner notification emails and spam filtering, with no credit card. Pro is $5/month for 5,000 submissions a month and adds exports, webhooks, integrations, auto-replies, CC/BCC recipients and file uploads.
Yes — add <input type="file" name="attachment"> and enctype="multipart/form-data" on the form tag. File storage is on paid plans and supports up to 5 files per submission, 5 MB each; on Free the text fields are saved and files are dropped.
Email notifications to the form owner are included free on every plan, including Free. You'll get an email with the submission details as soon as someone submits, no setup required beyond your access key.
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