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:
Generate your Booking Widget Code
Use the Booking Widget v3 Generator to configure your widget. Options include:Pre-selecting a service
Pre-selecting a staff
Prefilling the client info (name, email, etc.)
Customizing the appearance
Etc.
Consult the generator guide or the complete booking widget v3 implementation guide for advanced info.
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.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
Detect User Intent: use your chatbot to understand the user’s request (e.g., "I want a haircut tomorrow at 3pm").
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.
Identify the service; use the GET /service endpoint.
Identify the staff meant to provide the service (*depends on settings) : use the GET /staff endpoint.
Query Availability:
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.
Create the booking:
Once the user has selected a store, a service and an available timeslot, use the POST /booking endpoint to create the appointment.
Send a confirmation:
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.
Allow appointment rescheduling:
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 |