Contact Form for Static Sites (JAMstack)
Static sites are great until someone wants a contact form. You don't need to spin up a backend or pay for Netlify Forms — point your form at splitforms and ship.
JAMstack and static sites built on Hugo, Jekyll, Eleventy, or pre-rendered Next.js have no server to receive a form POST. Netlify Forms charges per submission past a tiny free tier. Self-hosting a serverless function works but is two extra services (Lambda + SES + Postgres) for what should be one drop-in. splitforms is that drop-in.
- →Basic contact form · 4 fields
- →HTML, JS, React, PHP, cURL outputs
- →One POST endpoint, no SDK
- →Honeypot + classifier, no CAPTCHA
See exactly what your visitors see — and you’ll receive.
Left: the rendered form, fully interactive in a sandboxed iframe. Right: the email and dashboard view that lands the moment a visitor submits.
Every submission becomes an email plus a dashboard row. The fields below are the exact payload your form will send. Reply-to is wired to the visitor’s email so hitting reply goes back to them.
Iframe is sandboxed — submit doesn’t actually fire. Get your access key to wire it up live.
Generate, embed, receive.
Three actions stand between you and your first lead. None of them require a backend, a database, or a CAPTCHA library.
Add the form HTML to a layout
In Hugo, drop it into a partial. In Jekyll, put it in _includes. In Eleventy or Astro, paste it into a component. The form is plain HTML so any templating language passes it through.
Reference your access key
Store the key in a config file or environment variable, then template it into the hidden input at build time. The key is safe to expose — it's scoped to your forms only.
Deploy your static site
Push to Vercel, Netlify, Cloudflare Pages, GitHub Pages, S3 + CloudFront, or wherever. The form will POST to splitforms.com from any origin — no proxy needed.
Five outputs. One backend.
HTML by default. Click open the language you ship in — every variant POSTs to the same /api/submit endpoint.
Replace YOUR_ACCESS_KEY with the key from your dashboard. That’s the only edit.
One template. Every framework.
The same field set works on every framework splitforms supports. HTML, React, Next.js, Vue, Astro, Hugo, WordPress — same POST, same backend.
Things people ask before they ship.
Direct answers, no marketing fluff. Missing one? Email hello@splitforms.com.
Ship your contact form for static sites (jamstack) in 60 seconds.
1,000 free submissions per month. No credit card. Copy the snippet, paste your access key, watch leads land in your inbox.