Contact Form Without a Backend — No Server Needed
A contact form without a backend works by pointing your HTML form's action at a hosted API instead of your own server. With splitforms, you POST to https://splitforms.com/api/submit, add your access key as a hidden field, and the submission is emailed to you and saved to a dashboard — no PHP, Node process, or database required.
Why a Contact Form Normally Needs a Backend
Every website needs a contact form. But contact forms require a server to receive the submission, a database to store it, an email service to notify you, and spam protection to filter bots.
If you're building a static site, a JAMstack app, or a simple landing page, you don't want to spin up a server just for one form.
The Fix: Point Your Form at a Hosted Backend
A hosted form backend handles the server, database, email, and spam filtering for you. You just add one URL to your HTML form.
<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>No PHP. No Node.js. No Python. No database. No SMTP. Just HTML — plus one optional script tag for the time-trap spam field.
No backend needed — this form works right now
Fill it out and send it. This form has zero server-side code — it posts directly to splitforms.
What happens next ⚡
- 📥Submission received — stored in your searchable dashboard
- 📧Email notification — delivered to your inbox instantly
- 🛡️Spam filtered — AI classifier + honeypot, no CAPTCHA
- 🔗Webhook fired — optional: forward to Slack, Discord, Sheets
- ↩️User redirected — to your thank-you page
500 submissions/month free · No credit card
How to Add a Contact Form Without a Backend (4 Steps)
- 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.
What You Get With a No-Backend Contact Form
- Email notifications — every submission sent to your inbox, included free on every plan
- Submissions dashboard — search, filter, and export (CSV/XML/PDF on Starter and above)
- Spam filtering — honeypot + time-trap fields plus server-side content heuristics, free on every plan; optional reCAPTCHA v2 for extra coverage
- Integrations — Slack, Discord, Telegram, WhatsApp, Google Sheets, Notion, Airtable, Mailchimp, and signed webhooks (Starter and above)
- File uploads — up to 5 files per submission, 5 MB each, via the Storage integration (paid plans)
- Row-level-secured storage — submissions live in isolated Postgres rows, see our GDPR page
The free plan covers 500 submissions/month across unlimited forms. See the full pricing breakdown.
Where a No-Backend Contact Form Works Best
- Static sites & JAMstack— GitHub Pages, Netlify, Vercel, Hugo, Eleventy, and Jekyll can serve HTML but can't run server code. See the static site contact form guide or the JAMstack form backend guide.
- Plain HTML pages — no framework, no build step. Follow the HTML contact form guide.
- WordPress without a plugin — paste the same HTML form into a Custom HTML block instead of installing a form plugin. See how to add it without a plugin.
- Anywhere you don't want to run a database — see contact form without a database for the same approach applied to dynamic apps.
FAQ: Contact Forms Without a Backend
Can I have a contact form without a backend?
Yes. Use a hosted form backend like splitforms. You point your HTML form at their endpoint URL, and they handle storage, email notifications, and spam filtering. No server-side code required.
Do contact forms need a database?
No. A hosted form backend stores submissions for you. With splitforms, submissions are stored in row-level-secured Postgres — you don't need to set up or maintain a database.
How do I collect form submissions without a server?
Set your form's action attribute to a form backend endpoint (e.g., https://splitforms.com/api/submit), add your access key as a hidden field, and submissions are sent directly to the backend — bypassing your server entirely.
Does this work on static sites?
Yes. Form backends work on any static site host: GitHub Pages, Netlify, Vercel, Cloudflare Pages, Amazon S3, or any web server serving HTML files.
Is a contact form without a backend secure?
splitforms filters spam with a hidden honeypot field, a time-trap field that catches instant bot submissions, and server-side content heuristics — plus an optional reCAPTCHA v2 if you want extra coverage. Submissions are also rate-limited (6/minute per IP) to block abuse.
How many submissions can I collect for free?
The free plan includes 500 submissions per month across unlimited forms, with email notifications, spam filtering, and dashboard access included. Paid plans start at $1/month for 1,000 submissions with exports and webhooks.
Can I connect a no-backend form to Slack, Sheets, or email?
Email notifications are included free on every plan. Paid plans add one-click integrations for Google Sheets, Notion, Airtable, Slack, Discord, Telegram, WhatsApp, Mailchimp, and generic signed webhooks.
Does a contact form without a backend need JavaScript?
No. A native HTML form submit works with zero JavaScript. Add a small script only if you want to set the optional time-trap spam field or show an inline success message instead of a redirect.
Start collecting submissions — free
500 submissions/month, no credit card, no backend.
Get your free access key →Questions? Email hello@splitforms.com