Explainer

WhatsApp appointment booking.
Free, by chat or call.

Three ways to take bookings on WhatsApp with an AI agent: send your booking link, collect requests in a Google Sheet, or book live slots through your booking system. Plus bookings over WhatsApp calls and reminders that cut no-shows.

Wapzen teamUpdated 9 min read

Quick answer

  • Simplest: an AI agent answers questions about services and prices, then sends your free booking page link.
  • No booking software? The agent takes the request in the chat and saves it to a Google Sheet for your team to confirm.
  • Booking software with an API? The agent checks free slots and books one in the chat or on a WhatsApp call.

Three ways to take bookings on WhatsApp

Clinics, salons, tutors, and consultants get most booking requests on WhatsApp already. The work is in the back-and-forth: “Do you have anything Thursday?”, “What does a cleaning cost?”, “Is Dr. Mehta in on Saturday?” An AI chat agent can handle all of that. How it then makes the booking is your choice:

Three ways to take appointment bookings on WhatsApp
Booking linkBooking requestsLive booking
How it worksThe AI answers questions, then sends your scheduling pageThe AI collects the details; your team confirms the timeThe AI checks free slots and books one in the chat
SetupMinutesAbout 30 minutes: a sheet and a short scriptYour booking system needs an API
Double bookingsPrevented by the schedulerPrevented by whoever confirmsPrevented by the booking system
Best forSolo practitioners and consultantsClinics and salons with a front deskBusy practices with booking software

Start with the simplest one that fits. You can move up later without changing the agent’s knowledge base, just its instructions and tools.

Option 2: Collect booking requests in a sheet

For a practice with a front desk, the agent can take the whole request in the chat and save it, and a person confirms the exact time. It suits businesses whose diary is on paper or in software without an API.

The sheet and script

Create a Google Sheet with a tab named Requests, open Extensions › Apps Script, and paste this. Change KEY, deploy it as a Web app (Execute as: Me, Who has access: Anyone), and copy the URL with ?key= and your key on the end.

// In your Bookings sheet: Extensions › Apps Script. Paste this, change KEY,
// then Deploy › New deployment › Web app (Execute as: Me, Who has access: Anyone).
const KEY = "replace-with-a-long-random-word";

function doPost(e) {
  if (e.parameter.key !== KEY) return reply({ ok: false, error: "wrong key" });
  const b = JSON.parse(e.postData.contents);
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Requests").appendRow(
    [new Date(), b.name, b.contact_number, b.service, b.preferred_day,
      b.preferred_time, b.notes || "", "To confirm"].map(safe));
  return reply({ ok: true });
}

// Customers type this text: never let it start a formula.
function safe(value) {
  return typeof value === "string" && /^[=+\-@]/.test(value) ? "'" + value : value;
}

function reply(data) {
  return ContentService.createTextOutput(JSON.stringify(data))
    .setMimeType(ContentService.MimeType.JSON);
}

The tool

In Wapzen, open Tools › Create Tool › API Request. Name it save_booking_request, describe it as “Save a confirmed booking request”, set the method to POST and the URL to your web app, and add these parameters:

Parameters for the save_booking_request tool
TypeDescription to give the agent
namestringThe customer’s name.
contact_numberstringA phone number to confirm the booking on, with the country code.
servicestringThe service or treatment, and the preferred staff member if any.
preferred_daystringThe day as the customer said it, e.g. “Thursday” or “4 November”.
preferred_timestringThe preferred time or part of the day, e.g. “after 5 pm”.
notesstring (optional)Anything else the team should know.

The instructions

Then create a chat agent, attach your knowledge base and the tool, and adapt these instructions:

You are the WhatsApp assistant for [Clinic], a [dental clinic] in [area]. You answer questions about our services, prices, and timings, and take appointment requests.

Use only the information in your knowledge base. Never give medical advice: for pain, swelling, or emergencies, ask the patient to call [phone number].

To take a booking request:
1. Ask which service they need, and if they prefer a particular doctor.
2. Ask for a preferred day and time within our hours: [Mon–Sat, 10 am–7 pm].
3. Ask for their name and a contact number.
4. Repeat the request back and ask them to confirm.
5. After they confirm, use save_booking_request. Then say the front desk will confirm the exact time on WhatsApp within [2 working hours].

Rules: short replies, one question at a time. Never promise a slot yourself.

Each request lands in the sheet marked To confirm, with the time it came in, so your team can work out what “tomorrow” meant. Confirm it in the same WhatsApp chat.

