Automations & Messaging
Use variables in automation messages
The nine variables you can drop into an automation's email or text message, what each one fills in, and what a client sees when a variable has nothing to fill in with.
A variable is a placeholder you type into an automation's message, and Calso swaps it for the real detail as the message goes out — so one automation can greet every client by name and quote their own session time, without you writing a word of it twice.
Variables live on Automations, under the Insights group in the sidebar. Open any automation with Edit, or start a new one with Create Automation, and they apply to two of the three actions: the Subject and Body fields under Email Configuration, and the Message body field under SMS Configuration. A grey line beginning "Variables:" sits under each of those blocks listing all nine. A Send Webhook automation has no message to write, so variables do not apply to it.
The nine variables
Type a variable straight into your sentence, braces and all. These are the only nine Calso recognises.
| Variable | What it fills in | Example |
|---|---|---|
{guestName} | The name the client entered when they booked | Jane Doe |
{guestEmail} | The email address the client booked with | jane@example.com |
{hostName} | Your name on your Calso account — not your workspace name | Alex Rivera |
{eventTitle} | The title of the event type that was booked | 60-Minute Coaching Call |
{bookingDate} | The session's start date, written out in full | Monday, March 3, 2026 |
{bookingTime} | The session's start time | 2:00 PM |
{meetingUrl} | The video meeting link for the session | https://meet.google.com/abc-defg-hij |
{packageTitle} | The name of the package the client bought | 10-Session Bundle |
{creditsRemaining} | How many credits are left on that package | 4 |
{meetingUrl} only has something to give you when the session actually has a
video link — a Google Meet, Teams, or Zoom link, or a fixed link you set on the
event type. For a session at a venue or over the phone it comes through empty,
so it is worth writing a message that reads well either way, or keeping the link
out of automations that cover in-person work. Where a session happens is set per
event type, on Set where a session
happens.
Put a variable into a message
- Open the automation
Go to Automations in the sidebar and press Edit on the automation you want to change, or Create Automation to start a new one. The message fields only appear once Action is set to Send Email or Send SMS.
- Type the variable where the detail should appear
Write your sentence normally and drop the variable in where the real value belongs — for example, "Hi
{guestName}, your{eventTitle}on{bookingDate}at{bookingTime}is confirmed." Variables work in the Subject line as well as the Body, so you can put the client's name in the subject too. - Save and check it against the trigger
Press Update (or Create on a new automation), then look back at the Trigger you chose and confirm every variable you used has a value on it — the table below says which do. The variable list under the message box is the same nine on every trigger, so it is not telling you which ones will fill in.
How to type a variable
Calso matches the exact text between the braces, so a variable only fills in when it is spelled precisely as listed above.
{ guestName }— spaces inside the braces{GuestName}— capital G{guest_name}— an underscore instead of camel case{clientName}— a sensible word Calso does not recogniseguestName— no braces at all
{guestName}— exactly as written in the list under the message box
The difference matters more than a typo usually does, because the two kinds of failure look nothing alike to the client.
What a client sees when a variable is empty
There are two outcomes, and which one you get depends on whether Calso recognises the variable at all.
| What you typed | What the client receives |
|---|---|
| One of the nine, with a value behind it | The real value — "Hi Jane Doe," |
| One of the nine, with nothing behind it | Nothing at all, leaving a gap — "Hi ," |
| Anything else | The text you typed, braces included — "Hi ," |
Which variables have a value on each trigger
A variable can only fill in from what the trigger carries with it. The five booking triggers carry a client and a session; the three package triggers carry a package instead. Nothing carries both.
| Trigger | Fills in | Comes through empty |
|---|---|---|
| Booking Confirmed | {guestName} {guestEmail} {hostName} {eventTitle} {bookingDate} {bookingTime} {meetingUrl} | {packageTitle} {creditsRemaining} |
| Booking Cancelled | The same seven | {packageTitle} {creditsRemaining} |
| Booking Rescheduled | The same seven, with the new date and time | {packageTitle} {creditsRemaining} |
| Booking Completed | {guestName} {guestEmail} {bookingDate} {bookingTime} {meetingUrl} | {eventTitle} {hostName} {packageTitle} {creditsRemaining} |
| No Show | {guestName} {guestEmail} {bookingDate} {bookingTime} {meetingUrl} | {eventTitle} {hostName} {packageTitle} {creditsRemaining} |
| Package Purchased | {packageTitle} {creditsRemaining} {hostName} | Every booking variable |
| Package Expiring | {packageTitle} {creditsRemaining} {hostName} | Every booking variable |
| Package Exhausted | {packageTitle}, and {creditsRemaining} as 0 | {hostName} and every booking variable |
Two rows are worth reading twice. On Booking Completed and No Show, write
the session name and your own name into the message as plain text — {eventTitle}
and {hostName} have nothing to draw on there, so "Thanks for coming to your
{eventTitle}" arrives as "Thanks for coming to your". And {packageTitle} and
{creditsRemaining} are empty on every booking trigger, even when the client
paid for that session with a package, so an automation cannot tell someone how
many credits they have left after a booking.
The three package triggers have no client address or phone number attached to them at all, which means a Send Email or Send SMS automation on one of them has nobody to send to. Use Send Webhook for those, and see Automation triggers and actions for what each trigger passes on.
Dates, times, and how the message is formatted
{bookingDate} and {bookingTime} are written out in US English — "Monday,
March 3, 2026" and "2:00 PM" — and in Coordinated Universal Time, rather than
being converted to your workspace time zone or your client's. If your sessions
run several hours away from UTC, say the time in your own words in the message
and let Calso's built-in confirmation and reminder emails carry the exact hour,
since those do convert to the client's time zone.
The body of an automation email is your plain text, not a designed Calso template — there is no logo, no branded header, and no session details block beyond what your variables put there. Line breaks are kept, so a message written as short paragraphs arrives as short paragraphs. Write it as a complete note on its own, because it will not be sitting inside the styled confirmation email your client also receives.
Once your message reads the way you want it, send yourself one before you switch it on for clients — Test an automation before you rely on it covers what the Test button does and what it cannot show you.
Frequently asked questions
What happens if I misspell a variable in an automation email?
Calso only recognises nine exact spellings, and anything else is left alone. If you type {clientName} instead of {guestName}, your client receives an email with the literal text {clientName} sitting in the middle of the sentence. Variables are also case-sensitive, so {GuestName} and {guestname} both come through as visible text too.
Why is the client's name blank in my automation email?
A variable Calso recognises but cannot fill in is replaced with nothing at all, leaving a gap in the sentence. The usual cause is a trigger that carries no booking — the three package triggers have no client attached to them, so every booking variable comes through empty. Check which trigger the automation is on before rewriting the message.
Can I use variables in a webhook automation?
No. Variables are only read in the Subject and Body of a Send Email automation and the Message body of a Send SMS automation. A Send Webhook automation posts the booking and package details as structured data instead, so there is nothing to write a variable into.
Why does the time in my automation email not match my time zone?
The {bookingDate} and {bookingTime} variables are written out in Coordinated Universal Time (UTC) and in US format, rather than being converted to your workspace time zone or your client's. Calso's own booking confirmation and reminder emails do convert to the client's time zone, so lean on those for anything the client needs to set an alarm by.