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
| Type | Enum Value | Recipient | Trigger |
|---|---|---|---|
| Confirmation (Attendee) | CONFIRMATION_ATTENDEE | Attendee | New booking created |
| Confirmation (Host) | CONFIRMATION_HOST | Host | New booking received |
| Reminder | REMINDER | Attendee | Before meeting time |
| Cancellation (Attendee) | CANCELLATION_ATTENDEE | Attendee | Booking cancelled |
| Cancellation (Host) | CANCELLATION_HOST | Host | Booking cancelled |
| Rescheduled | RESCHEDULED | Both | Booking time changed |
| Follow-up | FOLLOWUP | Attendee | After 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.
| Variable | Description | Example |
|---|---|---|
{{event.name}} | Event type title | "30 Minute Meeting" |
{{event.duration}} | Duration in minutes | 30 |
{{event.location}} | Location (URL or address) | "Google Meet" |
Booking Variables
Available in all notification types.
| Variable | Description | Example |
|---|---|---|
{{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.
| Variable | Description | Example |
|---|---|---|
{{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.
| Variable | Description | Example |
|---|---|---|
{{host.name}} | Host display name | "Jane Smith" |
{{host.email}} | Host email | "jane@company.com" |
Action Links
| Variable | Description | Available In |
|---|---|---|
{{links.reschedule}} | Reschedule booking URL | Confirmation (Attendee), Reminder, Rescheduled |
{{links.cancel}} | Cancel booking URL | Confirmation (Attendee), Reminder, Rescheduled |
{{links.viewBooking}} | View booking details URL | Confirmation (Host), Cancellation (Host), Rescheduled |
{{links.rebook}} | Book again URL | Cancellation (Attendee), Followup |
{{links.meetingUrl}} | Join meeting URL | All |
Contextual Variables
These variables are only available for specific notification types:
Reminder Only
| Variable | Description | Example |
|---|---|---|
{{timeUntilMeeting}} | Human-readable time until meeting | "in 1 hour" |
Cancellation Only
| Variable | Description | Example |
|---|---|---|
{{cancelledBy}} | Who cancelled | "host", "attendee", or "system" |
{{cancellationReason}} | Cancellation reason text | "Schedule conflict" |
Rescheduled Only
| Variable | Description | Example |
|---|---|---|
{{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
| Variable | Description | Example |
|---|---|---|
{{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
- Go to Calendar > Event Types > Select event type
- Click Notification Settings
- Click Customize Template next to any notification type
- Edit the subject, HTML body, and optionally plain text body
- Use the Preview tab to see rendered output with sample data
- 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
| Property | Description |
|---|---|
UID | Unique event identifier |
SEQUENCE | Version number (incremented on changes) |
DTSTART/DTEND | Start and end times |
SUMMARY | Event title |
DESCRIPTION | Event description |
LOCATION | Meeting URL or address |
ORGANIZER | Host information |
ATTENDEE | Attendee information |
METHOD | REQUEST (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:
- Go to Calendar > Event Types > Select event type
- Scroll to Notification Email section
- Select a verified domain
- 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:
- Go to Calendar > Event Types > Select event type
- Click Notification Settings
- Toggle off any notification type you want to disable
Next Steps
- Reminders - Configure reminder schedules
- Webhooks - Get notified of booking events
- API Reference - Complete API documentation
On This Page
- Overview
- Email Types
- Template Variables Reference
- Event Variables
- Booking Variables
- Attendee Variables
- Host Variables
- Action Links
- Contextual Variables
- Reminder Only
- Cancellation Only
- Rescheduled Only
- Follow-up Only
- Handlebars Helpers
- Conditionals
- String Helpers
- Default Values
- Comparison Helpers
- Example Templates
- Confirmation Email (Attendee)
- Reminder Email
- Cancellation Email (Attendee)
- Rescheduled Email
- Follow-up Email
- Customizing Templates
- Via Dashboard
- Template Editor Features
- ICS Calendar Attachments
- ICS Properties
- Calendar Client Support
- Sender Configuration
- Requirements
- Disable Notifications
- Next Steps