Skip to content

Scriban Template Reference

[Draft — pending review]

This is the complete reference for merge fields available in Ordinate message templates. Templates use the Scriban syntax: {{ Object.Property }}.

Warning

Property names are case-sensitive. Use the exact casing shown below (e.g. Meeting.Name, not MEETING.NAME).


Context Objects

Different templates have access to different objects depending on context. Sender, Tenant, and Event are always available.

Object Available when...
Recipient A message is being sent to a person
Person The message is about a specific person (may differ from Recipient in notifications)
Meeting The message is in the context of a meeting
Host The recipient/person has an assigned host
Journey The message is in the context of a journey
Vehicle The message is in the context of a vehicle
User The message relates to a user account (e.g. password reset)
Sender Always available — the person or system sending the message
Event Always available — the current event
Tenant Always available — the organisation

Meeting

Property Description Example
Meeting.Name Meeting name "Q1 Board Review"
Meeting.StartTime Start date/time 2024-03-15 09:00
Meeting.EndTime End date/time 2024-03-15 17:00
Meeting.LocationName Location name "Boardroom 1"
Meeting.LocationZone Zone name "Floor 3"
Meeting.HostName Host's full name "Jane Smith"
Meeting.Host.Firstname Host first name "Jane"
Meeting.Host.Surname Host surname "Smith"
Meeting.Host.Email Host email "[email protected]"
Meeting.Host.Mobile Host mobile "+44 7700 900000"
Meeting.Host.Job Host job title "CEO"
Meeting.Host.Department Host department "Executive"
Meeting.Host.Company Host company "Acme Ltd"
Meeting.Controller.Firstname Controller first name "Bob"
Meeting.Controller.Surname Controller surname "Jones"
Meeting.Controller.Email Controller email "[email protected]"
Meeting.ViewUrl Link to view the meeting in Ordinate URL
Meeting.ExternalMeeting Whether this is an external meeting true/false
Meeting.ExpectedOccupants Expected number of attendees 12
Meeting.GuestCount Number of guests 8
Meeting.StaffCount Number of staff 4
Meeting.HasConflicts Whether the recipient has calendar conflicts true/false
Meeting.Geo Geographic region "London"
Meeting.Industry Industry category "Finance"
Meeting.Staff List of staff participants (use with loops)
Meeting.Guests List of guest participants (use with loops)

Example:

Meeting: {{ Meeting.Name }}
Date:    {{ Meeting.StartTime | fmt "dddd d MMMM yyyy" }}
Time:    {{ Meeting.StartTime | fmt "h:mm tt" }} – {{ Meeting.EndTime | fmt "h:mm tt" }}
Where:   {{ Meeting.LocationName }}
Host:    {{ Meeting.HostName }}

View details: {{ Meeting.ViewUrl }}

Recipient / Person

