Variables and Merge Fields

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.

Syntax

Variables use double curly braces:

  • Basic: {{patient.first_name}}
  • Nested: {{clinician.last_name}}
  • In text: Hello {{patient.first_name}}, your appointment is at {{appointment.start_time}}

Using the Variable Selector

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.

Trigger Context Variables

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

What you'll see in the selector

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.