
When someone books an appointment through your WordPress site, the confirmation email is the last thing they see before they close the tab. It either reassures them that everything went through correctly — or it leaves them wondering.
A well-configured confirmation email also does practical work: it adds the appointment to the client’s calendar via an ICS file, gives them the details they need to show up, and provides a cancellation link so they can cancel themselves rather than emailing you. This guide covers how to set all of this up in WordPress using CalNative Booking.
What this guide covers
- The two emails sent on every booking: guest confirmation and host notification
- What to include in each email and why
- Available tokens — placeholders that fill in booking details automatically
- The ICS calendar attachment and how it works
- Customising subject lines and email body text
- Testing your setup and fixing common delivery problems
The two emails sent on every booking
CalNative Booking sends two separate emails every time a booking is confirmed. They have different audiences and different purposes.
The guest confirmation email goes to the person who made the booking. Its job is to confirm that the booking went through, show the appointment details, provide an ICS file they can add to their calendar, and give them a link to cancel if they need to.
The host notification email goes to you — the business owner or the address you set in the plugin settings. Its job is to alert you that a new booking has arrived and show you the client’s details: name, email, phone number, and any notes they left.
Both emails are configured separately in the plugin. You can customise the subject line, the body text, and the sender name for each one independently.
Where to find the email settings
In your WordPress admin, go to Settings → CalNative Booking and click the Emails tab. You will see two sections: one for the guest confirmation email and one for the host notification.
Each section has fields for:
- Subject line — the subject the recipient sees in their inbox
- Email body — the main content of the email, which supports plain text and tokens
- From name — the name that appears as the sender
- Reply-to address — where replies go if the recipient responds to the email
Using tokens to personalise emails automatically
Tokens are placeholders you include in your subject line or email body that are replaced with actual booking details when the email is sent. You write the template once, and every email is personalised automatically.
Available tokens:
| Token | Replaced with |
|---|---|
{name} | Client’s full name |
{first_name} | Client’s first name only |
{email} | Client’s email address |
{phone} | Client’s phone number |
{date} | Appointment date (formatted according to your WordPress date settings) |
{time} | Appointment start time |
{end_time} | Appointment end time |
{duration} | Appointment duration in minutes |
{notes} | Any notes the client entered at booking |
{cancel_link} | A secure URL the client can use to cancel their booking |
{site_name} | Your WordPress site name |
Tokens work in both the subject line and the email body. A subject like Booking confirmed — {date} at {time} becomes Booking confirmed — Thursday 5 June at 10:00 AM in the client’s inbox.
What to include in the guest confirmation email
A good guest confirmation email covers five things:
1. Confirmation that the booking went through. Open with a clear statement — “Your booking is confirmed” — so the client does not have to read the whole email to know whether it worked.
2. The appointment details. Date, time, and duration. If you have a location, include it here. If the appointment is remote, include the video call link.
3. What to expect or bring. A short sentence about what happens next reduces questions. “I will call you on the number you provided” or “Please arrive five minutes before your appointment” is enough.
4. A cancellation link. Include {cancel_link} in your email body. This gives the client a way to cancel their booking without contacting you directly. The link is unique to their booking and expires after use.
5. Your contact details. Name, website, and a way to reach you if something is not covered by the cancellation link.
Example guest confirmation email body:
Hi {first_name},
Your booking is confirmed.
Date: {date}
Time: {time} – {end_time}
If you need to cancel or reschedule, use this link:
{cancel_link}
Looking forward to speaking with you.
{site_name}What to include in the host notification email
The host notification email is for you, so it does not need to be polished. It needs to be informative. Include everything you need to know about the new booking at a glance:
New booking received.
Name: {name}
Email: {email}
Phone: {phone}
Date: {date}
Time: {time} – {end_time}
Notes: {notes}Keep it short. The goal is to see the key details without opening another system.
The ICS calendar attachment
The guest confirmation email automatically includes an ICS file as an attachment. You do not need to configure this — it is generated from the booking details and attached every time.
When the client opens the email, they can click the ICS file to add the appointment to their own calendar — Google Calendar, Apple Calendar, Outlook, or any other calendar application that supports the standard ICS format. The event is created in their calendar with the correct date and time.
This is the detail that turns a confirmation email into something genuinely useful. A client who adds the ICS file to their calendar is significantly less likely to miss the appointment than one who just has a confirmation email to search for later.
Customising the subject line
The subject line determines whether the email gets opened. Use tokens to make it specific and easy to find later:
- Guest:
Your appointment on {date} at {time} is confirmed - Guest (shorter):
Booking confirmed — {date} - Host:
New booking: {name} on {date} at {time}
Avoid vague subject lines like “Booking confirmation” with no details. If the client searches their inbox three weeks later for the appointment time, a subject line that includes the date and time is immediately findable.
Testing your email setup
Before making your booking page public, make a test booking with your own email address. Check:
- Both emails arrived — the guest confirmation and the host notification
- All tokens were replaced correctly — no raw
{name}or{date}placeholders in the email - The ICS file is attached and opens correctly in your calendar application
- The cancellation link works — clicking it cancels the test booking and removes the Google Calendar event
- The sender name and reply-to address look correct
Fixing common email delivery problems
Emails are going to spam. WordPress sends email via PHP’s mail() function by default. Most hosting servers are not configured to send email reliably from PHP, and many email providers treat these messages as suspicious. Install an SMTP plugin — WP Mail SMTP is the most widely used — and configure it to send through your email provider (Gmail, Mailgun, SendGrid, or similar). This fixes delivery problems in almost all cases.
Emails are not arriving at all. The most common cause is the same as above — PHP mail is blocked by the hosting server. Switch to SMTP. You can confirm whether emails are being sent at all by installing a plugin like WP Mail SMTP and using its email test tool.
The ICS file is not attaching. If the ICS attachment is missing, check that your hosting server has write access to the WordPress uploads directory. The plugin generates the ICS file temporarily during the booking process and attaches it to the email. If file permissions are restricted, the file cannot be created.
Tokens are showing as plain text. This means the token was misspelled or used with incorrect syntax. Check that each token is surrounded by curly braces and spelled exactly as listed — {first_name} not {firstname} or { first_name }.
Setting the from address correctly
By default, WordPress sends email from wordpress@yourdomain.com. Many email providers reject or spam-filter this address because it has no SPF or DKIM records associated with it.
Set the from address to a real email address on your domain — one that you have configured with proper SPF and DKIM records. If you use Google Workspace, yourname@yourdomain.com with SMTP sending through Gmail will deliver reliably. If you use a transactional email service like Mailgun or SendGrid, use the verified sender domain they provide.
Getting the from address right is the single biggest factor in whether your confirmation emails land in the inbox or in spam.