Email Templates

Configure and customize booking notification emails with Handlebars template variables.

Overview

Transactional Calendar sends automated emails for booking confirmations, reminders, cancellations, and follow-ups. You can customize each email type per event type using Handlebars templates with a predefined set of variables.

Email Types

TypeEnum ValueRecipientTrigger
Confirmation (Attendee)CONFIRMATION_ATTENDEEAttendeeNew booking created
Confirmation (Host)CONFIRMATION_HOSTHostNew booking received
ReminderREMINDERAttendeeBefore meeting time
Cancellation (Attendee)CANCELLATION_ATTENDEEAttendeeBooking cancelled
Cancellation (Host)CANCELLATION_HOSTHostBooking cancelled
RescheduledRESCHEDULEDBothBooking time changed
Follow-upFOLLOWUPAttendeeAfter meeting completed

Template Variables Reference

Templates use Handlebars syntax with a strict set of allowed variables. Only the variables documented below will be passed to your templates.

Event Variables

Available in all notification types.

VariableDescriptionExample
{{event.name}}Event type title"30 Minute Meeting"
{{event.duration}}Duration in minutes30
{{event.location}}Location (URL or address)"Google Meet"

Booking Variables

Available in all notification types.

VariableDescriptionExample
{{booking.date}}Formatted date"Tuesday, January 14, 2025"
{{booking.startTime}}Start time"10:00 AM"
{{booking.endTime}}End time"10:30 AM"
{{booking.timezone}}Timezone display"America/New_York"
{{booking.meetingUrl}}Video meeting link (if applicable)"https://meet.google.com/abc-xyz"

Attendee Variables

Available in all notification types.

VariableDescriptionExample
{{attendee.name}}Attendee full name"John Doe"
{{attendee.email}}Attendee email"john@example.com"
{{attendee.phone}}Phone number (if provided)"+1 555-123-4567"
{{attendee.notes}}Notes from booking form"Looking forward to..."

Host Variables

Available in all notification types.

VariableDescriptionExample
{{host.name}}Host display name"Jane Smith"
{{host.email}}Host email"jane@company.com"
VariableDescriptionAvailable In
{{links.reschedule}}Reschedule booking URLConfirmation (Attendee), Reminder, Rescheduled
{{links.cancel}}Cancel booking URLConfirmation (Attendee), Reminder, Rescheduled
{{links.viewBooking}}View booking details URLConfirmation (Host), Cancellation (Host), Rescheduled
{{links.rebook}}Book again URLCancellation (Attendee), Followup
{{links.meetingUrl}}Join meeting URLAll

Contextual Variables

These variables are only available for specific notification types:

Reminder Only

VariableDescriptionExample
{{timeUntilMeeting}}Human-readable time until meeting"in 1 hour"

Cancellation Only

VariableDescriptionExample
{{cancelledBy}}Who cancelled"host", "attendee", or "system"
{{cancellationReason}}Cancellation reason text"Schedule conflict"

Rescheduled Only

VariableDescriptionExample
{{originalDate}}Original booking date"Monday, January 13, 2025"
{{originalTime}}Original booking time"2:00 PM"
{{newDate}}New booking date"Tuesday, January 14, 2025"
{{newTime}}New booking time"10:00 AM"
{{rescheduledBy}}Who rescheduled"host" or "attendee"

Follow-up Only

VariableDescriptionExample
{{message}}Custom follow-up message"Thanks for meeting!"
{{feedbackUrl}}Feedback form URL"https://forms.example.com/feedback"

Handlebars Helpers

The following Handlebars helpers are available:

Conditionals

