Cliqtel
  • Produtos
    Infraestrutura
    Números VirtuaisLocais, móveis e gratuitos em mais de 70 países Troncos SIPSIP de nível operadora para qualquer PBX Dados de viagem (eSIM)Dados móveis em 200+ países, sem roaming
    Comunicações
    MensagensSMS bidirecional e modelos de WhatsApp Sistema Telefônico em NuvemFluxos visuais de chamadas, IVR, filas, pop-up de CRM Contact CenterRoteamento avançado e IA — acesso antecipado
    Parceiros e IA
    Cliqtel ConnectPlataforma white-label para MSPs Acesso de IA (MCP)Telecom operável por IA para agentes e copilotos
  • Soluções
    Por equipe
    Equipes RemotasUm número comercial para uma equipe distribuída Equipes de SuporteFilas, IVR e caixas de entrada compartilhadas para suporte Equipes de VendasClick-to-call, pop-up de CRM e identificador de chamadas local
    Explorar
    CoberturaNúmeros e tarifas em mais de 70 países IntegraçõesConecte seu PBX, CRM e ferramentas
  • Preços
    Preços e planos
    PreçosPreços transparentes por número e por uso Cobertura e tarifasTarifas de chamadas e de números por país PacotesPacotes pré-pagos de números + minutos
  • Documentação
    Primeiros passos
    IntroduçãoConfigure sua conta e seu primeiro número Referência da APIAPI REST para números, chamadas e mensagens Fluxos de ChamadasCrie IVRs e roteamento visualmente Central de AjudaFAQs, guias e resolução de problemas
    Guias
    Configuração de PBX e SIPConecte 3CX, FreePBX, Asterisk e Teams Guias de MensagensGuias de integração de SMS e WhatsApp RegulatórioRegras de registro de números por país
  • Sobre
    Empresa
    Sobre a CliqtelQuem somos e o que construímos ContatoFale com nossa equipe de vendas ou suporte ParceirosTorne-se parceiro ou revendedor Cliqtel
    Recursos
    BlogNovidades de produto e guias de telecom StatusStatus ao vivo da plataforma e da rede IntegraçõesMarketplace de PBX, CRM e ferramentas
English EN Nederlands NL Deutsch DE Français FR Español ES Português PT العربية AR 中文 ZH 日本語 JA हिन्दी HI
Entrar Solicitar um número
Cliqtel
Produtos Números VirtuaisLocais, móveis e gratuitos em mais de 70 países Troncos SIPSIP de nível operadora para qualquer PBX Dados de viagem (eSIM)Dados móveis em 200+ países, sem roaming MensagensSMS bidirecional e modelos de WhatsApp Sistema Telefônico em NuvemFluxos visuais de chamadas, IVR, filas, pop-up de CRM Contact CenterRoteamento avançado e IA — acesso antecipado Cliqtel ConnectPlataforma white-label para MSPs Acesso de IA (MCP)Telecom operável por IA para agentes e copilotos
Soluções Equipes RemotasUm número comercial para uma equipe distribuída Equipes de SuporteFilas, IVR e caixas de entrada compartilhadas para suporte Equipes de VendasClick-to-call, pop-up de CRM e identificador de chamadas local CoberturaNúmeros e tarifas em mais de 70 países IntegraçõesConecte seu PBX, CRM e ferramentas
Preços PreçosPreços transparentes por número e por uso Cobertura e tarifasTarifas de chamadas e de números por país PacotesPacotes pré-pagos de números + minutos
Documentação IntroduçãoConfigure sua conta e seu primeiro número Referência da APIAPI REST para números, chamadas e mensagens Fluxos de ChamadasCrie IVRs e roteamento visualmente Central de AjudaFAQs, guias e resolução de problemas Configuração de PBX e SIPConecte 3CX, FreePBX, Asterisk e Teams Guias de MensagensGuias de integração de SMS e WhatsApp RegulatórioRegras de registro de números por país
Sobre Sobre a CliqtelQuem somos e o que construímos ContatoFale com nossa equipe de vendas ou suporte ParceirosTorne-se parceiro ou revendedor Cliqtel BlogNovidades de produto e guias de telecom StatusStatus ao vivo da plataforma e da rede IntegraçõesMarketplace de PBX, CRM e ferramentas

Idioma
EN NL DE FR ES PT AR ZH JA HI
Entrar Começar — grátis
← Help Center
On this page
Overview Reminder Flow 1 — Create Template 2 — Send Reminder 3 — Handle Replies Quick Reply Buttons Scheduling Logic Best Practices FAQ

Appointment Reminders via WhatsApp

Messaging · 10 min read Reminders WhatsApp 2-way
What this guide covers: How to send automated appointment reminders via WhatsApp with quick reply buttons for confirm/reschedule. Includes template setup, scheduling logic, inbound reply handling, and cancellation flows.

Overview

No-shows cost healthcare, hospitality, and professional services an estimated 20-30% of revenue. WhatsApp reminders dramatically reduce no-shows because:

  • 98% open rate — vs. 20% for email reminders
  • Quick reply buttons — patients tap "Confirm" or "Reschedule" with one tap
  • 2-way conversation — patients can ask questions or request changes in the same thread
  • Read receipts — you know the patient saw the reminder

Reminder Flow

  1. Appointment booked → schedule 2 reminders (24h before + 2h before)
  2. 24h reminder sent → patient receives WhatsApp with Confirm/Reschedule buttons
  3. Patient replies → your webhook receives the response
  4. Auto-update booking → mark confirmed, or open reschedule flow
  5. 2h reminder sent → final reminder with location/time details

Step 1 — Create a Reminder Template

1Create a utility template with quick reply buttons

In Meta Business Manager → Message Templates, create a utility template:

