Help Center menu

Webhook payload reference

Every submission to a form with a configured Webhook URL fires a single POST request to that URL with a JSON body.

Where to set the URL

Open the form → Settings (gear icon) → Webhook URL. Paste any HTTPS endpoint that accepts POST requests.

Top-level fields

  • event — always response.created
  • formId — the form's unique ID (UUID)
  • formTitle — the form's title at the time the response was submitted
  • responseId — the new response's ID (UUID)
  • submittedAt — ISO 8601 timestamp in UTC
  • answers — an array of answer objects (see below)

Answer objects

Each entry in answers represents one block the respondent answered:

  • blockId — the block's UUID, stable across edits to the form
  • questionText — the block's question label at the time of submission
  • type — one of SHORT_TEXT, LONG_TEXT, MULTIPLE_CHOICE, SINGLE_SELECT, DROPDOWN, RATING, YES_NO, EMAIL, PHONE, FILE_UPLOAD, CHECKBOX
  • value — the typed answer (a string, number, array of strings, or array of file URLs depending on the block type)

Example payload

{
  "event": "response.created",
  "formId": "8a4f...",
  "formTitle": "Contact form",
  "responseId": "c2e1...",
  "submittedAt": "2026-05-31T14:23:11.000Z",
  "answers": [
    { "blockId": "b1...", "questionText": "Your name", "type": "SHORT_TEXT", "value": "Alex" },
    { "blockId": "b2...", "questionText": "Email", "type": "EMAIL", "value": "alex@example.com" }
  ]
}

Delivery semantics

  • Webhooks fire asynchronously — submitting respondents see a thank-you screen the moment the response is saved, regardless of webhook success.
  • The request is fire-and-forget — there's no automatic retry on failure.
  • Headers: Content-Type: application/json, User-Agent: NodumForms-Webhook/1.
  • No signing header yet (on the roadmap).

Testing

Paste your URL into webhook.site to capture the schema without writing any code. Then move to your real endpoint once you've confirmed the shape.

Give feedback

Was this resource helpful?

|

Up next

Zapier & Make recipes

NodumForms' webhook can trigger any Zap or Make scenario directly — no native app required.

Read more

FAQs

A native Zapier app is on the roadmap. Today the easiest path is to point your form's Webhook URL at a Zap's "Catch Hook" trigger — every submission then fires the Zap with the full response payload.

No — webhooks are fire-and-forget. If your endpoint returns a non-2xx status, the response is still saved in NodumForms but the webhook is not retried. If reliability matters, point the webhook at a queue (Zapier, Make, or your own) that handles retries.

Not yet — a signing secret + signature header is on the roadmap. For now, treat the webhook endpoint as a trusted listener and protect it with a hard-to-guess URL path.