Point your form at us. We handle the rest.
Point any HTML form at one endpoint and every POST becomes an email in your inbox and a record you can query, without writing a line of backend code.
Free forever · no credit card required
| 1 | <form method="POST" |
| 2 | action="https://api.formwire.com/submit"> |
| 3 | <input type="hidden" name="access_key" value="YOUR-KEY"> |
| 4 | <input type="text" name="name"> |
| 5 | <input type="email" name="email"> |
| 6 | <textarea name="message"></textarea> |
| 7 | <button>Send</button> |
| 8 | </form> |
You keep the HTML and the styling. We handle everything after the POST.
- { } JSON
- Webhooks
-
Slack
-
Sheets
-
Zapier
-
“wired up a contact form in three minutes and it just worked. no server, no backend, nothing to babysit. why did I wait so long to try this”
Marcus Feld , Freelance developer
A working form in three steps.
No SDK to learn, no library to install. If your site can render an HTML form, your contact form can be live in under a minute.
- Step 01
Get your access key
Sign up and copy your access key. It's a public ID, safe to ship in your HTML, and it can only ever deliver mail to you.
- Step 02
Point your form at FormWire
Set your form's action to our endpoint and add the key as a hidden field. Plain HTML, fetch, or React all work.
- Step 03
Watch submissions arrive
Every POST becomes an email within seconds. Each one is also stored in your dashboard, ready to search, filter, and export.
Any stack, same endpoint
Alpine.js
Angular
Astro
Bolt
Claude Code
Cursor
Eleventy
Framer
Ghost
Hugo
Jekyll
Lovable
Next.js
Nuxt.js
Preact
Qwik
React
Remix
Replit
SolidJS
Svelte
v0
Vue
VitePress
Webflow
WordPress
Use the language you already know
It's one POST to one endpoint. Point a plain HTML form at it, or send the request yourself from whatever your stack speaks. The access key is the only wiring.
<form action="https://api.formwire.com/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR-ACCESS-KEY" />
<input type="email" name="email" required />
<textarea name="message"></textarea>
<button type="submit">Send</button>
</form> Same endpoint, same access_key field, every time. Swap in your real key from the dashboard.
Building with AI? Or are you the AI? Paste one prompt either way.
Add a contact form with name, email and message fields to my site. Point it at FormWire: set the form's action to https://api.formwire.com/submit (method POST) and add a hidden input named access_key with my key: YOUR-ACCESS-KEY Integration reference: https://formwire.com/llms.txt
Works in Lovable, Bolt, v0, Replit, Cursor and Claude Code. Swap in your access key before pasting.
What happens after submit.
Here's what FormWire does with every POST from your HTML form, fetch call or React component.
▸ POST /submit
Spam check
honeypotPASS
rate_limitOK
Stored: JSON ready on the read API
writeCOMMITTED
Email sent
toyou@yourcompany.com
ccsales@yourcompany.com
bccarchive@yourcompany.com
reply-to
smtp250 OK
Integrations triggered
webhook POST200 OK
x-form-signatureVALID
slack · sheetsDELIVERED
What happens after submit.
Here's what FormWire does with every POST from your HTML form, fetch call or React component.
-
Filtered before it reaches you
A server-side honeypot filters bots before anything reaches you. Add hCaptcha, reCAPTCHA or Turnstile per form when you want more.
-
Saved to your dashboard
Every submission lands in a searchable inbox you can filter, export to CSV, or query over the read API on Pro. Nothing lives only in email.
-
Email lands in your inbox
Typically within seconds, with Reply-To set to your visitor. Hit reply in your inbox, land in theirs.
Everything a form needs, nothing to run.
The parts easy to get wrong (delivery, security, spam) are the parts we take off your hands.
Works with any <form>
Form-encoded, multipart or JSON, with CORS handled. Plain HTML and fetch both get clean responses.
A real submissions inbox
A searchable dashboard with a spam tab, full submission detail, CSV export and a JSON read API.
Email delivery with status
Retries, dead-letter alerts, and visible per-submission delivery status.
Auto-responder
Send a branded confirmation to whoever filled the form, with template tokens.
File uploads
Accept attachments up to 5MB; secure links arrive with the notification email.
Webhooks & integrations
Signed webhooks to any endpoint, plus native Slack, Sheets and Zapier.
Multi-step form support
Split long forms into steps; the result arrives as one clean submission.
Redirect anywhere
Send visitors to your own thank-you page, validated against an allowlist.
Spam stopped at the door.
Honeypot filtering and rate limiting are on for every form. Add hCaptcha, reCAPTCHA or Turnstile per form, plus domain rules when you need them.
Want the details?
How spam protection worksDidn't think I'd have a favourite form tool, but here we are. Point your form at it, add one hidden field, done. Nothing to run, nothing lost to spam. It's in every project now.
No-code integrations
Route every submission into Zapier, Make, n8n, Airtable and other no-code tools of your choice.
Free to start. Fair when you grow.
No credit card for the free tier. Upgrade when you need more volume, richer spam controls, and integrations.
FREE
For side projects and static sites
- 250 submissions / month
- Unlimited forms
- Basic spam protection
- 2 recipient email addresses
- 30-day submission history
- Submissions inbox + CSV export
Pro
The full toolkit for products and client work The full toolkit, billed annually ($120/year)
- 10,000 submissions / month
- 10 recipient email addresses
- 1-year submission history
- File uploads & attachments
- Auto-responder, CC & BCC
- reCAPTCHA + Turnstile + domain rules
- Native integrations: Slack, Sheets, Zapier & more
- JSON read API
No hard cut-off. Go past your plan's limit and your forms keep accepting submissions, so a busy month never costs you a lead. We'll flag it when it's time to upgrade.
Frequently asked questions
Everything you need to know before pointing your form at FormWire.
Can't find answers?
We're here to help you out whenever you need! Get in touch with our dedicated support team for personalized assistance anytime.
Contact usA form backend is the service that receives your HTML form's submission and does the work a server normally would, like validating it, filtering spam, storing it, and emailing it to you. Static sites and most front-end apps have no server of their own to handle a POST, so a form backend like FormWire gives your forms somewhere to send to. You keep your HTML and styling; it handles delivery, storage, and spam.
Yes, by design. The key is an alias for your verified email address, not a secret. The only thing anyone can do with it is send a submission that lands in your inbox. It can never be used to read your data or send mail to anyone else.
No. That’s the form backend’s job. Your form POSTs directly to our endpoint from the browser; we store the submission, email it to you, and return a clean response. Your site stays fully static.
Yes. The whole integration is an endpoint and a hidden access_key field, which is exactly the kind of wiring AI tools get right in one shot. Paste the prompt above into Lovable, Bolt, v0, Cursor or Claude Code, and point the agent at formwire.com/llms.txt for the full contract covering the endpoint, field rules and response format.
A hidden honeypot field catches most bots by default, and rate limiting protects every form on every plan. Spam is stored in a separate tab and never emailed or counted against your quota. Need more? hCaptcha is included on the free tier; Pro adds reCAPTCHA, Turnstile, and per-form domain restrictions.
How spam protection works →Every submission is stored durably before we acknowledge it, then delivered by a worker with retries and dead-letter alerts. You can see per-submission delivery status in the dashboard.
Always. Every plan can search and export CSV from the dashboard; Pro adds the JSON read API with a private, revocable key, pagination and date filters included.
Read API docs →If it can POST, it works, whether that's plain HTML forms, fetch, axios or server actions. We accept form-encoded, multipart, and JSON bodies, with CORS handled for browser clients.
Yes. Add a _redirect field with your URL and we'll 302 there on success. Redirect targets are validated against your per-form allowlist, so the field can't be abused.
Same easy contract, sturdier engine. Submissions are committed transactionally before we ack, delivery status is visible per submission, and recipients must be verified, so the public key can't be abused. Plus a real read API with revocable keys.
Notes from building a form backend.
Practical guides and product updates from the team building FormWire.
Form honeypot technique that holds up
The form honeypot technique explained: how to hide the field from humans but not bots, why display:none is weak, and how to avoid autofill false positives.
Send email from an HTML form without a backend
Send email from an HTML form without a backend: why mailto: fails, what serverless and host forms cost, and working code for the endpoint pattern.
Jamstack forms: 3 ways to handle submissions
Jamstack forms compared: host-captured (Netlify-style), embedded widgets, and form backends — real tradeoffs and the pattern that stays portable.
Make that POST turn into an email.
Grab an access key, paste the snippet, and watch your first submission arrive before your coffee cools.
Free tier forever. No credit card required. GDPR-friendly · TLS everywhere.