Overview
Placeholders insert live information into a notification’s subject line and body. Write them as {name}. They are case-sensitive, they work in the subject as well as the body, and a placeholder with no value renders as nothing rather than an error.
Two rules of thumb:
- Braces mean “put a value here”:
{firstname},{time}. - Square brackets mean “repeat this”:
[dates] … [/dates]prints its contents once per booked date.
Placeholders available in every email
| Placeholder | Renders |
|---|---|
{firstname} {lastname} | The customer’s name |
{company} | Your studio name |
{url} | Your website address |
{account-link} | The customer’s account page at your studio |
{toc} | Your terms and conditions text |
{logo} | Your studio logo as an image. Renders nothing if you have not uploaded one, so you never get a broken image |
Date and time
Class and appointment emails share one set of date and time placeholders. Values are in your studio’s time zone. Build the sentence you want from the parts.
| Placeholder | Renders | Example |
|---|---|---|
{day} | Weekday | Tuesday |
{day-short} | Weekday, short | Tue |
{date} | Day of the month | 8 |
{month} | Month | September |
{month-short} | Month, short | Sep |
{year} | Year | 2026 |
{year-short} | Year, short | 26 |
{time} | Start time, in your chosen time format | 9:30 am or 09:30 |
{duration} | Length in minutes | 60 |
Hey {firstname}, thanks for booking {eventname}. You are booked on for {date} {month} {year-short} at {time}. See you on {day}!
Hey Sarah, thanks for booking Vinyasa Flow. You are booked on for 8 September 26 at 9:30 am. See you on Tuesday!
{time}follows Settings → Notifications → Time format. The default is 12-hour (“9:30 pm”). Switch to 24-hour and every{time}in every email becomes “21:30”. See Studio settings.
Class bookings and cancellations
Sent when a customer books a class, and when a booking is cancelled. A booking can cover several dates, so there are single-value placeholders, which describe the first booked date, and a list.
About the class
| Placeholder | Renders |
|---|---|
{eventname} | Class name |
{ticket} | Pricing option booked, e.g. Drop-in |
{places} | Places held on that date |
{facilitator} | Facilitator name(s) for the date. The date’s own facilitators if you have set them, otherwise the class’s |
{location} | Location name. “online” for a virtual class with no location. Empty if the class has none, so set one on the class if you use this |
| Date and time family | The first booked date, see above |
Every date in the booking
{dates} prints one line per booked date, using the line you set in Settings → Notifications (default {day} {date} {month} {year} at {time}):
You are booked on {eventname} for:
{dates}
You are booked on Vinyasa Flow for:
Tuesday 8 September 2026 at 9:30 am
Thursday 10 September 2026 at 9:30 am
For your own wording, repeat text per date with [dates] … [/dates]. Any placeholder inside refers to that date:
You are booked for:
[dates]- {eventname}, {day-short} {date} {month-short} at {time} ({places} place)[/dates]
You are booked for:
- Vinyasa Flow, Tue 8 Sep at 9:30 am (1 place)
- Vinyasa Flow, Thu 10 Sep at 9:30 am (1 place)
The closing [/dates] is required. Without it the text is left exactly as written, so the mistake shows in the preview. In a subject line the repeated dates are separated by commas.
A cancellation email describes the cancelled date, so its list has one line.
Virtual classes
| Placeholder | Renders |
|---|---|
{meetings} | Joining details for every virtual date in the booking: date, join link, meeting ID, passcode |
Waiting list: a place has come free
Sent to everyone on the waiting list for a date when a place frees up.
| Placeholder | Renders |
|---|---|
{eventname} | Class name |
{facilitator} | Facilitator name(s) for the date |
{location} | Location name, “online”, or empty, as above |
| Date and time family | The date that has come free |
{booknow} | Link to book the place |
Class reminders
Sent before a class, to each customer booked on that date. One date, so the date and time family describes it.
| Placeholder | Renders |
|---|---|
{eventname} | Class name |
{ticket} | Pricing option the customer holds |
{places} | Places the customer holds on the date |
{facilitator} | Facilitator name(s) for the date |
{location} | Location name, “online”, or empty |
| Date and time family | The class date |
{meetinginvite} | Zoom join link. Virtual reminders only |
{meetingid} | Meeting ID. Virtual reminders only |
{meetingpasscode} | Meeting passcode. Virtual reminders only |
Subject: Reminder: {eventname} {day-short} {date} {month-short} at {time}
Subject: Reminder: Vinyasa Flow Thu 10 Sep at 3:20 pm
Appointments: booking confirmation, reminder, cancellation
| Placeholder | Renders |
|---|---|
{service} | Service name, e.g. Sports Massage |
{option} | Option booked, e.g. 60 minutes |
{facilitator} | Practitioner name |
{location} | The service’s location name. Empty if the service has none, so set one on the service if you use this |
| Date and time family | The appointment slot |
Subject: {service} on {day} {date} {month}
Hi {firstname}, your {service} ({option}) with {facilitator} is confirmed for
{day} {date} {month} {year} at {time} ({duration} minutes) at {location}.
Subject: Sports Massage on Tuesday 8 September
Hi Sarah, your Sports Massage (60 minutes) with Jo is confirmed for
Tuesday 8 September 2026 at 9:30 am (60 minutes) at Studio 2.
Pass purchase
| Placeholder | Renders |
|---|---|
{purchase} | Pass summary: name, credits, start date and expiry date |
Video purchase
| Placeholder | Renders |
|---|---|
{purchase} | Video purchase summary |
Gift voucher delivery
Sent to the person receiving the voucher. {firstname} here is the recipient, as entered when the voucher was assigned.
| Placeholder | Renders |
|---|---|
{sendername} | Who the voucher is from |
{code} | The voucher code to redeem |
{amount} | Voucher value |
{expires} | Expiry date |
{message} | The personal message, if one was written |
Subscriptions
Covers mandate due, suspended, cancellation, renewal, mandate set-up, reactivated and cancelled-by-studio emails.
| Placeholder | Renders |
|---|---|
{subscriptionname} | Subscription product name |
{subscriptionterm} | Term, for example 1 month |
{subscriptioncharge} | Charge amount, formatted, for example GBP10.00 |
{subscriptionid} | Internal subscription ID |
{subscriptioncycle} | Renewal cycle in days |
Invoices
Covers invoice created, overdue, error and paid emails.
| Placeholder | Renders |
|---|---|
{month} | Current month name, the billing month. Not the class month |
{invoice-number} | Formatted as INV-000123 |
{invoice_id} | Numeric invoice ID |
{invoice_number} | 6-digit zero-padded invoice number |
{invoice-created-date} | Date the invoice was raised |
{invoice-due-date} | Due date |
{invoice-gross} | Total formatted, for example GBP60.00 |
{invoice-purchase-list} | Itemised line list |
{invoice-payment-type} | Card (Stripe) or Manual |
{invoice-error-reason} | Stripe decline reason. Invoice error only |
{invoice-decline-code} | Stripe decline code. Invoice error only |
{account-invoice-error-link} | Link to fix payment for the failed invoice |
Registration, password reset and account deletion
| Placeholder | Renders |
|---|---|
{firstname} {lastname} | The customer |
{username} | The customer’s username, their email address. Registration only |
{password} | Always renders as *********. Customers set their own password |
{deletion_date} | The date the account deletion runs. Account deletion only |
Studio settings
Settings → Notifications has two controls that change how the placeholders above render:
- Time format. 12-hour (“9:30 pm”, the default) or 24-hour (“21:30”). Drives
{time}in every class and appointment email. Legacy forms such as{purchase}and{datetime}keep their old format. - Date list format. The line
{dates}prints per booked date. Default{day} {date} {month} {year} at {time}. Tag chips insert the date parts, and an example updates as you type. Changing it changes every template that uses{dates}.
Legacy placeholders
These older forms still render exactly as they always have. They are no longer offered in the template editor’s tag picker, and the editor shows a small “Uses legacy placeholders” note when a template contains one. New templates should use the placeholders above.
| Legacy form | Where | Renders |
|---|---|---|
{purchase} | Class bookings and cancellations | Auto-formatted purchase list, one numbered line per booked date: “1. Vinyasa Flow. Drop-in on 08 Sep 2026 09:30 am. Quantity 1” |
[event-purchase: …] | Class bookings and cancellations | Custom per-line template using %name%, %pricing-option%, %day%, %date%, %month%, %year%, %hour%, %minutes%, %am-pm%, %places%. Also reshapes {purchase} to the same format |
{event}…{!event} | Class bookings and cancellations | Repeats once per virtual date. Inside the block: {date}, {meetinginvite}, {meetingid}, {meetingpasscode} |
{meeting} | Class bookings and cancellations | Same as {meetings} |
{event} | Class reminders, and on its own in a booking or cancellation | Class name with date and time: “Vinyasa Flow: 8 Sep 2026 at 9:30 am” |
{purchase} | Class reminders | Same as {event} |
{purchase-lnk} | Waiting list | Same as {booknow} |
{datetime} | Appointments | Combined date and time, “08 Sep 2026, 09:30 am”, always 12-hour |
{companyname} | Everywhere | Same as {company} |
INV-XXX | Invoices | Replaced with the invoice number |
Warning:
{date}means two different things. Everywhere in this guide{date}is the day of the month, “8”. The one exception is inside a legacy{event}…{!event}block, where it keeps its old meaning, the full date and time: “08 Sep 2026 09:30 am”. Outside that block it is always the day number.
{month}on invoice emails is the billing month, the current month name, not a class date.
Notes
- Unknown placeholders and missing values render as nothing.
- Placeholders are case-sensitive:
{Firstname}will not substitute. - Every single-value placeholder works in the subject line.
{dates}in a subject renders comma separated. [dates]…[/dates],[event-purchase: …]and{event}…{!event}are repeating blocks, not single placeholders.
