Triggers

Form

Asks you for a handful of typed values before the flow starts — a floating panel with real fields, validation, and a Submit button.

trigger.form
TRIGGERForm

At a glance

Fires when
You press Run and submit the panel
Emits
Every field, twice — nested under form and flat by name
Field types
Text · Number · Email · Phone · Date · Select · Toggle · File · Folder · Image · Multiple Images · Destination

Set it up

Build the field list in the inspector's Fields editor: drag rows to reorder, and give each one its placeholder, default, help text, options, and validation. Preview Form… shows the real panel in dry-run mode — Submit there discards and nothing runs.

The Fields editor. Each row carries its own type and rules.
The Fields editor. Each row carries its own type and rules.

Press Run — from the canvas or the menu bar — and the panel appears above everything, follows you between Spaces, and works over full-screen apps. Submit seeds the run; Esc, Cancel, and the close button mean the run never starts.

Configure

FieldDefaultWhat it does
Fields—The field list, with per-type extras and validation rules.
Form TitleFormShown at the top of the panel, and emitted as formTitle.
Description—Optional text under the title.
Submit Button LabelSubmitThe wording on the confirm button.
Preview Form…—Presents the real panel in dry-run mode.
Custom Arguments—Extra key-value pairs merged under the form's keys; a field of the same name wins.

Output

Submitting emits every field twice: nested as {{form.severity}} and flat as {{severity}}, carrying the identical typed value. Numbers arrive as real numbers, toggles as booleans, an unfilled optional field as null with its key still present.

KeyTypeValue
formObjectEvery field as a nested object
<fieldName>TypedOne flat key per field, under the field's own name
formTitleStringThe form's title
timestampStringWhen it was submitted, ISO 8601
filePathStringThe first file, folder, or image field's path — the first entry for Multiple Images. Absent when the form has no file field.

Example: a bug report that files itself

Form collects a title and a description. Template shapes them into the issue body. Notification confirms. Swap the last node for Linear: Create Issue and the report lands on the board.

Three nodes. Run, fill the panel, submit.
Three nodes. Run, fill the panel, submit.

Paste this into the Flow Builder to get the same flow:

When I run this, show me a form asking for a bug title and description, then notify me with what I typed.

Good to know

Field names are slugged, so only form and timestamp are rejected. Names become lowercase snake_case, which means formTitle and filePath slug to formtitle and filepath and are perfectly legal field names. Duplicate names are refused too.

Validation gates Submit. Required fields must be filled, numbers must parse, email and phone are format-checked, a Select value must be one of its options, and any per-field min, max, regex, or length rule applies.

Agents get the same form as an API. A headless caller — the agent, an MCP client, a parent flow — sees each field as a named, typed parameter with its help text and options. Values resolve caller-supplied first, then the field's default; a required field with neither refuses the run and names the field. The payload is identical in shape either way.

Per-field {{…}} entries appear in downstream pickers after the first run. The picker learns keys from real payloads. Until then type {{fieldName}} by hand — it resolves fine.

A Destination field routes. It lists live Linear teams or projects and emits an object, so a downstream Linear node can read {{destination.teamId}} — or just pick "Use the form's pick". It needs a connected Linear account.