How to Let Customers Book a Call From Your Chat
Booking a call usually costs three emails: a request, a list of times, and a confirmation. A workflow can do it inside the conversation the customer is already having.
Time: two to three hours, most of it on the API node. You need: Starter or above, and a booking system with an HTTP API.
1. Pick One Appointment Type#
Build for one. A workflow that books a thirty-minute intro call is straightforward; one that books any of six service types, each with its own duration and staff member, is a project. Start with your most common booking type and add branches later, once the execution log shows which ones people ask for.
2. Point the Workflow at Your Booking System#
This guide posts the booking to a service you already use: Calendly, Cal.com, Acuity or your own endpoint. Have the URL and the credentials to hand before step 3.
On fewer than a handful of bookings a week, a form and a lead email is enough and you can stop after step 3. Where a double booking is unaffordable, step 7 adds the availability check.
3. Build the Workflow#
Six nodes, and the two branches matter as much as the happy path.
| Node | Configuration |
|---|---|
| Trigger | Already on the canvas. |
| Form | name, email, preferred_day, preferred_time. |
| API Request | POST to the booking endpoint, with the form values in the body. |
| Decision | On the API response: did it create a booking? |
| Message (true) | Confirm with the time, and say a calendar invitation is on its way. |
| Message (false) | Apologise, say the team will confirm by email, and end. |
Connect the API node's error port to the same failure message. An endpoint that times out and one that returns a refusal look different to the workflow and identical to the customer.
4. Handle the Times Properly#
Two problems appear in every booking workflow.
Time zones. A visitor typing "2pm" means their local 2pm. If the booking API expects UTC, convert it in a Function node before the API call rather than hoping the API guesses correctly.
Vague answers. "Tomorrow afternoon" is not a slot. Use a dropdown in the form so the customer picks from fixed options. The alternative, taking the preferred time as a workflow parameter for the assistant to normalise, is more flexible and less reliable.
5. Write the Description#
Books a 30-minute intro call with the team and confirms the time with the
visitor by email.
USE WHEN the visitor asks to book a call, arrange a meeting, speak to someone
at a specific time, or set up a demo.
DO NOT USE for questions about opening hours or where the office is. Answer
those from the knowledge base.The boundary line stops this workflow catching "what time do you open?".
6. Test the Failure Path First#
The happy path is easy to test and rarely the one that breaks. Test in this order:
- API down. Point the API node at an endpoint that returns a 500. The customer should get the fallback message, not silence.
- API slow. A timeout should route down the error port.
- Invalid input. Book a time in the past and confirm what the API returns.
- The happy path. Confirm the booking appears in the calendar.
The execution log shows which node each run reached, which is how to tell a failure from a booking that never started.
7. If You Need Real Availability#
To avoid double bookings, add two nodes before the form:
- API Request. Fetch available slots for the next few days.
- Function. Reshape the response into the dropdown options the Form node offers.
The workflow then offers only slots that exist. The cost is one more API call per booking conversation and one more failure path to draw.
8. Confirm in Writing#
The chat confirmation disappears when the tab closes. Whatever creates the booking should also send a calendar invitation or an email, because that is what the customer still has on the morning of the call.
Common Questions#
Can Chatleadr Connect to Calendly or Google Calendar?#
Through their HTTP APIs, using an API Request node. There is no one-click integration: the workflow posts to whichever endpoint your booking system exposes and branches on the response.
What Happens If the Booking API Is Down?#
The API node takes its error port. Connect that to a message telling the customer the team will confirm by email, and capture the request as a lead so somebody follows up. A booking workflow with no error path fails silently.
How Do I Stop Double Bookings?#
Read availability from the calendar before offering times, rather than accepting a free-text time. That is the second API node described in step 7.
Can the Bot Reschedule or Cancel an Appointment?#
Yes, as a separate workflow with its own description and its own API call. Combining booking and rescheduling into one workflow makes the description ambiguous, and an ambiguous description makes selection unreliable.
Do I Need a Developer for This?#
For the API node, usually yes, unless your booking system publishes a simple endpoint you are comfortable reading. The rest, a form, a decision and messages, is built in the editor without code.