trigger.form

Form (trigger.form)

A hosted form page, no frontend required. Activating the workflow serves a styled page at /forms/{environment}/{path}; every submission becomes one execution with the typed field values as the trigger item.

Parameters

ParameterTypeDefaultDescription
pathstringLetters, digits, -, _. Unique per environment.
titlestringFormPage heading (HTML-escaped).
fieldslist[]One row per field: name, label, type, required, and options for selects.
response_messagestring(thanks)Shown on the page after a successful submission.

Field types: text, textarea, number, select (with options), file.

The trigger item

{ "who": "Ada", "count": 3, "tier": "pro", "notes": null }
  • Values keep their type: number fields arrive as real numbers — integers stay integers (-5-5), decimals and scientific notation become floats (1e31000.0).
  • An optional field left blank arrives as null; a missing required field rejects the submission with a 422.
  • file fields land in $binary (name → file ref), never in the json. An optional file left out simply has no key.

Server-side validation

The page enforces types in the browser, but the endpoint holds a direct POST to the same contract — all of these are a clean 422, never a crash:

  • a required field missing or empty
  • a number that doesn't parse — including nan/inf, which are parseable floats but not valid JSON
  • a select value that isn't one of the configured options
  • a file part aimed at a non-file field

Unknown extra form keys are ignored. NUL characters are scrubbed to .

Quirks & tips

  • Test without activating: ▸ on the node serves the real page one-shot at /forms-test/... — the first submission fires the workflow and is consumed.
  • Titles, labels, and options are HTML-escaped — user-facing text can't inject markup into your page.
  • A select with an empty options list accepts any submitted value — configure options if you want the constraint.
  • The unprefixed URL /forms/{path} serves the default environment.

Related

  • Webhook trigger — raw HTTP instead of a hosted page.
  • Extract From File — parse an uploaded csv/xlsx/pdf into row items.
  • Gmail Send — the classic "contact form → email" pair.