Skip to main content

Integrating with Marketing & Notification platforms

How to use Booxi's webhooks to send notifications to your clients using your own internal tool(s)

Updated this week

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:

  1. Supplement Booxi's notifications with additional messages sent from your external tools, or

  2. 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.

Did this answer your question?