Form Submitted

trigger.typeform_submission
TriggerBusiness appsconnection requiredruns in-engine

Registers a webhook on the form at publish; one run per submission, with the answers flattened by field ref.

Start a run each time a Typeform form is submitted.

Connection

Required
Yes — the node will not save without one
Auth type
Bearer token
Providers
Typeform
Secret shape
the Typeform personal access token
Resolved by
config.connection_id, else node.connection_id

Configuration

1 field, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
form_id
The form's id — the code in its edit URL (admin.typeform.com/form/<form_id>/create), not the whole URL.
stringYes——lT4Z3j

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "form_id": "lT4Z3j"
}

Output

One shape.

submission

FieldTypeExample
event_id
Typeform's own id for this delivery. Used as the run's idempotency key, so a redelivery cannot start a second run.
string01HZ8Q2E9J5V7K3M4N6P8R0T2W
event_type
Typeform's event name; today always form_response.
string—
form_id
The form that was submitted.
stringlT4Z3j
form_title
The form's title, from the response's own definition.
string—
token
Typeform's id for THIS submission (stable across redeliveries). Use it as the natural key when writing the submission to a sheet, CRM or database.
string—
submitted_at
When the respondent submitted, ISO-8601 UTC.
string—
landed_at
When the respondent opened the form, ISO-8601 UTC.
string—
hidden
Typeform hidden fields — the query-string values passed into the form (utm_source, user_id, …).
object—
answers
Every answer flattened to one object, keyed by the field's ref (else its id, else a slug of the question title). Read it as {{ $json.answers.email }}. A duplicated ref keeps the first answer and suffixes the rest: email, email__2.
object—
form_response
Typeform's raw form_response envelope, verbatim — definition, answers array and all. Nothing the provider sent is dropped by the flattening.
object—
{
  "answers": {},
  "event_id": "01HZ8Q2E9J5V7K3M4N6P8R0T2W",
  "event_type": "",
  "form_id": "lT4Z3j",
  "form_response": {},
  "form_title": "",
  "hidden": {},
  "landed_at": "",
  "submitted_at": "",
  "token": ""
}

Notes

  • Publishing registers the webhook on the form; unpublishing or disabling the workflow deletes it at Typeform.
  • Every delivery is verified against Typeform-Signature (base64 HMAC-SHA256 of the raw body) before any run starts.
  • Runs are idempotent per event_id — Typeform retries, and a retry cannot start a second run.
  • answers is the flattened view keyed by field ref; form_response is Typeform's raw envelope if you need something the flattening does not carry.

Related Typeform nodes

See Form Submitted run in a workflow.

In a technical demo we add the Typeform connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.