Actions

Notification Prompt

Ask a quick question as a macOS notification — up to four buttons, or three plus a typed reply — and wait for the answer.

action.notification_prompt
ACTIONNotification Prompt

At a glance

Two outlets
Action carries the answer; Dismissed carries none of it
Emits
action, actionIndex, text, respondedAt, dismissedBy, title, body

Set it up

Write the title and message, put one button label per line, and decide how long to wait. Nothing opens and nothing takes focus — the question arrives the way any other app asks for your attention, and can be answered from another Space or from Notification Center later.

The Notification Prompt inspector, with three buttons and a typed reply.
The Notification Prompt inspector, with three buttons and a typed reply.

It is the lightest of the control surfaces: User Input, Form, Pick from List and HTML View all put a window on screen. And it is not Notification, which fires a banner and moves straight on — the waiting is the whole feature.

Configure

FieldDefaultWhat it does
TitleWatchflowsSupports {{var}}; falls back to "Watchflows" when it renders blank.
Message—The body. Supports {{var}}.
Buttons (one per line, up to 4)—Up to 4 labels — 3 with a typed reply on. Labels are used exactly as typed and are not interpolated, because macOS registers them before the payload exists.
Destructive Buttons—Comma-separated labels drawn in red. Each must match a line in Buttons.
Buttons That Open Watchflows—Comma-separated labels that bring the app forward when tapped.
Allow a typed replyOffAdds an inline reply field, opened from its own button.
Reply ButtonReplyThe button that opens the field.
Reply Placeholder—The grey words inside the empty field. Supports {{var}}.
Send ButtonSendThe button that sends what was typed.
Give up after (seconds)900Fifteen minutes. Clamped between 5 seconds and 24 hours; a value that is not a number is refused outright.

Output

Each key belongs to exactly one outlet. Whichever fires, the other's keys are removed rather than left empty — so a chained pair of prompts can never leak an earlier answer.

KeyOutletValue
actionActionThe tapped button's label — or the Reply Button's label for a typed reply
actionIndexActionZero-based position of the button; -1 for a typed reply
textActionWhat was typed, on a typed reply
respondedAtActionISO 8601 time of the answer
dismissedByDismissedclose — the × or Clear — or click, the notification's body
titlebothThe rendered title that was shown
bodybothThe rendered message that was shown

There is no outlet per button. Wire a Compare behind Action and test {{action}} against each label — one node instead of a fan of wires.

Example: ask what to do when a deploy lands

A webhook reports the build, the prompt asks, and a Compare on {{action}} routes Ship it away from everything else.

A webhook, a prompt, a compare.
A webhook, a prompt, a compare.

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

When my build webhook fires, ask me in a notification whether to ship it, with Ship it and Hold buttons, and branch on which one I press.

Good to know

Running out of time fails the node — it never takes Dismissed. A notification nobody saw is not someone declining to answer, so the run goes red in the log. Dismissed is reserved for a person actually closing it or clicking its body. A disabled node passes through Dismissed for the same reason.

Use Alert style for anything that must be answered. Banner style slides away after a few seconds — it stays in Notification Center with its buttons live, but the wait is then the only guaranteed way the node hears back. Alert style "None", or denied permission, fails the node immediately rather than waiting on something nobody could see.

Four actions is the ceiling, reply field included. macOS shows buttons on hover and folds two or more into an Options menu. The node refuses to run — before anything is posted — on a fifth action, a duplicate label, no way to answer at all, or a Destructive or foreground label that matches no button.

A very long title or message is shortened, not refused — 256 characters of title, 2,048 of message.