AI appointment booking, South Africa

WhatsApp appointment booking that writes into your real diary

IndunAI books appointments for South African businesses on WhatsApp, on your website and by email, straight into the calendar you already use. Every time it offers comes out of that calendar, the server re-checks the slot before it writes, and reminders, deposits and changes all happen in the same chat.

Book a demo

Try it on us. The assistant in the corner of this page is ours, and its job is booking demo calls into our own diary. Ask it for one and watch what it does.

A Your business on WhatsApp
online, replies in seconds

Hi, can I book a cut and colour on Saturday morning?20:41

Saturday morning has 08:30 and 10:00 open with Nadia, and 09:00 with Lwazi. Which one suits you?20:41

Choose a time

10:00 with Nadia20:42

Booked: cut and colour with Nadia, Saturday 10:00. You will get a reminder the day before, and you can move it right here.20:42

An illustration of the pattern. The times come out of each stylist's own calendar, and the slot is re-checked at the moment it is written.

Google, CalDAV or GoHighLevel calendars Re-checked at the moment of booking Reminders on the channel they booked on From R1 450/month including VAT

Step by step

How a booking happens in the chat.

A booking agent is only as good as what happens between "do you have anything Saturday?" and "see you then". This is that stretch, in the order it really runs, whether the customer wrote on WhatsApp, in the chat bubble on your website or by email.

  1. The customer asks in their own words. "Anything tomorrow after five?" or "can I bring my dog in for a wash on the 12th?" The assistant works out which of your services they mean, and if it cannot tell, it asks rather than guesses.
  2. It asks your questions first, if you have any. You can write qualifying questions per service (the size of the job, whether they have been before, where they are), and the booking stays closed until the server has the answers. The model cannot skip them by being confident.
  3. The server reads the diary. Your opening hours, the service's real length, each staff member's calendar, the bookings already made, any buffer you set and your minimum notice. Only times that survive all of that are handed to the assistant.
  4. The customer picks. On WhatsApp the times arrive as one "Choose a time" list they tap; on the website they are listed in the reply. A customer who would rather name their own time can, and it is checked the same way.
  5. The slot is claimed, not assumed. The write re-reads the diary inside the same database transaction and either creates the booking or answers that the time has gone, with what is still open. There is no third outcome.
  6. The confirmation says what was booked. The service, the day and time, what it costs and how long it takes, with an add-to-calendar link, and the event lands in your calendar with the customer's answers on it.

Where a service needs a deposit, step five holds the slot instead of confirming it, and the booking confirms once the money is verified. More on that under reminders and deposits.

Your calendar, not a copy of it

It books into the diary you already use.

A lot of online booking tools keep their own calendar and ask you to keep yours in step with it. IndunAI reads and writes the one you already have, so a lunch you blocked out on your phone at 11:00 is a time the assistant will not offer at 11:05.

Google Calendar

Share your calendar, or one per staff member, and enter its id in the dashboard. Busy times are read before times are offered, and each booking is written back as an event.

CalDAV

Apple iCloud, Nextcloud, Fastmail and the other CalDAV servers. The same read-then-write, with an app-specific password where the provider asks for one. Outlook and Microsoft 365 are not supported today: they do not speak CalDAV.

GoHighLevel

For businesses whose team lives in GoHighLevel: busy times are read from its calendars, a booking becomes a GoHighLevel appointment, a calendar per service is supported, and it can offer GoHighLevel's own free slots instead of our grid.

No calendar at all is also fine: the bookings live in the dashboard's own Diary, a day, week and month board your team can drag appointments around on, and the server re-checks every drop.

The first rule

Why an AI must never decide a slot is free.

A language model is a very good writer and a poor clerk. Tell it firmly enough that you were promised 10:00 and it will often agree, because agreeing is what it is good at. It cannot see the booking another customer made four seconds ago in a different chat.

The model proposes

It understands the request, picks the service and reads out the times it was given. That is the whole of its authority over your diary.

The server verifies

Availability is computed by ordinary code from your calendar and your rules, and the booking write is a claim the database grants once. Two customers tapping the same time get one booking, not two.

Closed days stay closed

A time on a day you have marked as away is refused by name at the write itself, even if the model somehow put it in a sentence.

The whole mechanism, with the race it closes and how to test any vendor for it with two phones, is in its own guide: AI booking, without double booking.

After the booking

Reminders, confirmations and deposits that cut no-shows.

Most no-shows are a forgotten diary, and a few are a booking that cost nothing to break. The booking agent works both, as server jobs that run whether or not anybody is at the desk.

Reminders

Up to four per booking, at the hours before the appointment you choose. WhatsApp bookings get Meta's approved reminder template, so it arrives even days after the chat went quiet; email bookings get an email. One attempt per reminder, so a broken number never gets spammed.

Confirm or release

Optionally, a Yes or No question a set time before the appointment. A No cancels the booking and frees the slot. No answer at all is never treated as a No: your team is told, with the customer's name and number, so a person can phone.

Deposits