TEMPLATE: APPOINTMENT_REMINDER
Hi 1,

This is a reminder for your appointment:

Date: 2
Time: 3
Location: 4
Provider: 5

Please confirm or reschedule below.

Add two quick reply buttons:

  • Button 1: Confirm
  • Button 2: Reschedule
Quick reply buttons appear as tappable pills below the message. When the patient taps one, their reply is sent as a standard text message that your webhook receives. The payload includes a button.text field with the button label.

Step 2 — Send the Reminder

2Send the template with appointment details
NODE.JS
async function sendReminder(appointment) {
  const response = await fetch('https://cliqtel.com/api/v1/whatsapp/messages', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      account_id: 1,
      to: appointment.patientPhone,
      type: 'template',
      template: {
        name: 'appointment_reminder',
        language: { code: 'en' },
        components: [{
          type: 'body',
          parameters: [
            { type: 'text', text: appointment.patientName },
            { type: 'text', text: appointment.date },
            { type: 'text', text: appointment.time },
            { type: 'text', text: appointment.location },
            { type: 'text', text: appointment.providerName },
          ]
        }]
      }
    }),
  });

  return response.json();
}

Step 3 — Handle Replies

3Process quick reply button taps via webhook
NODE.JS — WEBHOOK HANDLER
app.post('/webhooks/whatsapp-inbound', (req, res) => {
  const { from, body, button } = req.body;

  // Quick reply buttons send the button text
  const reply = (button?.text || body || '').toLowerCase().trim();

  switch (reply) {
    case 'confirm':
      markAppointmentConfirmed(from);
      // Send confirmation in the open 24h session (no template needed)
      sendFreeformReply(from, 'Your appointment is confirmed. See you then!');
      break;

    case 'reschedule':
      markAppointmentPendingReschedule(from);
      sendFreeformReply(from,
        'No problem. Please reply with your preferred date and time, ' +
        'or call us at +31 20 123 4567.'
      );
      break;

    default:
      // Free-text reply within 24h session window
      forwardToStaff(from, body);
      sendFreeformReply(from,
        'Thanks for your message. Our team will get back to you shortly.'
      );
  }

  res.sendStatus(200);
});
24-hour window: After the patient replies, a 24-hour session window opens. During this window, you can send free-form text replies without needing a template. After the window closes, you must use an approved template to re-initiate contact.

Quick Reply Buttons

Quick reply buttons are the most effective way to get patient confirmations. Key benefits:

  • One-tap response — no typing required
  • Higher response rate — 60-70% of patients respond to button prompts vs. 20-30% for text-only
  • Structured data — you receive the exact button text, making automated processing reliable
  • Maximum 3 buttons per template (e.g., Confirm / Reschedule / Cancel)

Scheduling Logic

Use your application's job scheduler to send reminders at the right time.

PSEUDO-CODE — REMINDER SCHEDULING
// When appointment is booked
function onAppointmentBooked(appointment) {
  const appointmentTime = new Date(appointment.datetime);

  // Schedule 24-hour reminder
  scheduler.schedule({
    job: 'send-reminder',
    data: { appointmentId: appointment.id, type: '24h' },
    runAt: new Date(appointmentTime - 24 * 60 * 60 * 1000),
  });

  // Schedule 2-hour reminder
  scheduler.schedule({
    job: 'send-reminder',
    data: { appointmentId: appointment.id, type: '2h' },
    runAt: new Date(appointmentTime - 2 * 60 * 60 * 1000),
  });
}

// Job handler
async function handleSendReminder({ appointmentId, type }) {
  const appt = await getAppointment(appointmentId);

  // Skip if already cancelled or rescheduled
  if (appt.status !== 'scheduled') return;

  await sendReminder(appt);
}
Timezone tip: Always schedule reminders based on the patient's local timezone, not your server timezone. A 24-hour reminder for a 9 AM appointment in Berlin should be sent at 9 AM Berlin time the day before.

Best Practices

  • Send two reminders: 24 hours and 2 hours before the appointment
  • Include location, date, time, and provider name in every reminder
  • Use quick reply buttons (Confirm / Reschedule) for highest response rates
  • Respect quiet hours — don't send reminders between 9 PM and 8 AM local time
  • Skip confirmed — if the patient confirmed after the 24h reminder, don't send the 2h reminder
  • Add a "Cancel" button if your business allows last-minute cancellations
  • Track read receipts — if a reminder is read but not confirmed, flag it for staff follow-up
  • Keep an SMS fallback for patients who don't have WhatsApp

FAQ

What if the patient doesn't respond?

If no response after the 24h reminder, the 2h reminder still sends. If still no response, flag the appointment for manual follow-up (phone call). Consider sending an SMS fallback if WhatsApp delivery failed.

Can patients reschedule via WhatsApp?

Yes. When they tap "Reschedule", the 24-hour session window opens. You can send free-form messages asking for their preferred time, or direct them to an online booking link. Your webhook handler processes the conversation.

How many reminders can I send per appointment?

There's no hard limit, but each template message outside the 24-hour window costs a conversation fee. The standard pattern is 2 reminders (24h + 2h). More than that can feel spammy.

Start reducing no-shows

Connect your WhatsApp account and create your first reminder template.

WhatsApp Setup Guide →
© 2026 Cliqtel · cliqtel.com
Sobre Blog Parceiros Cobertura Documentação da API Status Privacidade Termos Cookies Ajuda Pesquisar
cliqtel.com é operado pela Cliqtel B.V., registrada em Zeist, Países Baixos · KVK 42033793 · IVA NL869402468B01 · SBI 62.09

Usamos cookies essenciais para que a Cliqtel funcione. Com o seu consentimento, também usamos cookies de análise para melhorar nosso serviço. Política de Cookies