← Back to Blog
Guide forms jamstack netlify vercel

Collecting Form Submissions from a JAMstack Site

JAMstack gives you speed and simplicity but no server to handle forms. Here's the clean way to capture submissions from a static frontend.

JW

Jason Warner

July 7, 2026

Collecting Form Submissions from a JAMstack Site

The JAMstack model — prebuilt markup served from a CDN — is wonderful for performance and painful for anything that needs a server. Forms are the classic example. Your beautifully static site has nowhere to send a POST.

The Options

You have three realistic choices: write a serverless function for every form, use your host's built-in form handling and accept its limits, or post directly to a dedicated form backend. The third keeps your forms portable across hosts and gives you the most control.

Posting from Fetch

You don't even need a full page reload. Submit with fetch and handle the response in JavaScript:

await fetch('https://api.bluejayrelay.com/f/frm_yourtoken', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ email, message })
});

The endpoint accepts JSON, URL-encoded, and multipart form posts, so it works whether you submit with fetch or a plain HTML form.

Portability Matters

If you tie every form to one host's proprietary form feature, migrating away means rebuilding all of them. A standalone endpoint is just a URL — move your static site to any CDN and the forms keep working untouched.

Built-in Essentials

Spam filtering, submission storage, email notifications, and an origin allowlist come with the endpoint, so your JAMstack site stays a pure frontend while still capturing leads reliably.


Add portable forms to any JAMstack site. Try Bluejay Forms free.

#forms #jamstack #netlify #vercel

Build more reliable webhook workflows.

Capture, transform, and retry webhooks with full observability. Free to start, no credit card.