{"slug": "appointment-reminders-in-a-chat-bot-six-rules-we-ended-up-with", "title": "Appointment reminders in a chat bot: six rules we ended up with", "summary": "A developer building DOS AI, a platform for small-business AI assistants on WhatsApp, Instagram and Telegram, documented six rules for booking reminders that focus on when not to send messages. The system suppresses confirmations and reminders outside 9:00–21:00 local time, only messages customers who have already written to the business's WhatsApp number, excludes Instagram entirely due to its 24-hour messaging window, and matches reschedules either by external booking id or a two-hour heuristic. Each reminder carries one of five labels — scheduled, sent, not sent with a reason, not delivered, or removed — so owners can see why a customer received nothing.", "body_md": "I build DOS AI (dosai.pro), a platform where a small business sets up an AI assistant for WhatsApp, Instagram and Telegram. Booking is a core feature there, and the part that sounds trivial, \"send a reminder before the visit\", turned out to hold most of the rules.\n\nNone of this is about the model. The reminder texts are templates, not generated, and they cost the owner nothing. The work was deciding when not to send.\n\nMessages about a booking go out between 9:00 and 21:00 in the project's time zone. Two cases fall out of that:\n\nA confirmation arriving twenty minutes before the visit it confirms is noise.\n\nA confirmation is for a person who has not heard from you yet. So it is not sent when:\n\nReminders still go out in all three cases.\n\nA reminder is a message the business sends first, with no fresh message from the customer. WhatsApp blocks numbers that write to people who never wrote to them. So the rule is: we only message someone who has already written to this WhatsApp number, and we check that at send time, not at booking time. If the customer writes between the booking and the reminder, the reminder goes.\n\nFor everyone else the booking shows the reason in plain words, \"the customer has never written to your WhatsApp number\", and a button that opens WhatsApp on the owner's phone with the text prepared. A human sends it. That is slower, and it keeps the number alive.\n\nInstagram does not take part at all. You may answer there only within 24 hours of the customer's last message, so a reminder a day ahead cannot get through. Telegram does take part: a chat with a bot exists only if the customer started it.\n\nIt is tempting to hide this behind a \"send reminder\" abstraction. We show it instead, because the owner needs to know why a given customer got nothing.\n\nMoving a booking moves its reminders. Cancelling removes them. The hard part is knowing that two events are the same booking.\n\nWhen a booking lives in an external system, we ask for its booking id and match on that. Without an id we fall back to a rule: a repeat booking by the same customer in the same conversation within 2 hours is a reschedule, a later one is a new booking. It is a guess, and the guide says so.\n\nEach reminder in the list carries one of five labels: scheduled (with the time already adjusted for the night rule), sent, not sent with a reason, not delivered, removed. \"Not sent\" always names the cause: no WhatsApp connected, subscription ended, reminders switched off, customer never wrote.\n\nWithout such a list, \"the customer says they got no reminder\" has no answer. With it, the answer is one line to read.\n\nWrite the \"do not send\" rules before the \"send\" code. Sending a templated message at a given time is an afternoon. Night hours, strangers, channel windows and reschedules are where the design time goes, and each of them is a case of a real person getting a message they should not have.\n\nThe owner-facing description of all this is in our guide: [confirmations and reminders](https://dosai.pro/docs/guide/03-tools/41-bookings).", "url": "https://wpnews.pro/news/appointment-reminders-in-a-chat-bot-six-rules-we-ended-up-with", "canonical_source": "https://dev.to/dosai/appointment-reminders-in-a-chat-bot-six-rules-we-ended-up-with-ci2", "published_at": "2026-10-10 19:03:30+00:00", "updated_at": "2026-10-10 19:16:22.963505+00:00", "lang": "en", "topics": ["ai-agents", "ai-products", "ai-tools"], "entities": ["DOS AI", "WhatsApp", "Instagram", "Telegram"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/appointment-reminders-in-a-chat-bot-six-rules-we-ended-up-with", "markdown": "https://wpnews.pro/news/appointment-reminders-in-a-chat-bot-six-rules-we-ended-up-with.md", "text": "https://wpnews.pro/news/appointment-reminders-in-a-chat-bot-six-rules-we-ended-up-with.txt", "jsonld": "https://wpnews.pro/news/appointment-reminders-in-a-chat-bot-six-rules-we-ended-up-with.jsonld"}}