Node reference overview
All 15 journey node types at a glance, plus the building blocks many node panels share: naming, skipping, backdating, waiting and task recipients.
A journey is built from steps called nodes. Each node type does one job: wait, send a message, raise a task, book an appointment, collect a signature, and so on. This section has one page per node type. This overview lists all 15 types and explains the building blocks that appear in many node panels. Each building block is explained once here, and the node pages link back to it.
This reference is for the administrators and implementation staff who design journeys. For the canvas itself, connecting steps and publishing, see The builder canvas and how connections work and Publishing and validation rules.
The 15 node types
The palette on the left of the builder groups nodes into Flow, Actions, Aide and End. Each card on the canvas shows the node's name, a subtitle with its type and code name (for example Pause · Wait), and a short summary of its settings.
Node | Code name | Group | What it does | Can host an AI Aide |
|---|---|---|---|---|
Trigger | Flow | The entry point. Exactly one per journey. Patients arrive through Entry rules. | No | |
Wait | Flow | Holds the patient until a time, an event, or whichever comes first. | No | |
Repeat | Flow | Fires again and again on a schedule or on events, and tracks streaks and goals. | No | |
Join | Flow | Joins parallel branches back together. The only node meant for several incoming branches. | No | |
Send | Actions | Sends WhatsApp or email messages from approved templates. | Yes | |
Form | Actions | Sends a form, or waits for form answers and routes on them. | Yes | |
DocumentSign | Actions | Collects legal e-signatures on a PDF document. | No | |
Task | Actions | Raises a task for staff, and can wait for their answer. | Yes | |
Appointment | Actions | Books an appointment for the patient. | Yes | |
Handover | Actions | Hands the patient over to another journey, or starts one alongside. | Yes | |
Artifact | Actions | Runs an AI flow that produces a document for the patient record. | Yes | |
Link | Actions | Starts a journey for another person, such as a partner, and links the two journeys. | No | |
Signal | Actions | Sends a named signal to linked journeys. | No | |
Think | Aide | Not a step. Attaches to one action node and fills its inputs from an AI flow or team. | Not applicable | |
End | End | Ends a branch or the whole journey with a named outcome. | No |
Reading a node card
- Needs setup means a required field is still empty.
- Not configured means the node has never been edited.
- n incoming branches — consider Gather appears on any node other than Gather that has several incoming connections. Parallel branches that meet should meet at a Gather.
- Convergence point · n incoming branches appears on a Gather.
- Action nodes that can host an AI Aide have an extra handle at the bottom for the dashed aide connector.
Two card hints can be wrong
A Gather card shows No timeout — publish will warn even when you have set a timeout in its panel. A Pause card shows No time branch (required) when the Pause waits only for events, although an event-only Pause is valid. Trust the panel, not the card, for these two hints.
Shared building blocks
Many panels reuse the same fields. The table shows where each block appears.
Node | Skip this step when… | If this step is already in the past | Waiting block | Staff task fields |
|---|---|---|---|---|
Start | No | No | No | No |
Pause | No | Yes | No | No |
Routine | No | Yes (Advanced) | No | No |
Gather | No | Yes | No | No |
Reach | Yes | Yes | No | Centre for staff tasks |
Capture | Yes (Advanced) | Yes (Advanced) | Yes | Lands with (role) and Centre for staff tasks |
Sign | Yes (Advanced) | Yes (Advanced) | Yes | Coordinator recipient and Coordinator centre |
Engage | Yes (Advanced) | Yes (Advanced) | Yes | Send it to and Centre |
Appointment | Yes (Advanced) | Yes (Advanced) | No | No |
Connect | Yes (Advanced) | Yes (Advanced) | No | No |
Produce | Yes (Advanced) | Yes (Advanced) | Yes (always waits) | No |
Involve | No | No | No | Role that gets the task |
Tell | No | No | No | No |
AI Aide | No | No | No | No |
Close | No | No | No | No |
Label and Notes
Every panel starts with Label and Notes.
- Label is the step's name on the canvas. Names must be unique within the journey. When names are compared, capital letters do not count and a space counts the same as an underscore, so Intake Call and intake_call are the same name. If you reuse a name, saving the step shows Another node already uses this name — node names must be unique. Uniqueness matters because later steps read a step's results by its name.
- Notes is free text for the people who maintain the journey. Patients and staff never see it.
Changes in the panel apply to the canvas when you select Save in the step dialog. If you close the dialog with unsaved edits, LeapHealthOS asks Journey Node is Not Saved — You have unsaved changes, do you want to exit?
Skip this step when…
Skip this step when… is a condition builder. When the journey reaches the step, the condition is checked. If it is true, the step does nothing (no message, task or booking) and finishes at once with the outcome skipped.
Each row has a Field, an Operator and a Value. Rows are joined with AND or OR. Use Add condition and Remove condition to change the rows.
Field offered | What it checks |
|---|---|
Patient id | The patient's id. |
Initial · field name | A value the patient was enrolled with (an initiation field of this journey). |
Step name · a field it wrote | A result written by an earlier step. Complete the path after the dot. |
Package payment pending | Whether a payment is still pending on the patient's package (yes or no). |
Package balance due (paise) | The amount still due on the package, in paise. |
You can also type your own field path. Operators are ==, !=, >, >=, <, <=, exists and not exists. Values such as true, false, numbers and null are read as those types, not as text.
Routing a skipped step. A skipped step still follows its plain connections (those with no outcome and no condition). Connections bound to an outcome are not followed. To send skipped patients somewhere specific, mark a connection as the default, or add a connection with the condition row Completed outcome == skipped (type skipped in Value).
Involve and Tell
The Involve and Tell panels do not offer Skip this step when… yet.
If this step is already in the past
Some steps wait for a moment in time: a Pause waiting until two days before an appointment, a Routine's next moment, a time limit counted from an earlier date. Sometimes that moment has already passed when the step starts, for example when a patient enrols the day before their appointment. The If this step is already in the past field decides what happens then.
Option | What happens when the moment has already passed |
|---|---|
Follow the journey | Uses the journey's own choice. The panel shows it above the field as Follows the journey: …. New journeys use Skip it. |
Skip it | The past moment is ignored. A Pause that waits only on time finishes at once down its time path. A Pause that also waits for events keeps waiting for the events only. |
Move it to now | The moment is moved to now. If the wait was "after" a date, the full wait is counted from now instead. |
Run it anyway | The moment keeps its past time, so it happens straight away. |
The journey-wide choice is the field If a step is already in the past when a patient enters in Journey settings. See Waiting, time limits and reminders.
The Waiting block
Capture, Sign, Engage and Produce have a Waiting card. It decides whether the journey waits on the step or moves on at once, and what happens if nobody responds.
Field | What it does |
|---|---|
Waits for | A fixed sentence that says what this step waits for. |
Wait here or move on | Wait here holds the patient on this step. Move on at once lets the journey continue straight away (The journey goes on at once. Nothing is waited for on this step.). Produce always waits. |
Time limit | Amount and unit (minutes, hours, days); on Produce it is Time limit (seconds). Required when the step waits (A step that waits needs a time limit. Without one it could wait for ever.), except on Sign, where an empty limit uses the clinic default. The helper says what it is counted from. |
Reminder before the limit | How long before the limit to send a reminder. Must be shorter than the limit (The reminder must come before the time limit.). Empty uses the clinic default. Produce sends no reminder. |
At the limit | The path the journey takes when the limit runs out. On Capture you name it in Path taken at the limit; on the other nodes it is fixed. Connect that path on the canvas. |
Open work when the journey moves on | What happens to this step's open tasks when the journey moves past it: Clinic default, Keep it open, Cancel it, or Hand it to operations. Operations is the role named in Settings ▸ Journeys. Produce raises no tasks, so it has no choice here. |
If a saved limit does not divide evenly into the chosen unit, the panel shows Saved as …. Enter an amount to replace it.
Node | Waits for | Counted from | Reminder | Path at the limit (as picked in the connection's Outcome) |
|---|---|---|---|---|
Engage | A staff member of the chosen role to finish the task and give an answer | The moment the task is raised | The assignee or the role is told again through the task notifications | Nobody answered in time |
Capture | The answers to the forms listed in the panel; the first decisive answer wins | The moment the step starts, or the Count from (optional) value | A form sent to the patient is sent again; a form raised as a task is brought up again | No-response fallback outcome (the name you enter) |
Sign | Every signer to sign the document | Time limit counted from: Clinic default, The moment the step starts or The moment the link goes out | Every signer who has the link and has not signed gets it again | Expired unsigned |
Produce | The AI flow to produce the document (always waits) | The moment the flow starts | None | Timed out |
When you use an Engage step as the action of a journey schedule, the panel shows A step run by a scheduler never waits. and you cannot switch it to wait. Clinic defaults for reminders, open work, the signing time limit and the operations role are described in Notification, reminder and journey settings.
Staff task fields
Engage and the Sign coordinator use the same recipient fields. Capture (Lands with) and Involve (Role that gets the task) use a role picker only.
- Send it to: A role, A specific person or A team.
- Person (for a specific person) lists staff members. Required: Pick the staff member.
- Team (for a team). Required: Pick the team. One member on duty at the task centre is picked by the team rule; the default member when nobody is on duty.
- A role is always required (The task role is always required). When you pick a person or team, the role field is relabelled Role, if nobody can take it: the task goes to this role when the person is inactive or the team has nobody available.
- Roles that have no permissions yet are marked (no permissions yet) and cannot be picked, because they cannot get tasks. Set their permissions first; see Roles and permissions.
- A centre field picks The centre whose worklist this task appears in. It is labelled Centre on Engage, Centre for staff tasks on Reach and Capture, and Coordinator centre on Sign. Like other fields it can be fixed or worked out for each patient (see the next section), for example the patient's usual centre (most visits).
Where the tasks then appear, and how staff complete them, is covered in Where tasks come from and Working a task.
Field sources: Static, Expression, Resolver, AI
Fields that name a person, centre, doctor, appointment or value let you choose where the value comes from.
Source | Use it for |
|---|---|
Static | A fixed text or number. |
Expression | A value read from the journey when the step runs. Suggestions are grouped as Initiation fields, Node results, Patient (live read), Ready-made facts (read when the step runs) and Facts you type yourself (replace the words in capitals). |
Resolver | A real record found for each patient: Resolves a real entity per instance — never a fixed id pasted into a textbox. You choose a strategy (for example the patient, a relative of the patient…, the patient's usual centre (most visits)), optional fallbacks (If that's not found, try…), and If nothing resolves: Skip this step or Fail the node. |
AI | Filled by the AI Aide attached to this step. See AI Aide node. |
If nothing resolves: Skip this step
Despite its label, Skip this step does not skip the whole step. The field is left empty and the step still runs. If the field is optional, the step goes ahead without it; if the step cannot work without it, the step fails. Choose Fail the node when you want a clear failure instead.
Ready-made facts include Package payment is pending (yes or no), Amount still due on the package (in paise), Days of medicine the patient has left at home, Type of bed or unit the patient occupies now and Number of open logistics requests of the patient. Patterns you complete yourself include stock.ITEM_CODE.on_hand, measure.MEASURE_KEY.latest, measure.MEASURE_KEY.count and measure.MEASURE_KEY.window.SECONDS.
Plain expression fields
Some fields are plain text boxes that hold an expression: Tell Values to send, Connect Bridge mappings, Produce Inputs and AI Aide Inputs. Start each expression with context., initial., nodes. or patient.. Anything else is used exactly as typed, as fixed text.
Outcomes and connections
When a step finishes, it records an outcome. To say which connection follows which outcome, hover over the connection and select the branch icon that appears (or the label already shown on the connection). In the editor you can pick an Outcome, add condition rows, or tick Default edge (fires when no condition matches), then select Apply. Plain connections (no outcome, no condition) all fire together, which starts parallel branches. The full rules are in The builder canvas and how connections work.
Node | What the edge editor offers |
|---|---|
Pause | A Pause branch list: Time branch or Event n: … for each event branch. There is no Outcome list; to route on an outcome name you typed in the Pause panel, add a condition row Completed outcome |
Routine | Outcome: Fired, Missed once, Goal missed, Goal achieved, Off track, Stalled, Exit condition met, Nothing to run on. |
Gather | Outcome: met, timeout, impossible (impossible applies to K of N only). |
Capture (when it waits for answers) | Outcome: each answer route (its label, or form name · route), each form's form name · Outcome when answered, and No-response fallback outcome. |
Sign | Outcome: Everyone signed, Declined, Expired unsigned, Signing provider failed, Cancelled. |
Engage (when it waits) | Outcome: each answer staff can give, as you typed it, plus Nobody answered in time. |
Connect | Outcome: Admitted to the other journey, Already in that journey, Refused by its cooldown, Could not be admitted. |
Produce | Outcome: Document produced, Document failed, Timed out. |
Involve | Outcome: The other person is on their journey, Nobody to involve, A task asks staff to link them, Their journey refused the admission. |
Reach, Appointment | No Outcome list. Use plain connections, or condition rows, for example Completed outcome |
Start, Tell | No Outcome list. Use plain connections, or condition rows on patient, enrolment or earlier-step fields. |
Close | None; Close has no outgoing connections. |
If a step fails when it runs (for example a required record cannot be found), staff can see the failure on the patient's run. See Running journeys and Health and insights.
Last updated on