By default, Booxi handles all customer notifications for you—including appointment confirmations, reminders, and cancellations—ensuring timely and seamless communication with your clients.
However, if your business requires more advanced or customized messaging, such as integration with CRM systems, email marketing platforms, or alternative messaging channels, webhooks provide a powerful and flexible solution. With webhooks, you can transmit real-time booking event data from Booxi to the external tools of your choice.
This enables you to:
Fully customize Booxi’s default booking notifications.
Send personalized thank-you emails after a visit.
Deliver pre-visit instructions, promotions, or reminders.
Follow up with post-appointment review or feedback requests.
Trigger push notifications when an appointment is about to start.
Use alternative communication platforms like WhatsApp, LINE, KakaoTalk, etc.
You can choose to either:
Supplement Booxi's notifications with additional messages sent from your external tools, or
Completely replace Booxi's built-in notifications by disabling them and handling all communications through your chosen platform.
Ready-to-use connectors have been developed for SendGrid and Adobe Campaign.
Examples of external tools you can integrate with:
Salesforce Marketing Cloud
Klaviyo
WhatsApp
Mailchimp
HubSpot
Etc.
By listening to webhook events, you gain full control over what messages are sent, when they are triggered, and under what conditions. Using your external tool’s API, you can craft messaging that aligns perfectly with your brand and operational workflows—all powered by the booking data provided by Booxi webhooks.
To set up webhooks, follow the steps outlined here.
How to setup
1. Set Up a Webhook Endpoint
Create a secure HTTP endpoint (URL) on your server or within your marketing platform to receive webhook events from Booxi. This endpoint should be capable of handling POST or PUT requests and processing JSON payloads.
Key considerations:
Use HTTPS to secure data transmission.
Implement authentication mechanisms, such as tokens or header secrets, to verify incoming requests.
Ensure the endpoint responds with HTTP status code 200 to acknowledge successful receipt.
2. Register Your Webhook with Booxi
Contact a Booxi representative to register your webhook endpoint. Provide the following details:
Endpoint URL: The URL where Booxi will send event data.
HTTP Method: Specify whether to use POST or PUT.
Event Types: List the specific events you want to subscribe to, such as:
appointment.created
appointment.updated
appointment.canceled
appointment.completed
Authentication Details: If your endpoint requires OAuth2 authentication, provide the necessary credentials and token endpoint information.
Booxi supports multiple handler endpoints per event type and can send events to different URLs as needed.
3. Configure Your Marketing Platform to Process Events
Set up your marketing or notification platform to handle incoming webhook data from Booxi. Depending on your platform, this may involve:
Parsing JSON Payloads: Extract relevant information such as customer name, appointment details, and contact information.
Triggering Workflows: Initiate specific actions based on the event type, like sending confirmation emails or SMS reminders.
Updating Customer Records: Modify customer profiles or engagement scores based on their interactions.
For example, upon receiving an appointment.created event, your platform could send a personalized confirmation email and schedule a reminder SMS a day before the appointment.
4. Test the Integration
Before going live, thoroughly test the integration to ensure:
Webhook events are received and processed correctly.
Notifications are sent as intended.
Error handling and retries are functioning properly.
Booxi will retry failed webhook deliveries up to 30 times, so ensure your endpoint can handle retries gracefully.
Diagram
Implementation details
This section lists all webhook events and the information to look for to send the associated notification.
Notification Content
Here is a summary of the information included in each payload property.
client - provides the name, email and mobile of the customer to send the message to.
booking - provides the current booking details
The date and time of the appointment
The service booked
The name of the staff member who will provide the service
The address where the service will be provided
previousBooking - provides the previous booking details in case of changes
additionalRequest - may contain data pushed with the appointment, or additional information provided by the customer
trackingPage - provides unique urls to view or modify appointments, which can be used to allow the customer to make changes if the booking rules of the associated service allows it.
Actions that can be performed.
Make sure to pass the client preferred language parameter to the url to open the tracking page in the right language. Add &lang=eng for English.
trackingQRCodeUrl - provides a unique url to a QR image that represents this booking/client, as well as the QR code for booking/attendee.
staffVideoConferenceUrl - if the location is set to video conference, this will be the link to join as a staff
Links to join as the client and the attendees will be found here: client.videoConferenceUrl, attendees[].videoConferenceUrl
translations - Some content (objects) may be provided in various languages for which the translations can be found in the associated objects: Staff, Service, Resources, Merchant.
Each object has a translations property that contains the additional language and its translated content.
The data is provided by default in the Merchant default language (defaultLanguage), which means that if the client preferred language (language) does not match the merchant default language, you must use the translations.
Do not send Messages
In some cases, you should not send any messages. This is applicable when a staff selects the option not to send a booking update notification to the client, or when a client books online and chooses not to send notifications to the attendees.
Check the value of content.booking.clientCommunication:
DoNotSend: Should not send any message to the client or attendee of this booking
ClientOnly: Should only send messages to the client of the booking.
ClientAndAttendees: Should send messages to both the client and the attendees of this booking.
Booking Tracking Page URL
Each booking includes a URL to allow the client to view the booking online and optionally edit it. You can add parameters to this URL to automatically trigger an action based on a CTA in your email.
Use the content.booking.trackingPage.viewURL value to open the tracking page
Make sure to add “lang”=XXX to this URL to open “Book Now” in the client's preferred language.
Use the “action” parameter to create CTAs:
Add action=modify to start a modification
Add action=cancel to ask a cancel confirmation
Add action=confirm to ask a modification confirmation
Check the content.booking.trackingPage.canConfirm, canModify, canCancel value to know which CTA will be available for that booking.
*Note: A tracking page URL will not be created if the client has no email address.
Staff Messages
Events for staff messages are the same as the clients'. For instance, when a confirmation message is sent to the client, a message can also be sent to the staff from the same appointment.created event with booking.status=Approved. Booxi only creates or updates an appointment once and sends one event. However, you can perform multiple actions or send multiple messages for the single event received.
Booxi currently sends the following messages to staff:
New appointment booked for the staff
By the client
By the staff himself
By another staff
New appointment approved
New appointment booked with flexible dates
New appointment booked needs to be manually dispatched (no staff selected)
Appointment has changed
By the client
By the staff (i.e. the one who changed the appointment)
By another staff
Appointment has been canceled
By the client
By the staff (i.e. the one who cancelled the appointment)
By another staff
Appointment Confirmation
Send a confirmation email when a new appointment is created or approved. In manual approval mode, an appointment can be created pending a manual approval by the staff, and the confirmation will only be sent once the appointment is approved.
Webhook events to look for:
event type=appointment.created and booking.status=Approved
Event type=appointment.status_updated and booking.status=Approved with client.presence=Expecting
Look at previous.status != booking.status to detect the status change
event type=appointment.updated, and booking.status=Approved and previous.status != booking.status to detect the status change
It is possible that an appointment update (not just the status), also updated the status at the same time, so you must also verify the status change from an appointment.updated event.
Actions:
trackingPage.viewURL
trackingPage.canModify (boolean indicating that modify is allowed)
trackingPage.canCancel (boolean indicating that cancel is allowed)
Appointment request notification
Send a notification informing that the customer’s appointment request was received, and will later be approved by the staff.
Webhook events to look for:
event type=appointment.created and booking.status=PendingStaffApproval
Actions:
trackingPage.viewURL
trackingPage.canCancel (boolean indicating that cancel is allowed)
Appointment changed and awaiting client to confirm changes
Send a notification informing that the appointment was modified by the staff, requiring the customer to confirm the changes are OK.
Webhook events to look for:
event type=appointment.created and booking.status=PendingClientApproval
Actions:
trackingPage.viewURL
trackingPage.canConfirm (boolean indicating that confirm is allowed)
trackingPage.canModify (boolean indicating that modify is allowed)
trackingPage.canCancel (boolean indicating that cancel is allowed)
Appointment changed notification
Send a notification that the appointment has been modified by the staff. To understand which changes were made, you can compare the booking data with the previous booking data.
Webhook events to look for:
event type=appointment.updated
We recommend to send a change notification only when one of the following changes occurs:
The date/time
The staff that was requested by the client
The location
Actions:
trackingPage.viewURL
trackingPage.canModify (boolean indicating that modify is allowed)
trackingPage.canCancel (boolean indicating that cancel is allowed)
Appointment canceled by the store
Send a notification that the appointment has been modified by the staff.
Webhook events to look for:
event type=appointment.status_updated and booking.status=Cancelled, modifiedBy=staff
Actions:
trackingPage.viewURL
Appointment canceled by the client
Send a notification informing that the appointment is now canceled, and was canceled by the client. This message allows you to differentiate between a confirmation of cancellation by the client and a booking that was canceled by the store (see previous case above).
Webhook events to look for:
event type=appointment.status_updated and booking.status=Cancelled, modifiedBy=client
Actions:
trackingPage.viewURL
Appointment is a no-show
Send a notification informing the customer of their absence (i.e. no-show) and invite them to book again.
Webhook events to look for:
event type=appointment.status_updated and booking.status=Approved, client.presence=NoShow
Actions:
trackingPage.viewURL
Appointment is completed
Send a thank you email to the customer once the appointment is completed. This email is automatically sent (if the option is enabled in my business rules) once the appointment is completed.
Webhook events to look for:
event type=appointment.status_updated and booking.isCompleted=true
To send a thank you message, also make sure the isCompleted has changed by comparing with the previousBooking.isCompleted
Appointment reminder
Send a reminder notification to the customer before the appointment. The delay before the appointment can be configured in the Business rules tab. You can look at the client.remindBySMS and client.remindByEmail to select the preferred communication method of the customer to send the reminder.
Webhook events to look for:
event type=appointment.remind
Actions:
trackingPage.viewURL
Appointment recall
Send a reminder to book a new appointment sometimes after the last appointment was completed. Booxi has a reminder programing system that will program a recall message X days after an appointment is completed. This option must be activated in Booxi.
Webhook events to look for:
event type=appointment.recall
Reservation is completed
Send a thank you email to the customer once the group reservation is completed. Booxi automatically sends an email (if the Thank You Message option is enabled in my business rules) once the group is completed, and auto completion of groups can be configured in Booxi.
Webhook events to look for:
event type=reservation.status_updated and booking.isCompleted=true
To send a thank you message, also make sure the isCompleted has changed by comparing with the previousBooking.isCompleted
Payment Reminder
Payment reminder emails aren’t supported.