Works everywhere

Form Handling for Static Sites

Static sites and Jamstack projects are fast, secure, and cheap to host — but they cannot process form submissions. FormsList solves this by giving you a form endpoint URL that handles everything: receiving data, sending notifications, filtering spam, and routing submissions to Slack, Google Sheets, or any webhook.

By Vaibhav Jain · Last updated March 30, 2026

The Problem

Static site generators like Hugo, Jekyll, Eleventy, Gatsby, and Astro produce HTML, CSS, and JavaScript files. They have no server-side runtime, which means there is no way to process a form submission, send an email, or store data. You either need to spin up your own backend, use a serverless function, or rely on a third-party form service. The first two options add complexity and hosting costs. The third option is exactly what FormsList provides — without the complexity.

The Solution

Add your FormsList endpoint as the action attribute on any HTML form. When a visitor submits the form, the data is sent to FormsList. We store it, email you, filter spam, and trigger any integrations you have configured. Your static site stays static.

<!-- Works in any static site generator -->
<form action="https://formslist.com/f/YOUR_FORM_HASH" method="POST">
  <input type="text" name="name" placeholder="Your name" required />
  <input type="email" name="email" placeholder="you@example.com" required />
  <textarea name="message" placeholder="Your message" required></textarea>
  <button type="submit">Send</button>
</form>

Works With Every Static Site Generator

Hugo
Jekyll
Eleventy (11ty)
Gatsby
Astro
Next.js
Nuxt
SvelteKit
VitePress

If it outputs HTML, it works with FormsList. No plugins, no build step changes, no runtime dependencies.

FormsList vs Netlify Forms vs Formspree

FeatureFormsListNetlify FormsFormspree
Any hostingYesNetlify onlyYes
Free submissions/mo50010050
AI spam filteringYes (paid)AkismetNo
Native integrationsSlack, Sheets, DiscordNetlify ecosystemZapier, Airtable
Starting price$9/mo$19/mo (bundled)$10/mo

AJAX Example for Jamstack Apps

For Gatsby, Next.js, or any JavaScript-heavy static site, you can submit via fetch for a smoother UX without page reload:

async function handleSubmit(e) {
  e.preventDefault();
  const form = e.target;
  const res = await fetch("https://formslist.com/f/YOUR_FORM_HASH", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(Object.fromEntries(new FormData(form))),
  });
  if (res.ok) alert("Submitted!");
}

Frequently Asked Questions

Does FormsList work with Hugo?

Yes. Hugo generates static HTML files, which means you can add a standard HTML form with your FormsList endpoint URL as the action attribute. No Hugo-specific plugins or configuration needed.

How is FormsList different from Netlify Forms?

Netlify Forms only works on Netlify-hosted sites. FormsList works with any hosting provider — Vercel, Cloudflare Pages, GitHub Pages, AWS Amplify, shared hosting, or anywhere else. You are never locked into a single platform.

Can I use FormsList with Gatsby or Next.js?

Yes. For Gatsby, add a standard HTML form or use fetch/AJAX to POST to your FormsList endpoint. For Next.js, you can use either server-side or client-side form submission. FormsList accepts standard POST and JSON requests.

Do I need to install any npm packages?

No. FormsList is a form endpoint service — you send data to a URL. There is nothing to install. If you prefer, you can use fetch or axios to submit forms via AJAX, but a plain HTML form works just as well.

What if I switch from Netlify to Vercel?

If you use FormsList instead of Netlify Forms, your forms keep working regardless of where you host. This is the main advantage of a dedicated form backend over a platform-specific feature.

Add forms to your static site today

Works with any static site generator. Free tier includes 500 submissions/month.

Get Started Free