The agent doesn’t see the customer’s WhatsApp number, so the instructions ask for one. It also doesn’t know today’s date, which is why it saves the day the way the customer said it.

Option 3: Book live slots through your booking system

If your booking software has an API, the agent can check the diary and book in the chat. You need two API Request tools:

  • check_availability: GET your system’s availability endpoint, with a date parameter (“Requested day in YYYY-MM-DD form”). Description: “Look up free times. Use before offering any slot.”
  • create_booking: POST to the booking endpoint, with the customer’s name, contact number, service, and the chosen slot exactly as check_availability returned it.

Put your API key in the tool’s Headers (for example Authorization); it’s stored with the tool and never shown to the agent. If your system has no API but connects to Zapier, Make, or n8n, put a webhook there in between.

Two details that make or break it

  • Return today’s date. The agent doesn’t know what day it is, so “next Tuesday” needs an anchor. Have the availability response start with it:
Today is Tuesday 28 October 2026.
Free slots for cleaning (30 min):
Wed 29 Oct: 10:00, 11:30, 16:00
Thu 30 Oct: 12:00, 17:30
  • Keep responses short. The agent reads the response before replying, and Wapzen passes on the first 3,000 characters. Return a short list of free times, not the whole calendar.

Bookings over WhatsApp calls

Some customers will always call. A Wapzen voice agent answers WhatsApp calls on the same number and can use the same tools, so it can save a request or book a slot out loud. Give it a Send Text tool too, and it messages the booking details to the caller during the call, so they have them in writing.

Voice agents speak dozens of languages: set the one most of your callers use. For a front-desk setup that answers every call, see AI receptionist.

Appointment reminders on WhatsApp

Reminders cut no-shows, and there are three ways to send them:

  • By hand, free. In the WhatsApp Business app, save the reminder as a quick reply and send it to the next day’s appointments each evening. Fine for ten a day, tedious for fifty.
  • Template messages on the Business API. Booking software that connects to the API can send them automatically, as utility templates that Meta charges per message. See WhatsApp Business API pricing.
  • Reminder calls with Wapzen. Create an outbound campaign with a voice agent that confirms the visit, and add the next day’s patients as leads when you want the calls to go out. Adding a lead places the call straight away, so add them by hand or let your automation tool do it at a set time through the API.

Know the limits of the third option: a lead carries a name and number, not the appointment, so the agent confirms “your appointment with us tomorrow” rather than reading out the time. Nobody answers? The lead is marked unsuccessful, and Wapzen doesn’t redial on its own. The same pattern is shown step by step in COD order confirmation calls.

Wapzen is an independent product, not made by Meta or WhatsApp. It links your number as a device. Message and call only people who expect to hear from you: WhatsApp restricts numbers that send unwanted messages or calls.

Frequently asked questions

Can I take appointment bookings on WhatsApp for free?

Yes. Send customers a free scheduling page such as Calendly, Cal.com, or a Google Calendar appointment schedule, or collect booking requests in a Google Sheet. Wapzen's AI chat agent, which answers the questions and handles either route, is currently free.

How do I add a booking link to WhatsApp Business?

Put it in your greeting message, away message, and a quick reply, so it's one tap to send. With an AI agent, put the link in its instructions and tell it to send the link when someone wants to book, after answering their questions.

Can a WhatsApp bot check my calendar and book slots?

Yes, if your booking system has an API. In Wapzen you create two API request tools, one that looks up free slots and one that creates the booking, and attach them to the agent. Without an API, use a booking link or collect requests instead.

Will a WhatsApp booking bot double-book appointments?

Not if the booking happens in one place. A scheduling link and live API booking both rely on your booking system to block taken slots. With booking requests, the AI never promises a time, and your team confirms each one.

Can patients book by calling on WhatsApp?

Yes. A Wapzen voice agent with the same tools answers WhatsApp calls, talks through the booking, and saves the request or books the slot. It can also send the details in a WhatsApp message during the call.

How do I send appointment reminders on WhatsApp?

Three ways: send them yourself with a quick reply in the WhatsApp Business app; send automatic template messages through the Business API, which Meta charges per message; or have a Wapzen voice agent call the day's patients on WhatsApp to confirm they're coming.

Keep reading.
More from the blog.

Bookings, day and night.
Taken by AI on WhatsApp.

Create a free AI agent, add your services and timings, and connect your number by QR code. It answers questions and takes bookings right away.