Help

Webhooks

POST a JSON payload of each submission to your own endpoint — with a signature you can verify.

Webhooks are the most flexible integration: every submission is sent as JSON to a URL you control, so you can wire forms into Zapier, your own backend, a Slack relay, or anything else.

Set one up

  1. In the form’s Integrations, add a webhook with your endpoint URL and a secret (any random string).
  2. Use the Test action to send a sample payload and confirm your endpoint receives it.
  3. Enable it — every submission now POSTs to your URL.

Payload

JSON
{
  "formId": "contact-form",
  "formTitle": "Contact us",
  "submissionId": "abc123",
  "createdAt": "2026-06-13T18:20:00.000Z",
  "data": { "name": "Sam", "email": "sam@example.com" },
  "tracking": { "eventId": "…", "utm": { "utm_source": "google" } }
}

Verifying the signature

Each request includes an X-HigherStack-Signature: sha256=… header — an HMAC-SHA256 of the exact JSON body using your secret. Recompute it on your side to confirm the request is genuine. Full details and retry behavior are in the Webhook reference.

Tip

Webhook deliveries retry a few times on failure. Make your handler idempotent by de-duplicating on submissionId so a retry never creates a double.

Still need help?

A dedicated support form is coming soon. In the meantime, jump back into the product or reach the team from the contact page.