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
| Parameter | Type | Default | Description |
|---|---|---|---|
path | string | — | Letters, digits, -, _. Unique per environment. |
title | string | Form | Page heading (HTML-escaped). |
fields | list | [] | One row per field: name, label, type, required, and options for selects. |
response_message | string | (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:
numberfields arrive as real numbers — integers stay integers (-5→-5), decimals and scientific notation become floats (1e3→1000.0). - An optional field left blank arrives as
null; a missing required field rejects the submission with a 422. filefields 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
numberthat doesn't parse — includingnan/inf, which are parseable floats but not valid JSON - a
selectvalue 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
selectwith an emptyoptionslist 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.