Recipient is the person receiving the message. Person is the person the message is about — often the same, but they can differ (e.g. a notification telling a host about a guest's travel change).

Both have the same properties. In your templates, prefix with Recipient. or Person. as appropriate — e.g. {{ Recipient.Firstname }} or {{ Person.Surname }}.

Core Identity

Property Description Example
.Firstname First name "Alice"
.Surname Surname "Brown"
.Name Full name "Alice Brown"
.Title Title "Dr"
.Email Email address "[email protected]"
.Mobile Mobile number "+44 7700 900123"
.Job Job title "Head of Finance"
.Department Department "Finance"
.Company Company name "Acme Ltd"
.Country Country "United Kingdom"
.NameOnBadge Badge name "Alice"
.PersonSubType Person sub-type "VIP"
.Attending Whether attending true/false

Accommodation

Property Description
.Accommodation.Hotel.Name Hotel name
.Accommodation.Hotel.FullAddress Full formatted address
.Accommodation.Hotel.Address1 Address line 1
.Accommodation.Hotel.Town Town/city
.Accommodation.Hotel.Postcode Postcode
.Accommodation.Hotel.Phone Hotel phone number
.Accommodation.Hotel.Website Hotel website URL
.Accommodation.Hotel.CheckInTime Standard check-in time
.Accommodation.Hotel.CheckOutTime Standard check-out time
.Accommodation.CheckIn Your check-in date
.Accommodation.CheckOut Your check-out date
.Accommodation.BillingNights Number of nights
.Accommodation.RoomType.Name Room type name
.Accommodation.RoomType.Currency Currency code
.Accommodation.RoomType.RoomRate Nightly rate
.Accommodation.RoomType.BreakfastIncluded Breakfast included (true/false)
.Accommodation.EarlyCheckIn Early check-in requested (true/false)
.Accommodation.LateCheckOut Late check-out requested (true/false)
.Accommodation.MultipleOccupancy Room shared (true/false)
.Accommodation.BookingRef Booking reference

Arrival Travel

Property Description
.Arrival.Carrier Airline name
.Arrival.FlightNumber Flight number
.Arrival.Departure Departure date/time
.Arrival.Arrival Arrival date/time
.Arrival.Origin Departure airport code
.Arrival.Destination Arrival airport code
.Arrival.OriginAirportName Departure airport name
.Arrival.DestinationAirportName Arrival airport name
.Arrival.TransferJourney Linked transfer journey (see Journey properties)

Departure Travel

Same properties as Arrival, using .Departure.* instead of .Arrival.*.

Private Vehicle

Property Description
.PrivateVehicle.Name Vehicle name
.PrivateVehicle.Model Vehicle model
.PrivateVehicle.RegNo Registration number
.PrivateVehicle.AvailableFrom Available from date/time
.PrivateVehicle.AvailableTo Available until date/time
.PrivateVehicle.Driver.Firstname Driver first name
.PrivateVehicle.Driver.Surname Driver surname
.PrivateVehicle.Driver.Mobile Driver mobile number
.PrivateVehicle.Notes Notes

Example:

Dear {{ Recipient.Firstname }},

HOTEL
{{ Recipient.Accommodation.Hotel.Name }}
{{ Recipient.Accommodation.Hotel.FullAddress }}
Check-in:  {{ Recipient.Accommodation.CheckIn | fmt "dddd d MMMM" }}
Check-out: {{ Recipient.Accommodation.CheckOut | fmt "dddd d MMMM" }}
Room:      {{ Recipient.Accommodation.RoomType.Name }}

ARRIVAL FLIGHT
{{ Recipient.Arrival.Carrier }} {{ Recipient.Arrival.FlightNumber }}
Departs: {{ Recipient.Arrival.Departure | fmt "ddd d MMM, HH:mm" }} from {{ Recipient.Arrival.OriginAirportName }}
Arrives: {{ Recipient.Arrival.Arrival | fmt "ddd d MMM, HH:mm" }} at {{ Recipient.Arrival.DestinationAirportName }}

Host

Available when the person has an assigned host. Has core identity fields only (no accommodation or travel).

Property Description
Host.Firstname First name
Host.Surname Surname
Host.Email Email address
Host.Mobile Mobile number
Host.Job Job title
Host.Department Department
Host.Company Company name

Info

Host at the top level is the person's assigned host. This is separate from Meeting.Host, which is the meeting's host — they may be different people.


User

Available for user account notifications (e.g. welcome emails, password resets).

Property Description Example
User.UserRealName Full name "Alice Brown"
User.FirstName First name "Alice"
User.Surname Surname "Brown"
User.Username Username "alice.brown"
User.Email Email address "[email protected]"
User.LoginUrl Login URL for this tenant URL
User.NewPassword Newly generated password (replaced at send time)
User.Role User role "Admin"

Example:

Dear {{ User.UserRealName }},

Your Ordinate account details:

  URL:      {{ User.LoginUrl }}
  Username: {{ User.Email }}
  Password: {{ User.NewPassword }}

Journey

Property Description
Journey.Description Journey description
Journey.JourneyType Journey type (e.g. "Transfer")
Journey.StartTime Departure time
Journey.EndTime Estimated arrival time
Journey.OriginName Origin location name
Journey.DestinationName Destination location name
Journey.BookingRef Booking reference
Journey.StatusName Status text
Journey.LeadPassenger Lead passenger name
Journey.VehicleModel Vehicle model
Journey.VehicleRegNo Vehicle registration
Journey.Driver Driver first name
Journey.DriverMobile Driver mobile number
Journey.Passengers List of passengers (use with loops)

Example:

TRANSFER DETAILS

From:   {{ Journey.OriginName }}
To:     {{ Journey.DestinationName }}
Time:   {{ Journey.StartTime | fmt "dddd d MMMM, HH:mm" }}
Ref:    {{ Journey.BookingRef }}

Vehicle:      {{ Journey.VehicleModel }}
Registration: {{ Journey.VehicleRegNo }}
Driver:       {{ Journey.Driver }}
Mobile:       {{ Journey.DriverMobile }}

Vehicle

Property Description
Vehicle.Name Vehicle name
Vehicle.Model Model
Vehicle.RegNo Registration number
Vehicle.Colour Colour
Vehicle.Capacity Passenger capacity
Vehicle.Notes Notes
Vehicle.DriverName Driver first name
Vehicle.DriverMobile Driver mobile
Vehicle.AssigneeName Reserved-for person's name
Vehicle.AvailableFrom Available from date/time
Vehicle.AvailableTo Available until date/time

Sender, Event, Tenant

These are always available in every template.

Property Description
Sender.Name Sender full name
Sender.Firstname Sender first name
Sender.Surname Sender surname
Sender.Email Sender email
Event.Name Event name
Event.No Event number
Tenant.DisplayName Organisation display name
Tenant.Name Tenant short name

Date and Time Formatting

Use the fmt filter with a .NET format string:

{{ some_date | fmt "format_string" }}

Common Format Strings

Format string Output example
"d MMMM yyyy" 15 March 2024
"dddd d MMMM yyyy" Friday 15 March 2024
"dd/MM/yyyy" 15/03/2024
"HH:mm" 14:30
"h:mm tt" 2:30 PM
"ddd d MMM" Fri 15 Mar
"ddd d MMM, HH:mm" Fri 15 Mar, 14:30
"dddd d MMMM, h:mm tt" Friday 15 March, 2:30 PM

Examples:

Date:  {{ Meeting.StartTime | fmt "dddd d MMMM yyyy" }}
Time:  {{ Meeting.StartTime | fmt "h:mm tt" }}

Check-in:  {{ Recipient.Accommodation.CheckIn | fmt "dddd d MMMM yyyy" }}
Departure: {{ Journey.StartTime | fmt "ddd d MMM, HH:mm" }}

Boolean Formatting

yesno — converts to "Yes" or "No"

Breakfast included: {{ Recipient.Accommodation.RoomType.BreakfastIncluded | yesno }}

fmt_bool — custom text

{{ Recipient.Attending | fmt_bool "Attending" "Not attending" }}
{{ Meeting.ExternalMeeting | fmt_bool "External meeting" "Internal meeting" }}

Conditionals

Use {{ if ... }} / {{ end }} to show content only when a condition is met.

Show a section only if a value exists

{{ if Recipient.Accommodation }}
HOTEL: {{ Recipient.Accommodation.Hotel.Name }}
{{ end }}

If / else

{{ if Recipient.Accommodation.RoomType.BreakfastIncluded }}
Breakfast is included in your room rate.
{{ else }}
Breakfast is not included — it can be purchased at the hotel.
{{ end }}

Comparing values

{{ if Journey.StatusName == "Confirmed" }}
Your transfer is confirmed.
{{ else }}
Your transfer is pending confirmation.
{{ end }}

Multiple conditions

Use && (and) and || (or):

{{ if Recipient.Arrival.FlightNumber != "" && Recipient.Arrival.TransferJourney }}
A transfer has been arranged to meet your flight.
{{ end }}

Loops

Use {{ for item in collection }} / {{ end }} to iterate over lists.

Meeting Participants

The Meeting.Staff and Meeting.Guests collections contain participant objects:

Property Description
p.Person.Firstname First name
p.Person.Surname Surname
p.Person.Email Email
p.Person.Company Company
p.Person.Job Job title
p.ConfirmStatus Confirmation status
p.Greeter Whether this person is a greeter (true/false)

Example:

STAFF ATTENDING
{{ for p in Meeting.Staff }}
  {{ p.Person.Firstname }} {{ p.Person.Surname }}
  {{ p.Person.Job }}, {{ p.Person.Department }}
{{ end }}

GUESTS ATTENDING
{{ for p in Meeting.Guests }}
  {{ p.Person.Firstname }} {{ p.Person.Surname }} ({{ p.Person.Company }})
{{ end }}

Journey Passengers

Passengers:
{{ for passenger in Journey.Passengers }}
  • {{ passenger.Name }}
{{ end }}

Compact format

Use - after }} to strip trailing whitespace:

{{ for p in Meeting.Guests -}}
  • {{ p.Person.Firstname }} {{ p.Person.Surname }} ({{ p.Person.Company }})
{{ end }}