Why customers miss appointments, and what the reminder fixes
A missed doctor’s appointment, trial class, property viewing or beauty service is rarely bad faith. Most of the time the person forgot, mixed up the day or had something come up and found it hard to let you know. A front-desk call the day before solves part of it, but it costs hours of work and does not reach people who do not pick up unknown numbers.
An automated confirmation through the WhatsApp API tackles all three causes: it reminds at the right time, repeats the date and place with no room for confusion and makes cancelling as easy as tapping an option. The gain is not only the person who shows up. It is also the slot returned in time to fit another customer.
The reminder sequence
A sequence that works for most scheduled services:
| When | Goal | Content |
|---|---|---|
| At booking | Record the appointment | Date, time, address and professional |
| Day before, late morning | Ask for confirmation | List with confirm, reschedule and cancel |
| 2 hours before | Remind those who confirmed | Short note, with a map link if it helps |
| Day before, late afternoon | Recover those who did not reply | Second attempt or an alert for the front desk to call |
Send the day-before reminder during reasonable business hours and always in the customer’s time zone, not the server’s. For early-morning appointments, the 2-hour reminder may land in the middle of the night: in that case, move it to the previous evening or skip it.
How to build the send with a list of options
WhatsApp has no regular quick-reply button for this kind of send. The interactive list is the format that works on any device and tells your system which option was picked. The trick is to put the appointment ID inside the rowId, so the reply already says what to do and with which record:
curl -X POST https://api.d-api.cloud/api/v1/interactive/send/list \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sessionId": "clinic-schedule",
"to": "14155550123",
"title": "Appointment tomorrow, 2:30 PM",
"description": "Hi Anna. Your appointment with Dr. Paula is tomorrow at 2:30 PM, 120 Main Street. Can you confirm?",
"buttonText": "Reply",
"footerText": "Example Clinic",
"sections": [{
"title": "Appointment 7781",
"rows": [
{ "rowId": "confirm:7781", "title": "I will be there" },
{ "rowId": "reschedule:7781", "title": "I want to reschedule" },
{ "rowId": "cancel:7781", "title": "I need to cancel" }
]
}]
}'Other interactive formats and their limitations are covered in WhatsApp buttons and lists.
Handling the reply through the webhook
The reply reaches your server as a messages.received event. When the customer uses the list, the type comes as list_response, with the chosen option. When they type, it comes as text. Processing follows these steps:
- Ignore events with
fromMeset to true and group messages. - For a
list_response, split the action and the ID from the chosenrowIdand check that the appointment belongs to whoever replied. - For text, look up that number’s latest pending appointment and interpret obvious replies. When in doubt, forward to the front desk.
- Update the calendar: confirm marks expected attendance, cancel frees the slot immediately, reschedule opens the rebooking flow.
- Reply with a short message confirming what was done. The customer needs to know they were heard.
- Answer the webhook fast, with a 2xx status, and do the heavy work in a queue.
The full event format and retry behavior are in WhatsApp webhooks.
Rescheduling without a phone call
Rescheduling is where automation saves the front desk the most time. When the customer chooses to reschedule, send a new list with that professional’s next open slots, each row with the time in the rowId. A section accepts up to 10 rows, which usually covers the next two or three days.
- Hold the chosen slot provisionally and confirm it in a transaction, so it is never booked twice.
- If the slot was taken between the send and the reply, send the updated list instead of an error.
- If no slot works, offer to talk to someone. Do not trap the customer in a menu.
What to measure
- Confirmation rate: how many replied confirming out of all day-before reminders.
- Early cancellation rate: slots returned with enough time to be refilled.
- Unannounced no-shows: compare before and after automation, by professional and by weekday.
- Free-text replies routed to the front desk: if they grow, the message is unclear.
After the appointment, the same number can ask how it went, which is the topic of NPS surveys on WhatsApp. If you do not code and would rather build this sequence in a visual tool, see the automation flows. The 3-day free trial, no credit card, is enough to run the full sequence with a test calendar.
