Skip to main content

How to Integrate Booxi with a Chatbot for Online Booking

Updated this week

Booxi can be integrated into chatbot platforms to allow customers to book appointments directly through a conversational interface. This enhances the customer experience by offering a smooth, interactive booking process without leaving the chat window.

In addition, in cases where your chatbot interacts with customers through common communication channels such as Whatsapp, Line, Kakaotalk and others, booking notifications (e.g. booking confirmation, cancellation and reminders) can be relayed there; see here for more info.


Integration Approaches

There are two common approaches depending on the capabilities of your chatbot platform:

1) Embed the Booking Widget in the Chatbot

If your chatbot supports custom HTML, buttons, or rich cards, you can insert a link to a landing page which will open the booking widget, or embed the widget directly in the conversation flow.

Steps:

  1. Generate your Booking Widget Code
    Use the Booking Widget v3 Generator to configure your widget. Options include:

  2. Embed the Widget
    Use a chatbot action (such as a button or quick reply) to open the widget URL in a pop-up or webview. If the chatbot supports iFrames or embedded HTML, you can render the widget directly in the chat.

  3. Track Source Channel
    Include acquisitionChannel=chatbot in the widget config to track where the booking originated. For more info, see here.

2) Use Booxi’s API for Custom Booking Flows

If your chatbot supports API calls, you can integrate directly with the Booxi API for full conversational booking.

  • Use of the API requires a partner API Key. To obtain such a key, contact your Booxi representative.

  • Prior to use, consult Booxi's API fair use policy.

  • Remember that the URL at which you access the API depends on your hosting region. API documentation links:

Steps

  1. Detect User Intent: use your chatbot to understand the user’s request (e.g., "I want a haircut tomorrow at 3pm").

    1. Identify the store in which the appointment is to be booked: use the GET /merchant/list endpoint and [optionally] add geolocation information to identify the appropriate store.

    2. Identify the service; use the GET /service endpoint.

    3. Identify the staff meant to provide the service (*depends on settings) : use the GET /staff endpoint.

  2. Query Availability:

    1. Propose available timeslots to the customer according to the store and service they selected. You can retrieve the availability for a specific store and service using the GET /serviceAvailability endpoint. If you want to propose timeslots in nearest store locations, identify the stores and use the GET /merchantAvailability endpoint instead.

  3. Create the booking:

    1. Once the user has selected a store, a service and an available timeslot, use the POST /booking endpoint to create the appointment.

  4. Send a confirmation:

    1. Return a confirmation message in the chat. You can also use the Event API Webhook to track booking updates and notify the customer of changes.

  5. Allow appointment rescheduling:

    1. Appointments have a booking ID that can be used to update the appointment and also a tracking page URL that can be used to allow the customer to reschedule or cancel the appointment themselves; use the PUT /booking endpoint for this purpose. You can also retrieve the customer's booking history by using the GET /booking endpoint.

For more details on how to use the APIs to create your own custom booking flow, refer to this article.

Sample flow diagram

Here is a diagram outlining a sample booking flow using a chatbot

*Staff selection is optional; only necessary if the service's "Online Personnel" selection mode is set to "Personnel selection".

Endpoint summary table (appointment)

Flow Step

Endpoint

Purpose

Client lookup or creation

GET /client or POST /client

Identify or create client

Load store list (multi-store)

GET /merchant/list

Display all available store locations

Load store/config data

GET /merchant

Load details for a specific store (e.g. timezone, address)

Service options

GET /service

Offer list of available services

Staff options [optional]

GET /staff

If user needs to pick staff

Cross-store availability

GET /merchant/availability

Check which locations offer a service and when

Availability lookup

GET /service/{id}/availability

Provide timeslot options for a specific service/store

Create booking

POST /booking

Submit appointment/reservation

Collect payment (optional)

PUT /booking/{bookingId}/payment/{paymentId}

Mark payment as collected; confirm

Update booking

PUT /booking/{bookingId}

Modify existing booking details (time, service, etc.), or cancel.

Endpoint summary table (group event)

For group events, all endpoints mentioned in the appointment table are relevant (except for GET /staff and GET /service/{id}/availability since group sessions are pre-scheduled), in addition to the ones listed below.

Flow Step

Endpoint

Purpose

List scheduled group events

GET /groupEvent

Fetch group events (sessions) within a date range

Get a single event [optional]

GET /groupEvent/{groupEventId}

Retrieve details for a specific group event

Did this answer your question?