A portable form backend for JAMstack sites.
Keep your site static and your forms production-ready. splitforms receives submissions, filters spam, emails your team, stores every lead, and sends signed webhooks to the rest of your stack.

Use HTML or fetch. Same endpoint.
Native form posts are the simplest path. Use fetch when you want inline success messages in React, Vue, Svelte, or an island component.
const res = await fetch("https://splitforms.com/api/submit", {
method: "POST",
headers: { Accept: "application/json" },
body: new FormData(form),
});What is a JAMstack form backend?
A JAMstack form backend is a hosted endpoint that receives form submissions from static sites or frontend apps, then handles storage, email delivery, spam filtering, and webhooks without requiring your own server.
Does splitforms replace Netlify Forms?
Yes for most portable form-backend use cases. Netlify Forms is convenient if you stay on Netlify, but splitforms works on any host and includes dashboard storage, email, signed webhooks, file uploads, and spam filtering.
Can I use it with Next.js, Astro, Hugo, or Eleventy?
Yes. Use a native HTML form action for static pages or submit with fetch from a frontend component. The same endpoint works across all JAMstack frameworks.
Do I need a serverless function?
No. You can POST directly from the form to splitforms. Use a serverless function only if you need custom business logic before accepting the submission.