Actions

Mid-Flow Form

Stop a running flow, ask several typed questions on a floating panel, and carry the answers on — listed as Form in the Actions palette.

action.form
ACTIONMid-Flow Form

At a glance

Emits
form, formTitle, timestamp, filePath, and one flat key per field
Its edge over the trigger
The form itself is templated from the incoming payload

Set it up

Build the field list in the inspector — the same editor, field types and validation the Form trigger uses — then title the panel and label the button. The panel is the app's floating glass surface: always on top, follows you to the active Space, works over full-screen apps. Only the branch that reached this node waits.

The Form inspector, with the field editor and the panel preview.
The Form inspector, with the field editor and the panel preview.

Inputs

Everything upstream is readable as {{...}} — and not only downstream. The title, description, field labels, placeholders and defaults all render against the incoming payload, so a form titled Triaging {{fileName}} shows the real file name, and a field can arrive already filled in.

Configure

FieldDefaultWhat it does
Fields—The field list: reorderable rows, per-type extras, validation.
Form TitleFormThe panel's title. Supports {{var}}.
Description—Optional text under the title. Supports {{var}}.
Submit Button LabelSubmitWhat the confirm button says.
Remember ValuesNeverFor This Session or Forever prefills the next presentation from the last submission. It prefills — it never skips the form.
Preview Form…—Shows the real panel in dry-run mode; Submit discards.
Custom Arguments—Extra key-value pairs merged in alongside the form's keys.

Output

The submission is merged over the incoming payload, so everything upstream still flows through underneath.

KeyTypeValue
formJSONEvery field as a real nested object — {{form.severity}}
formTitleStringThe panel's title, after {{...}}
timestampStringISO 8601 instant of the submission
filePathFileThe first file, image or folder field's path; absent when there is none or it was left empty
one per fieldTypedThe same typed value as its form. twin — a number as a real number, a toggle as true or false, a date as ISO 8601, a file as a bare path, an unfilled optional as null with the key present

Example: annotate a file as it changes

File Changed fires, the title renders as "Describe what changed in report.pdf", and the note lands in the log with the file's own keys still underneath.

A file trigger, a form, a log.
A file trigger, a form, a log.

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

Watch ~/Documents for changes, show me a form titled "Describe what changed in {{fileName}}" with a note field and a severity dropdown, and append the answer to ~/logs/changes.jsonl.

Good to know

Only form and timestamp are refused as field names. Every stored name is slugged to lowercase, so formTitle and filePath become formtitle and filepath — not envelope keys, and safe to use.

Cancelling cancels the run. Escape, Cancel and the red close button all cancel cleanly, so a wired Failure outlet never receives it. The same node firing again within five seconds on the same payload reuses the previous submission rather than stacking a second panel.

New field names reach the variable picker after the first run. Until then type {{fieldName}} by hand — it resolves fine.