Why your bot cannot check the calendar

If your chatbot confirms times that do not exist, asks for the name again every other message, or creates the same appointment twice, it is not misconfigured. It is doing the only thing it knows how to do. Here is the mechanism.

Updated 2026-08-05

A flow is not an assistant, it is a diagram

Most of what is sold as a "bot for clinics" is a hand-drawn diagram: if the customer taps this button, reply with this; if they type this word, jump to that step. It works by pattern matching, not by understanding.

That has a consequence which is not about quality but about capability: a diagram can only walk the paths somebody drew in advance. When a person writes something unanticipated, there is no branch to go to. That is why flows "break" on perfectly ordinary sentences.

It is not doing it badly. It has no way of doing it. This is the difference between a new employee who has not learned something yet and a calculator you have asked to draft a letter.

Why it cannot know whether Thursday at 10 is free

Answering "do you have anything Thursday at 10?" truthfully takes three things, and a flow has none of them:

  1. Understanding the question, including "Thursday", "day after tomorrow", "first thing" or "whenever you can in the afternoon".
  2. Checking the real calendar at that moment — not a copy from yesterday, not a table of theoretical opening hours.
  3. Interpreting the answer and, if there is no slot, offering alternatives that do exist.

A flow can look like it is doing this, and that is the problem. It has two exits and neither is good:

If your bot has never caused a calendar problem, check which of the two it is doing. The second one never fails, but it never solves anything either.

How a duplicated booking actually happens

This is the most expensive failure and the easiest to reproduce. A real conversation does not arrive tidy, it arrives in pieces:

— "hi, I'd like to book"
— "Thursday if possible"
— "actually 11 is better"
— "oh, I'm Marta"
— "want my number?"
— "confirm it for me please"
— "can you confirm?"

Each of those arrives separately. A flow — or a "when a message comes in, do this" automation — has to decide on every one of them whether this is a new request or the continuation of the last. And it has no context to decide with.

So it does one of two things, and both are bad:

A system that actually holds the conversation understands that all of it is one booking being filled in piece by piece, and that two confirmations in a row are not two appointments.

The silent failure: the booking left half-done

This one almost never comes up in a demo, because you cannot see it. Rescheduling is two operations: cancel the old appointment and create the new one. If the first succeeds and the second fails — the calendar does not respond, the connection drops, the slot got taken in between — the result is that your customer no longer has an appointment and nobody knows.

It shows up in no error report, because from the outside the conversation ended well. It shows up the day that person arrives and is not in the diary.

What you should demand is that if an operation fails halfway, it undoes itself and returns to the previous state. That is a requirement, not an extra: either the change completes in full or it does not happen. Ask about it explicitly — it is one of the few things that separate a serious system from one that demos well.

The other extreme: when the model makes things up

Opposite the rigid flow sits a pendulum that swings the other way: wire a language model straight into WhatsApp and let it answer. It converses beautifully. And it has a different problem that costs just as much.

An unconstrained model fills in what it does not know, because that is what it was trained to do. Ask it a price it does not have and it produces a plausible one. Ask about a service you do not offer and it describes it confidently. It sounds convincing and it is false.

This is not a theoretical worry: companies have been ordered to compensate customers for what their chatbot promised them. What your assistant says, you said.

The answer is not to ask the model nicely in its instructions. It is that whatever it is about to say regarding prices, services and availability gets checked against your real information before it is sent, and that when the fact is missing, it says so and flags a human.

What to demand, as a list

Whoever you buy from, this is what has to be answerable with a yes:

RequirementWhy it matters
Checks real availability before proposing a timePrevents the appointment that does not exist
Understands that several messages are one bookingPrevents the duplicated appointment
Undoes its work if an operation fails halfwayPrevents the customer with no appointment and no warning
Checks what it is about to say against your dataPrevents invented prices and services
Remembers the conversation across daysPrevents the customer leaving out of repetition
Knows when to hand over to a personEmergencies, complaints and delicate cases

And a warning about the answers: "yes, we've got that in the prompt" is not a yes. It means they asked the model. What to ask is whether it is guaranteed — that is, whether the system checks every time, whatever happens in the conversation.

If you want to see how all of this translates into price, that is in what an AI assistant costs.

Frequently asked questions

Why does my bot confirm appointments that do not exist?

Because it has no access to your calendar. A drawn flow answers according to what somebody programmed, not according to what is free. It confirms because that is the most natural exit from the diagram, not because it checked anything.

Can a flow-based bot be fixed to check the calendar?

Not by configuring it better. It needs a real calendar integration and the ability to interpret the answer, which is what separates one product category from another. It can be added with custom development, but at that point you are no longer paying for a flow.

Why does my bot keep asking for my name every other message?

Because it has no memory of the conversation beyond the current message, or only within a very short session. An assistant that genuinely books has to remember across days, not just across messages.

Is wiring ChatGPT straight into WhatsApp a good idea?

It converses very well and that is not the problem. The problem is that it cannot book in your calendar and that, unconstrained, it fills in facts it does not have: prices, services and hours that sound right and are not yours. On top of that, doing it from an ordinary number without the official API ends in a block — explained in WhatsApp Business vs API.

How do I test whether the bot being pitched really books?

In the demo, ask it for a time you know is taken. If it confirms, it is checking nothing. Then ask for confirmation twice in a row and see whether two appointments appear.

So flow-based bots are useless?

They are useful for what they are: answering common questions, giving an address, opening hours or a list of services. If you do not need to book, they are the cheap and correct choice. The problem is not the tool, it is selling it as something it is not.

Try it with the taken slot

In the demo you can ask for a time you know is not free and watch what it answers. Twenty minutes, no cost, and no payment details asked for.

Book a demo Calculate my return