Last updated on

Signed webhooks for static site forms

Most static site contact forms stop at email. That is fine until the submission is supposed to become a row in your database, a message in the channel your team actually reads, or the start of an account you already know how to provision. Copying out of the inbox is how that work gets lost.

FormBeam already accepts the POST from your HTML form, saves the submission, and can email you. Webhooks are the piece that hands the same accepted submission to an HTTPS URL you control. Your page does not wait on that call. If your URL is having a bad minute, the lead is still in the dashboard.

A typical setup looks like this. Your marketing site is static. The form still posts to https://api.formbeam.io/f/{slug}. In form settings you paste a URL such as https://api.yoursite.com/hooks/formbeam. From there the story is yours.

You can write a small receiver that inserts the fields into Postgres and returns 200. You can have that same handler open a ticket, add the email to the list you already run, or POST a short message into Slack or Discord with the name and message body. FormBeam will not map fields into those tools for you. It will keep sending the same signed JSON until your endpoint says it is done, and you can redeliver from the log if you had to fix the URL.

That pattern covers a lot of the jobs people bolt onto a contact form. A “talk to us” form can create a draft CRM record instead of waiting for someone to notice the notification. A waitlist form can hit the same signup path you use for billing, so the person is not trapped in a spreadsheet. A support form can land in the queue your team already works, with the original files noted in the payload when FormBeam has them. A job application form can drop into the folder or tracker you already trust, without you standing up a second form server just to get JSON.

Turning it on is a URL and a secret. Open the form, open Webhook, paste an HTTPS endpoint, save, and copy the whsec_ value once. Send the test ping and confirm your handler saw a ping event. Localhost is rejected, so use a public URL or a tunnel while you are developing. Verify the HMAC on the raw body before you trust the fields; the exact headers, payload shape, and retry schedule are in the webhooks docs.

Spam is stored and never sent to your URL. Email and auto-reply keep working even if you never add a webhook. You get one URL per form. There is no built-in Sheets, Slack, Zapier, or custom payload template. If you need several destinations, your receiver fans out. If you need HIPAA or a form server you host yourself, this is not the product.

Free plans include 100 submissions a month. Create a form, point it at an endpoint you own, and send the ping. The docs are at formbeam.io/docs/webhooks, and signup is on formbeam.io.