By use case

Appointment reminders with the WhatsApp API

Confirming appointments over the WhatsApp API means sending a reminder the day before and another a few hours before, letting the customer reply whether they are coming, cancelling or rescheduling, and updating the calendar automatically with that answer. The slot that would have been a no-show comes back in time to be booked again.

By D-API engineering team5 min read

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:

WhenGoalContent
At bookingRecord the appointmentDate, time, address and professional
Day before, late morningAsk for confirmationList with confirm, reschedule and cancel
2 hours beforeRemind those who confirmedShort note, with a map link if it helps
Day before, late afternoonRecover those who did not replySecond 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:

  1. Ignore events with fromMe set to true and group messages.
  2. For a list_response, split the action and the ID from the chosen rowId and check that the appointment belongs to whoever replied.
  3. For text, look up that number’s latest pending appointment and interpret obvious replies. When in doubt, forward to the front desk.
  4. Update the calendar: confirm marks expected attendance, cancel frees the slot immediately, reschedule opens the rebooking flow.
  5. Reply with a short message confirming what was done. The customer needs to know they were heard.
  6. 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.

Frequently asked questions

When should I send the appointment reminder?
The most common setup is one reminder the day before, asking for confirmation, and another two to three hours before, only for people who confirmed. Services booked far in advance can add a third reminder a week before.
Buttons or a list for the customer to confirm?
WhatsApp does not offer regular quick-reply buttons for this purpose. A list works on phone and desktop and tells your system exactly which option was chosen, so it is the safest choice to confirm, cancel or reschedule.
What if the customer replies with text instead of using the list?
It happens often. Treat simple replies like yes, confirmed, ok or 1 as confirmation, never as cancellation. Anything unexpected should go to a person at the front desk, not be ignored.
Do WhatsApp reminders really reduce no-shows?
They mostly reduce no-shows caused by forgetting, which are the majority. And when the customer cancels through the reply, the slot goes back on the calendar in time to be filled, which also counts as a no-show avoided.
Do I need a template for reminders on the official WhatsApp API?
Yes. On the official API the reminder starts the conversation, so it needs an approved template, usually in the utility category. On the unofficial API the reminder goes out as a regular message or list, with no prior approval.

Try D-API's WhatsApp API

3-day trial with full access. No credit card, no lock-in.