Add a manual action button to a Job
A Job is the container for a piece of recurring work — its flows, agents, and data all live under one roof, watched from its Observe face and configured from its Configure face. Most of what a Job does fires on its own: a schedule, an incoming email, an event. But some actions only make sense when someone decides to fire them — “run the security report now,” “re-send this week’s digest,” “chase this one invoice today.” That’s what a manual action button is for.
A button is authored once on Configure and then shows up as a Run button on Observe, for anyone watching the Job.
Add a button
Section titled “Add a button”On the Job’s Configure face, find the Manual actions panel and click Add button.
The New manual action form:
| Field | What it does |
|---|---|
| Title | The label on the Run button (required). |
| Description | Shown under the title on Observe and in the confirm modal — say what it does. |
| Runs | Which linked flow or agent this button launches. |
| Parameters | Optional key/value pairs, passed into the run (see below). |
| Ask for confirmation before running | On by default — clicking Run opens a confirm step before anything fires. Turn it off for a button that should fire the instant it’s clicked. |
Save it, and it appears in the Manual actions list on both Configure (with a Delete control) and Observe (as a Run button).
How parameters reach the run
Section titled “How parameters reach the run”What a parameter becomes depends on what the button launches:
- Flow-launched buttons — the key/value pairs land in the run’s
payload, exactly like a webhook POST or a Run API call does. Read them in any step as{{ payload.<key> }}— e.g. a parameter namedcustomer_nameis{{ payload.customer_name }}. - Agent-launched buttons — agents take one text prompt, not a structured payload, so the title, description, and parameters are folded into that prompt as plain lines (
- key: value) under a “Parameters:” heading. Write your title and description as if they’re the first lines of the instruction the agent will read.
Run a button
Section titled “Run a button”On the Job’s Observe face, the Manual actions panel lists every button as a Run control. Click it:
- If the button asks for confirmation, a modal shows the title, description, and a Run / Cancel choice.
- If it doesn’t, the run starts immediately.
What happens next depends on what’s behind the button:
- A flow launches in the background — the modal shows Running… and polls for the outcome, so you can watch it or close the modal and check the Job’s Runs panel later.
- An agent runs synchronously — the modal waits for it to finish and shows the result directly, since there’s no equivalent background-run infrastructure for agents yet.
Either way, if the run pauses partway through — a flow parked on a Checkpoint, or an agent that stops to ask a question — the modal shows Waiting on a checkpoint rather than claiming success or failure, and points you at the Job’s Runs panel to follow it from there.
Who can run a button
Section titled “Who can run a button”Manual actions are gated the same way Configure itself is: the Job’s owner, or an Administrator. Anyone else sees the same Run button, but disabled, with a tooltip explaining why — the control isn’t hidden, just unavailable. A Job with no owner yet (a fresh Draft before its setup checklist assigns one) is runnable by anyone, so you’re never locked out of the very step that lets you assign an owner.
The run itself acts as the Job’s owner when it has one, falling back to your own identity for an ownerless Job — so a flow’s {{ actor.email }} and similar references resolve sensibly either way.
Where to go next
Section titled “Where to go next”- Variables — everything else you can reference with
{{ }}, including the fullpayloadpicture. - Building an automation — triggers, steps, and data end to end, for the flow a button might launch.
- Keep a human in the loop — what a flow parked on an approval looks like from the inside.