Last updated: 5 July 2026
Variables let you insert dynamic content into workflow actions. Instead of writing a fixed message, you can reference patient names, appointment times, and other data that changes for each run.
Variables use double curly braces:
{{patient.first_name}}{{clinician.last_name}}Hello {{patient.first_name}}, your appointment is at {{appointment.start_time}}In the flow builder, any text field that supports merge fields has a { } button. Click it to open the variable selector, which shows all variables available in the current context. Click a variable to insert it at your cursor position.
The variables available depend on your workflow's trigger type:
Patient
| Variable | Example |
|---|---|
{{patient.first_name}} |
Jane |
{{patient.last_name}} |
Smith |
{{patient.email}} |
jane@example.com |
{{patient.mobile_phone}} |
07700 900000 |
{{patient.date_of_birth}} |
1985-03-15 |
{{patient.nhs_number}} |
123 456 7890 |
Over 30 built-in patient fields are available, plus any custom attributes your organisation has configured.
Appointment
| Variable | Example |
|---|---|
{{appointment.start_time}} |
2026-03-24T10:00:00 |
{{appointment.title}} |
GP Consultation |
{{appointment.location}} |
Room 3 |
{{clinician.first_name}} |
Sarah |
{{clinician.last_name}} |
Jones |
{{patient.first_name}} |
Jane |
The clinician on the appointment is available as its own object — expand it in the variable selector to see fields such as first name, last name, and email.
Recall
| Variable | Example |
|---|---|
{{rule.name}} |
Annual Blood Pressure Check |
{{occurrence.due_at}} |
2026-04-01 |
{{occurrence.window_start}} |
2026-03-25 |
{{occurrence.window_end}} |
2026-04-08 |
{{patient.first_name}} |
Jane |
Task
| Variable | Example |
|---|---|
{{task.title}} |
Review lab results |
{{task.due_date}} |
2026-03-25 |
{{task.status}} |
open |
{{patient.first_name}} |
Jane |
The variable selector only ever lists the fields that exist for your trigger. That's the reliable way to find the exact name of a field — picking from the list avoids typos.
Tip: If a merge field doesn't match a value for that run (for example the patient has no email, or the field name is misspelt), it is replaced with a blank rather than left in the message. Use the variable selector rather than typing variables by hand so you always get the correct field names.