Free forever · No account · Unlimited submissions

The free form backend for static websites

Point any HTML form at one endpoint and every submission lands in your inbox. No server, no backend code, no account.

Confirm your email, paste one hidden input, done.

contact.html
<form action="https://silentforms.com/api/submit" method="POST">
  <input type="hidden" name="accessKey" value="YOUR_ACCESS_KEY_HERE">

  <input type="text" name="name" required>
  <input type="email" name="email" required>
  <textarea name="message" required></textarea>

  <button type="submit">Send</button>
</form>

$0

Free forever

Unlimited

Form submissions

0 lines

Backend code

2 min

To go live

Works with every static site generator, frontend framework and site builder

  • HTML
  • JavaScript
  • React
  • Next.js
  • Vue
  • Nuxt
  • Svelte
  • Angular
  • Astro
  • Gatsby
  • Hugo
  • Jekyll
  • Eleventy
  • Webflow
  • WordPress
  • Framer

Features

Everything a contact form needs. Nothing to host.

SilentForms replaces the PHP script, serverless function or third-party widget you would otherwise write to make a contact form on a static site actually send email.

HTML form to email

Every submission arrives in your inbox as a clean email with Reply-To set to the sender, so you answer from your mail client.

One endpoint, any stack

Post from a plain HTML action, fetch, or curl. Send form-encoded or JSON and get a redirect or a JSON response back.

Webhook forwarding

Add a webhookUrl field and each submission is also sent as JSON to Zapier, Make, Slack, Notion or your own API.

Spam protection built in

A hidden honeypot field drops bot submissions and per-IP rate limiting stops floods. No CAPTCHA to set up.

Your markup, your styles

Nothing is embedded. No iframe, no widget script, no theme to override. Your form stays exactly how you built it.

No account required

Confirm your email and the key is yours — no password, nothing to maintain. There is an optional dashboard if you ever want submission history or a domain lock.

How it works

Add a contact form to a static site in three steps

No install, no build step, no backend to deploy.

1

Get a free access key

Enter your email and click the confirmation link. The key tells us which inbox receives your submissions.

Your email is only used to deliver submissions. No newsletter.

2

Point your form at the endpoint

Copy the example for your stack — plain HTML, fetch or React. More in the docs.

contact.html
<form action="https://silentforms.com/api/submit" method="POST">

  <!-- Your access key: tells us which inbox gets the submission -->
  <input type="hidden" name="accessKey" value="YOUR_ACCESS_KEY_HERE">

  <!-- Any inputs you like. Each one needs a name="" attribute -->
  <input type="text" name="name" required>
  <input type="email" name="email" required>
  <textarea name="message" required></textarea>

  <!-- Honeypot: hidden from people, filled in by bots -->
  <input type="checkbox" name="botcheck" style="display: none;" tabindex="-1" autocomplete="off">

  <!-- Optional: send visitors to your own thank-you page -->
  <!-- <input type="hidden" name="redirect" value="https://example.com/thanks.html"> -->

  <button type="submit">Send</button>

</form>
3

Paste the key and go live

Replace the placeholder with your key. From the next submission on, messages land in your inbox.

<input type="hidden" name="accessKey" value="YOUR_ACCESS_KEY_HERE">

For AI coding agents

Building with an AI agent? Copy this prompt.

Paste it into Cursor, Claude Code, Copilot or ChatGPT and the agent wires the form up correctly the first time: endpoint, access key, honeypot and JSON handling included.

prompt.txt
Add a contact form to this website using SilentForms, a free form backend. No server-side code is needed.

Requirements:
1. The form must send a POST request to https://silentforms.com/api/submit
2. Include a hidden field: <input type="hidden" name="accessKey" value="YOUR_ACCESS_KEY_HERE">
   (I will replace the value with my own key.)
3. Fields: name (text, required), email (email, required), message (textarea, required).
   Every input must have a name attribute; any extra fields are fine.
4. Add a honeypot the user never sees and never fills in:
   <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">
5. Optional hidden fields: "subject" (email subject line) and "redirect"
   (absolute URL of a custom thank-you page, used for plain HTML form posts).
6. If this project uses JavaScript / React / Vue / Svelte, submit with fetch instead of a native post:
   method POST, headers { "Content-Type": "application/json", "Accept": "application/json" },
   body = JSON.stringify of all fields including accessKey.
   The response is JSON: { "status": "success" | "error", "message": string }.
   Show the message, reset the form on success, and handle loading and error states.
7. Match the existing styling of the site. Do not add other form services or libraries.

Reference: https://silentforms.com/docs

FAQ

Frequently asked questions

What is a form backend?

A form backend is the server-side piece that receives what an HTML form sends and does something with it, such as emailing it to you. Static websites hosted on GitHub Pages, Netlify, Vercel, Cloudflare Pages or S3 cannot run that code themselves. SilentForms is that backend: your form posts to our endpoint and we deliver the submission to your inbox.

Is SilentForms really free?

Yes. Unlimited forms, unlimited submissions, email delivery, webhook forwarding, spam protection and the dashboard are all free, forever. There are no paid plans and we never ask for a credit card.

Do I need to create an account?

No. Enter your email, click the confirmation link we send, and you receive an access key — no password, nothing to maintain. Signing in is optional: the same kind of emailed link opens a dashboard where you can name several forms, read past submissions, lock a form to your own domains and rotate its key. Everything works without it.

Is it safe to put the access key in my public HTML?

Yes. The key only tells us which inbox should receive a submission. It cannot read data, change settings or do anything except send you form submissions, so it is safe to ship in client-side code.

Does it work with React, Next.js, Vue, Svelte, Astro or Hugo?

Yes. Anything that can send an HTTP request works. Plain HTML forms post directly to https://silentforms.com/api/submit; JavaScript frameworks send the same fields as JSON with a Content-Type: application/json header and get a JSON response back. Cross-origin requests are allowed from any domain.

How do I redirect to my own thank-you page?

Add a hidden redirect input containing the absolute URL of the page. After a successful plain HTML submission the visitor is sent there instead of our default success page.

How is spam handled?

Include the hidden botcheck checkbox in your form. People never see it, bots fill it in, and any submission with it set is silently dropped. Each IP address is limited to 10 submissions per minute and each access key to 60, so a flood from many machines cannot bury your inbox. No CAPTCHA to configure.

Can I restrict my form to my own domain?

Yes. In the dashboard, add your domains to a form and submissions from anywhere else are rejected. A bare domain covers its subdomains. Browsers always send the Origin header this is checked against, so it stops your key being reused on someone else’s site — but a script can leave the header out, so treat it as a deterrent rather than a lock. There is a per-form option to block those requests too.

What happens if my access key leaks?

Rotate it from the dashboard. You get a new key immediately and the old one keeps working for 24 hours, so a live page keeps accepting submissions until you have updated it. If the leak is urgent, revoke the old key on the spot.

My form is not working. What should I check?

Make sure the form posts to https://silentforms.com/api/submit, the method is POST, the hidden accessKey input holds your key and every input has a name attribute. Sending an Accept: application/json header returns a JSON error message that says exactly what went wrong.

Do you store my form submissions?

Yes, and you can read them in the dashboard for as long as you keep them — nothing is deleted on a timer. You can delete a single submission, export everything as CSV, or delete a form and take its submissions with it. Spam caught by the honeypot is kept for seven days and then purged. We never sell or share any of it, and there is no tracking on your forms or on this site.

Add a working contact form in two minutes.

Get an access key, paste one hidden input into your form, and start receiving submissions by email.

Get your free access key

No signup · No credit card · No limits