Send signed form submissions to your endpoint.
A submission that only lands in an inbox can't trigger anything downstream. FormWire POSTs every submission to any endpoint you control as signed JSON, carrying an x-form-signature HMAC header you verify. It's configured per form, firing alongside the email and the stored record.
What each webhook POST carries.
A JSON body you own
Every submission POSTs as JSON (id, form, fields and a spam flag) into your CRM sync, a queue or a custom endpoint.
Signed with an HMAC header
Each request carries an x-form-signature HMAC of the raw body. Verify it against your signing secret and you know the payload is FormWire's, untampered.
Retried on a failed POST
A non-2xx response or a timeout is retried automatically, so a brief outage on your endpoint doesn't drop the submission.
Only real leads reach your handler
Webhooks fire after spam filtering, so your endpoint processes genuine submissions instead of bot traffic.
Wire a form to your endpoint in 3 steps.
Open the Integrations tab
From your form's Integrations tab, choose Webhooks. Everything for this destination is configured per form, right here.
Paste your endpoint URL
Add the HTTPS URL to POST to, then copy the signing secret FormWire generates. That secret is how you'll verify every request.
Receive and verify
New submissions arrive as JSON. Recompute the HMAC over the raw body and compare it to x-form-signature: match, and you trust the payload.
What lands at your endpoint.
A JSON body you can act on, and a signature you check first.
{
"id": "sub_9fK2xQ7mB1",
"form": "contact",
"created_at": "2026-07-18T14:32:07Z",
"spam": false,
"data": {
"name": "Dana Okafor",
"email": "dana@example.com",
"message": "Can you send over the API pricing tiers?"
}
} The exact header name, signature encoding and HMAC algorithm are pinned in the webhook docs. Verify against them before you ship your handler.
Webhooks FAQ
Payloads, verification and the details that matter.
Want a different destination?
All integrationsEvery submission, POSTed to your stack.
Add your endpoint, copy the signing secret. The next submission arrives as signed JSON you can verify and act on.