{{#if booking.meetingUrl}}
Join here: {{booking.meetingUrl}}
{{/if}}
 
{{#unless attendee.phone}}
No phone number provided
{{/unless}}

String Helpers

{{uppercase attendee.name}}     // "JOHN DOE"
{{lowercase host.email}}        // "jane@company.com"
{{capitalize cancelledBy}}      // "Host"

Default Values

{{default attendee.phone "Not provided"}}

Comparison Helpers

{{#if (eq cancelledBy "host")}}
The host cancelled this meeting.
{{/if}}
 
{{#if (and booking.meetingUrl attendee.phone)}}
Both meeting URL and phone are available.
{{/if}}

Example Templates

Confirmation Email (Attendee)

Hi {{attendee.name}},
 
Your meeting has been confirmed!
 
**{{event.name}}**
Date: {{booking.date}}
Time: {{booking.startTime}} - {{booking.endTime}} ({{booking.timezone}})
Duration: {{event.duration}} minutes
Host: {{host.name}}
 
{{#if booking.meetingUrl}}
**Join Meeting**
{{booking.meetingUrl}}
{{/if}}
 
{{#if event.location}}
**Location**
{{event.location}}
{{/if}}
 
Need to make changes?
- Reschedule: {{links.reschedule}}
- Cancel: {{links.cancel}}
 
See you soon!

Reminder Email

Hi {{attendee.name}},
 
This is a reminder about your upcoming meeting {{timeUntilMeeting}}.
 
**{{event.name}}**
{{booking.date}} at {{booking.startTime}}
 
{{#if booking.meetingUrl}}
Join here: {{booking.meetingUrl}}
{{/if}}
 
Can't make it?
- Reschedule: {{links.reschedule}}
- Cancel: {{links.cancel}}

Cancellation Email (Attendee)

Hi {{attendee.name}},
 
{{#if (eq cancelledBy "host")}}
{{host.name}} has cancelled the following meeting.
{{else if (eq cancelledBy "attendee")}}
You have cancelled the following meeting.
{{else}}
The following meeting has been cancelled.
{{/if}}
 
**{{event.name}}**
Originally scheduled: {{booking.date}} at {{booking.startTime}}
 
{{#if cancellationReason}}
Reason: {{cancellationReason}}
{{/if}}
 
Would you like to book another time?
{{links.rebook}}

Rescheduled Email

Hi {{attendee.name}},
 
{{#if (eq rescheduledBy "host")}}
{{host.name}} has rescheduled the following meeting.
{{else}}
You have rescheduled the following meeting.
{{/if}}
 
**{{event.name}}**
 
~~Previous time:~~
{{originalDate}} at {{originalTime}}
 
**New time:**
{{newDate}} at {{newTime}} ({{booking.timezone}})
 
{{#if booking.meetingUrl}}
Meeting link: {{booking.meetingUrl}}
{{/if}}
 
Need to change again?
- Reschedule: {{links.reschedule}}
- Cancel: {{links.cancel}}

Follow-up Email

Hi {{attendee.name}},
 
Thanks for meeting with {{host.name}} for {{event.name}} on {{booking.date}}.
 
{{#if message}}
Message from {{host.name}}:
"{{message}}"
{{/if}}
 
{{#if feedbackUrl}}
How was your experience?
{{feedbackUrl}}
{{/if}}
 
Would you like to schedule another meeting?
{{links.rebook}}

Customizing Templates

Via Dashboard

  1. Go to Calendar > Event Types > Select event type
  2. Click Notification Settings
  3. Click Customize Template next to any notification type
  4. Edit the subject, HTML body, and optionally plain text body
  5. Use the Preview tab to see rendered output with sample data
  6. Click Save Template

To revert to the default template, click Reset to Default.

Template Editor Features

  • Variable Insertion: Click "Insert Variable" to add available variables
  • Live Preview: See real-time preview with sample booking data
  • Validation: Warnings shown if unknown variables are used
  • HTML and Text: Customize both HTML and plain text versions

ICS Calendar Attachments

All confirmation, cancellation, and reschedule emails automatically include an .ics calendar file attachment. This allows attendees to add the event to their calendar with one click.

ICS Properties

PropertyDescription
UIDUnique event identifier
SEQUENCEVersion number (incremented on changes)
DTSTART/DTENDStart and end times
SUMMARYEvent title
DESCRIPTIONEvent description
LOCATIONMeeting URL or address
ORGANIZERHost information
ATTENDEEAttendee information
METHODREQUEST (new/update), CANCEL (deleted)

Calendar Client Support

ICS files work with:

  • Google Calendar
  • Apple Calendar (iCal)
  • Microsoft Outlook
  • Yahoo Calendar
  • Most calendar applications

Sender Configuration

Configure the sender email address for each event type:

  1. Go to Calendar > Event Types > Select event type
  2. Scroll to Notification Email section
  3. Select a verified domain
  4. Enter sender email address and name

Requirements

  • Domain must be verified with DKIM and SPF
  • Sender email format: username@yourdomain.com
  • Sender name appears as "From" in email clients

Disable Notifications

Disable specific notifications per event type:

  1. Go to Calendar > Event Types > Select event type
  2. Click Notification Settings
  3. Toggle off any notification type you want to disable

Next Steps