Per service, flat or a percentage. The slot is held while the deposit is outstanding, verified through your own PayFast account or by you confirming a proof of payment, and an unpaid hold expires and frees the time for somebody else.

What each lever does to an empty chair, and what deposits look like in the market, is in cutting no-shows.

Changes

Rescheduling and cancelling without a phone call.

The reminder is where a clash gets noticed, so the reply to the reminder has to be somewhere a change can actually happen. It is the same chat.

Move it in the chat

"Can we rather do Thursday?" gets Thursday's real times, and the move runs through the same check as a new booking. A deposit already paid moves with it and is not asked for again.

Cancel it in the chat

The slot is released the moment the cancellation goes through, and the calendar event goes with it. Your team sees it arrive in the dashboard's list of what came in.

Only their own booking

The assistant changes a booking only for the person it belongs to. Somebody holding two appointments is shown each one by service, day and time, and asked which they mean.

The detail that breaks booking tools

Staff diaries, service lengths and buffers.

A diary is not a grid of equal boxes. A 90-minute treatment at 10:00 collides with an 11:00, and a stylist who does not do colour should never be offered for one.

Per staff member

Each person can have their own calendar and their own list of services. A time is offered when somebody who does that service is free for all of it.

Per service

Each service has its own length, and can have its own start times, its own days, its own minimum notice and its own price. The whole length is checked, not just the start.

Buffers

A gap around an appointment for travel or clean-up, on both sides or after it only, and the diary and the booking write read the same rule so they cannot disagree.

Phone-only and paused services

A service you would rather arrange on the phone is never booked in the chat, and one you have switched off for a while comes back with all its settings when you switch it on.

Days you are not there

Public holidays and away dates.

Heritage Day on a Thursday is not a Thursday. A diary that only knows your weekly hours will happily offer times on it, and tell the customer you are open.

South African public holidays

On a South African instance the diary is closed on every public holiday, Easter and the Sunday-to-Monday rule included, unless you open it with your usual hours or hours of your own. The assistant knows which holidays are coming up when somebody asks.

Away dates

Save a date range and the diary shuts for it. Your own notice can head the first reply anyone gets while you are away, so nobody spends ten messages finding out.

What you are actually buying

Booking agent, booking system or online booking form?

These three get sold under the same words, and they are different tools for different jobs.

An online booking form

A page with a calendar widget. It works for a customer who already knows exactly what they want and is happy to fill in a form. It does not answer "how long does a full set take?" and it is not on WhatsApp.

A booking system

Scheduling software with a diary, staff and reminders. Solid, but it waits for the customer to come and use it, and somebody still has to answer the questions that come before the booking.

A booking agent

What this page describes: it answers the message, asks your questions, reads your real calendar, books, reminds and handles the change, on the channel the customer already used. It is the conversation plus the diary.

IndunAI is the third, from R1 450 a month including VAT for up to 300 conversations plus a once-off R2 500 setup (fully managed is R4 995 a month), with Meta's WhatsApp message fees separate and paid to Meta. If the booking is one part of a bigger job, it is part of the wider AI automation we build, and it works the same way inside the WhatsApp AI chatbot. Running a practice? The medical version, with dependants, forms before the visit and the first message saying it is an AI, is AI appointment booking for medical practices. Running a salon? Start at salons and beauty.

FAQ

Fair questions.

Which calendars does it work with?

Google Calendar, CalDAV calendars such as Apple iCloud, Nextcloud and Fastmail, and GoHighLevel calendars. Each staff member can have their own calendar, and the busy times already in it are read before any time is offered. Outlook and Microsoft 365 are not supported today, because they do not speak CalDAV.

Can two people book the same slot?

No. The booking is written in one step that re-checks the diary inside the same database transaction, so if two customers accept the same time a second apart, one gets it and the other is told at once and shown what is still open. The AI never decides on its own that a time is free.

Can customers reschedule themselves?

Yes. A customer can move or cancel their own booking in the same chat, and the new time goes through the same availability check as a new booking. The assistant only changes a booking that belongs to the person asking, and where they hold more than one it names each appointment and asks which one they mean.

Does it send reminders?

Yes, if you switch them on. You choose how many hours before the appointment, up to four reminders per booking, and they go out on the channel the customer booked with: a WhatsApp template message for WhatsApp bookings, an email for email bookings. A practice can also ask the customer to confirm with a Yes or No before the appointment.

Can it take a deposit?

Yes. You set a deposit per service, as a flat amount or a percentage. The slot is held until the money is verified, either automatically through your own PayFast account or by you confirming the proof of payment, and an unpaid hold expires and frees the slot. The money goes to your account; we never hold funds.

Does it handle several staff members?

Yes. Each staff member can have their own calendar and their own list of services they do, and the assistant only offers a time when a person who does that service is free for its whole length, including any buffer you set.

Book a demo appointment yourself.

The chat bubble on this page is our own booking agent. Ask it for a demo and it will offer you real times from our diary, so the test of everything above is the booking you make with it.

Book a demo WhatsApp +27 69 235 0986