splitforms.com

Serverless form handling

Serverless form handling without API routes.

Updated · plan facts checked against /pricing

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 total
  • 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

Accepted submissions are saved to a searchable dashboard before owner notification email is attempted; delivery time and inbox placement depend on provider and recipient settings.

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 total 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 paid plans (Pro at $5/mo and Annual).

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 paid plans
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 total on unlimited forms, spam filtering included
One serverless form deployed unchanged across Vercel, Netlify, and Cloudflare Pages

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

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 total on unlimited forms, with email notifications and spam filtering included. Pro is $5/month for 5,000 submissions a month plus webhooks, integrations, CSV/XML/PDF exports, CC/BCC and priority support; Annual is $49/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 and 20 within a rolling 15 minutes, per IP per form, 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

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