splitforms.com

Serverless form handling

Serverless form handling without API routes.

Post any HTML form or client-side fetch() call to one hosted endpoint — no API route, no serverless function, no SMTP. splitforms stores the submission, filters spam, and emails you.

  • 500 free / mo
  • No API route
  • Any host
A form posting to the splitforms endpoint with no API route or serverless function to write

No API route

No app/api route or serverless function to write and deploy — your form posts to one endpoint.

Spam filtered, no CAPTCHA

A honeypot and form_loaded_at time-trap screen bots server-side — no CAPTCHA to add.

Stored and emailed

Every submission is saved to a searchable dashboard and emailed to you within seconds.

Quick start

Serverless form handling, ready to paste.

Point the form action at the endpoint, add your access key, and ship — there's no API route or serverless function of your own to write or deploy.

Generate 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="form_loaded_at" value="TIMESTAMP_ON_LOAD" />
  <input name="email" type="email" required />
  <textarea name="message" required></textarea>
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
  <button type="submit">Send</button>
</form>

Setup

How to handle form submissions without a serverless function.

Five steps, no server code of your own to write or deploy. Point a form at the endpoint, add the honeypot and time-trap fields, and ship to any host.

Create a free splitforms form

Sign up and add a form in the dashboard — no credit card required. Free covers 500 submissions a month on unlimited forms, with email notifications and spam filtering included.

Point the form action or fetch() call at the endpoint

Set a native <form action="https://splitforms.com/api/submit" method="POST">, or POST with fetch and FormData from a client component. Either way, add access_key as a hidden field.

Add the honeypot and time-trap fields

Include a hidden botcheck input that must stay empty and a form_loaded_at hidden field set to a timestamp when the page loads. splitforms uses both to catch bots without a CAPTCHA or a validation function of your own.

Deploy without writing a function

Ship to Vercel, Netlify, Cloudflare Pages, GitHub Pages, or any static host — there is no app/api route or serverless function to write and deploy alongside the form.

Test it, then connect webhooks or integrations

Submit a test entry, confirm it lands in your inbox and dashboard, then wire up Slack, Google Sheets, Notion, Airtable, or a signed webhook to Zapier, Make, or n8n — webhooks and native integrations are on Pro ($5/mo) and up.

No API route

How do you post form data without an API route?

There's no app/api/contact/route.ts to write. A client component posts FormData straight to splitforms with fetch()— the same honeypot and time-trap fields apply whether you submit with a native form action or JavaScript. It's the same one-endpoint pattern in a Next.js form, React, or plain HTML.

  • No app/api/contact/route.ts to write or deploy
  • No SMTP provider to configure — owner email on every plan
  • No database or admin dashboard of your own to build
A client-side fetch() posting form data to splitforms with no API route

The shared layer

When can you skip the serverless function?

Most form handlers repeat the same work: validate fields, block spam, store the payload, email the owner, and forward a webhook. splitforms handles that shared layer — no route, SMTP, database, CAPTCHA, or hosting lock-in of your own. Need custom logic first? Put a serverless function in front of the form endpoint and forward the request; most contact, lead, and signup forms don't need one.

  • Receive native form posts, fetch() FormData, or JSON to one endpoint
  • Honeypot, time-trap, content heuristics, and IP rate limiting block bots
  • Owner email on every plan, plus signed webhooks and integrations on Starter
A submission validated, spam-filtered, stored, emailed, and forwarded to a webhook

Any host

Serverless form handling on any host.

The POST goes to splitforms, not your hosting provider, so there's nothing platform-specific to configure. The same form keeps working when you move from Netlify to Vercel, Cloudflare Pages, GitHub Pages, or S3 — it's true static site form handling with no build-pipeline lock-in.

  • Works on Vercel, Netlify, Cloudflare Pages, GitHub Pages, or S3
  • Host-agnostic — no build-pipeline lock-in like Netlify Forms
  • 500 free submissions/mo on unlimited forms, spam filtering included
One serverless form deployed unchanged across Vercel, Netlify, and Cloudflare Pages

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.

Common questions

Serverless form handling questions.

View all FAQs
What is serverless form handling?

Serverless form handling means your site does not run its own always-on form server. The browser posts to a hosted endpoint — https://splitforms.com/api/submit — that validates, filters, stores, and routes the submission.

Do I need an API route or serverless function?

No — a plain contact, lead, waitlist, or signup form posts straight to splitforms. Add your own function only when something must run server-side first, such as looking up a coupon code or generating an invoice number before the submission is accepted.

Does this work on Vercel, Netlify, and Cloudflare Pages?

Yes. It works anywhere that can serve HTML or JavaScript because the POST goes to splitforms, not your hosting provider — there is nothing platform-specific to configure.

How is this different from Netlify Forms?

Netlify Forms is tied to Netlify's build and hosting pipeline. splitforms is host-agnostic: the same form keeps working if you move from Netlify to Vercel, Cloudflare Pages, GitHub Pages, or S3.

How much does serverless form handling cost?

splitforms is free for 500 submissions a month on unlimited forms, with email notifications and spam filtering included. Pro is $5/month for 5,000 submissions plus webhooks, integrations, and CSV/XML/PDF exports; Pro is $5/month for 5,000 with CC/BCC and priority support; a 3-Year plan is $59 for the first 3 years, then $59/year, for 15,000 a month. Unlimited Business plans are available by emailing [email protected].

How do I stop spam without writing my own filter?

splitforms includes a hidden honeypot field (botcheck) and a time-trap field (form_loaded_at) that catch most bots automatically, plus server-side content heuristics. You can layer on optional reCAPTCHA v2 with your own secret for an extra check — none of it requires a validation function of your own.

Can I accept file uploads without a serverless function?

Yes, with the Storage integration (a paid add-on): up to 5 files per submission at 5 MB each, with no upload handler of your own to write.

Is there a rate limit if I don't run my own backend?

Yes — the shared endpoint allows 6 submissions per minute per IP and 20 within a rolling 15 minutes, returning HTTP 429 past that, since there is no server of yours in front of it to add custom throttling.

When do I still need my own serverless function?

splitforms covers the shared work — storage, spam filtering, email, webhooks — but it does not run your business logic. If you need to check a value against your own database, call another API, or transform the payload before it's accepted, put a serverless function or API route in front of splitforms and forward the request from there. Most contact, lead, waitlist, and signup forms have no such logic, which is why the direct POST works without one.

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