In this document:
Introduction
SSA doesn’t have any functionality to support the admin in choosing to accept or deny requested time slots. All the appointments are automatically ‘confirmed’.
However, we have seen some customers work around this by tailoring the text phrasing and the notifications.
This gives the customer the impression that the time slot is a request. Then, if you can’t accept the booking, you can either cancel or reschedule, and the cancellation notification can explain what the customer can do next.
You’ll need to make changes to the following areas –
- Change booking calendar phrasing
- Re-write notifications
Payments – This workaround is not foolproof. If someone books an appointment using our payment feature, you must manually issue a refund if you cannot accept the appointment.
Admin-View – There’s no way to separate requested appointments vs confirmed and denied ones. You’ll need to manually keep track of this.
Change the Booking Calendar Phrasing
To start, your customers will need to understand that they’re submitting a request for a given time slot.
By changing the phrasing in the user-facing booking calendar, we can get rid of any confusion later down the line with the notifications.
We’re going to be following the instructions from this guide – Change Text Phrasing.
In this guide, I’m going to give you a PHP snippet that will do all the hard work for you. But, you’re welcome to make these changes on your own to further customize this experience.
Add the following PHP code to your functions.php file. Click here for help Accessing the functions.php File.
add_filter( 'gettext', 'customize_ssa_button_text', 100, 3 );
function customize_ssa_button_text( $translated_text, $text, $domain )
{
if ( $domain !== 'simply-schedule-appointments' )
{
return $translated_text;
}
$translated_text = str_ireplace('book', 'request', $translated_text);
$translated_text = str_ireplace('booking', 'requesting', $translated_text);
if ( $text === 'Schedule a new appointment') {
return 'Request a new appointment';
}
if ( $text === 'Reschedule') {
return 'Reschedule this request';
}
if ( $text === 'Appointment Rescheduled') {
return 'Request Rescheduled';
}
if ( $text === 'Cancel Appointment') {
return 'Cancel this request';
}
if ( $text === 'Cancel this appointment?') {
return 'Cancel this request?';
}
if ( $text === 'Cancel this appointment') {
return 'Cancel this request?';
}
if ( $text === 'Appointment Canceled') {
return 'Request Canceled';
}
if ( $text === 'This appointment has been canceled') {
return 'This request has been canceled';
}
if ( $text === 'Update this appointment') {
return 'Update this request';
}
return $translated_text;
}
Re-Write Notifications
Now, this is where it can get a bit tricky. Since we don’t have a true Accept and Deny system set up, we’ll need to use the notification triggers to help us keep up with this workaround.
This is how we’re going to use the triggers:
- ‘booked’ trigger to confirm the customer’s request
- ‘canceled’ trigger to outright deny the requested time and ask the customer to choose another time
- ‘time of appointment‘ trigger to confirm the actual appointment
So, the booking flow would look like the following diagram. Note that the appointment is accepted only if the admin does nothing. This will allow the ‘Time of appointment’ notification to be sent out and accept the booking.
When using the ‘Time of Appointment’ trigger, you must make sure that you set up the Uptime Robot service to make sure these notifications are sent out.
Notification Templates to Accept or Deny Appointments
‘Booked’ Notification for Customer
Request for {{Appointment.AppointmentType.title }} Submitted
Hello {{customer_name }},
We wanted to let you know that your request for an appointment was sent to {{booking_url}}
The time chosen was {{ Appointment.start_date | date("F d, Y g:ia (T)", Appointment.customer_timezone) }} for the {{Appointment.AppointmentType.title}}
{% if Appointment.AppointmentType.instructions %}
Instructions: {{ Appointment.AppointmentType.instructions|raw }}
{% endif %}
Your details:
{{ Appointment.customer_information_summary }}
If you need to cancel or change your requested time, you can do so by visiting this link:
{{ Appointment.public_edit_url }}
‘Canceled’ Notification for Customer
Request Canceled for {{Appointment.AppointmentType.title }}
Hello {{customer_name }},
We wanted to let you know that your request for an appointment on {{booking_url}} was canceled.
The time chosen was {{ Appointment.start_date | date("F d, Y g:ia (T)", Appointment.customer_timezone) }} for the {{Appointment.AppointmentType.title}}
Please find another time that suits you here - {{booking_url}}
‘Time of Appointment’ Notification for Customer
Request Accepted for {{Appointment.AppointmentType.title }}
Hello {{customer_name }},
We wanted to let you know that your request for an appointment on {{booking_url}} was accepted.
The time chosen was {{ Appointment.start_date | date("F d, Y g:ia (T)", Appointment.customer_timezone) }} for the {{Appointment.AppointmentType.title}}
{% if Appointment.AppointmentType.instructions %}
Instructions: {{ Appointment.AppointmentType.instructions|raw }}
{% endif %}
Your details:
{{ Appointment.customer_information_summary }}
If you need to cancel or change your requested time, you can do so by visiting this link:
{{ Appointment.public_edit_url }}
Helpful Tips – Please Read!
Remember, this is a loose workaround; we know it’s not perfect. To make things run a little smoother, please consider the following suggestions.
Choosing a ‘Time of Appointment’ trigger
Please give your customers enough time to see their request acceptance email. If you choose something like ‘1 hour before the Time of Appointment’ to send out the acceptance email, your customers are likely to miss it.
Try a day before, or perhaps even send 2 or 3 acceptance emails at different intervals to ensure they get that message.
Multiple Day’s Notice
Please give yourself enough time to see new requests and for the time-triggered emails to send out. To do this, use the Notice setting under the Scheduling Options tab.
You do not want last-minute bookings in this scenario – it’s only going to cause a mess and some definite confusion with your customer.
Our team suggests a week’s notice if you plan to use this workaround.
Related Guides
-
How to Fix “There Are No Available Appointments”
-
Reschedule/Cancel Link 404 Error
-
Admin App or Booking App Never Loads
-
Date and Time Slots Long Loading Times