SAVEFORM

Webhooks · Last updated April 23, 2026

Templates & variables

Every webhook picks one of two payload modes. The editor shows a live preview of the exact request as you type, so you can dial the shape in before saving.

Payload modes

ModeWhen to use it
rawSends the full submission wrapped in a small envelope. Best for Zapier, n8n, or your own backend — anywhere you want every field accessible. You can optionally rename or drop fields with the field rename map.
templateSends a custom JSON shape that you write, with {{fieldName}} placeholders. Required for Slack and Discord.

Raw envelope

When raw mode is selected, SaveForm posts this shape — your original submission fields live under data.

JSONraw-envelope.json
{
  "submissionId": "sub_01HTXN…",
  "formName":     "Contact form",
  "receivedAt":   "2026-04-20T09:12:44.128Z",
  "isSpam":       false,
  "data": {
    "name":    "Ada Lovelace",
    "email":   "ada@example.com",
    "message": "Hello from SaveForm"
  }
}

Internal control fields like _honey, _redirect, and _emailTo are stripped before the envelope is built.

Placeholders

Inside a template, use {{fieldName}} to insert any field from the submission. When a placeholder is the entire string, the original JSON type is preserved — numbers stay numbers, booleans stay booleans. When it is mixed with other text, the value is stringified.

JSONslack-template.json
{
  "text": ":inbox_tray: New submission to *{{_formName}}*",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "{{_allFieldsText}}"
      }
    },
    {
      "type": "context",
      "elements": [
        { "type": "mrkdwn", "text": "Submission `{{_submissionId}}` · {{_timestamp}}" }
      ]
    }
  ]
}

Helper variables

A handful of meta-variables are always available alongside the submission fields.

VariableDescription
{{_submissionId}}Unique ID for this submission — stable, safe to reference.
{{_formName}}Human-readable form name as shown in the dashboard.
{{_timestamp}}ISO 8601 timestamp when the submission was received.
{{_isSpam}}Boolean spam flag (true / false, not a string).
{{_allFieldsText}}Multi-line markdown summary of every field, formatted as *field*: value. Handy for Slack/Discord bodies.

Field rename map

In raw mode, you can rename or drop fields before they hit the wire without touching your HTML. Open the Field rename section in the editor and map source keys to their new name — set a target to an empty string to drop the field.

Webhook templates & variables | SaveForm.io