Raphael Serafim· Publicado em 10 de setembro de 2026· 9 min de leitura

Lembrete de agendamento no WhatsApp: como reduzir falta em clínicas e serviços

Falta em consulta é horário perdido que não volta. Como montar o lembrete com confirmação por botão, quando disparar, o que fazer quando o cliente responde que não vai e como liberar a vaga automaticamente.

Ver como Markdown

Falta em consulta é o pior tipo de prejuízo: o horário não volta, e ninguém o ocupou. Em clínica, salão, oficina ou estúdio, a taxa de falta costuma ficar entre 15% e 30% — e boa parte disso é esquecimento, não desistência.

Lembrete no WhatsApp resolve a maior parte. Este artigo mostra o desenho completo, incluindo a parte que quase todo sistema deixa de fora: o que fazer quando a pessoa responde que não vai.

Dois disparos, não um

24 a 48 horas antes — com pedido de confirmação. É o que dá tempo de remarcar e de oferecer a vaga a outra pessoa.

Na manhã do dia — curto, só relembrando.

O primeiro é o que recupera receita. O segundo é o que evita o atraso.

O lembrete com confirmação

await wa.message.send({
  type: TypeMessage.BUTTON_REPLY,
  body: {
    to: paciente.whatsapp,
    text:
      `Oi, ${paciente.nome}! Lembrando da sua consulta:\n\n` +
      `📅 ${data} às ${hora}\n` +
      `👤 ${profissional}\n` +
      `📍 ${endereco}\n\n` +
      `Você confirma?`,
    footer: 'Toque em uma opção',
    buttons: [
      { id: `conf:${agendamentoId}`, text: 'Confirmar' },
      { id: `rema:${agendamentoId}`, text: 'Remarcar' },
      { id: `canc:${agendamentoId}`, text: 'Não vou poder' },
    ],
  },
});

Os botões carregam o id do agendamento. Isso é o que torna a automação confiável: quando a resposta chega, você sabe exatamente a qual compromisso ela se refere, sem interpretar texto livre e sem adivinhar por "última mensagem enviada".

O terceiro botão é o que mais gente esquece de colocar. Sem ele, quem não pode ir simplesmente não responde — e você perde a informação mais valiosa das três.

Tratar a resposta

async function aoReceberBotao(msg) {
  const [acao, id] = msg.button.id.split(':');
  const ag = await db.agendamentos.buscar(id);
  if (!ag) return;

  if (acao === 'conf') {
    await db.agendamentos.confirmar(id);
    return responder(msg.from, `Confirmado! Te esperamos ${ag.dataFmt} às ${ag.horaFmt}. 😊`);
  }

  if (acao === 'canc') {
    await db.agendamentos.cancelar(id);
    await responder(msg.from, 'Tudo bem, cancelado. Quando quiser remarcar é só chamar aqui.');
    // O passo que transforma cortesia em receita
    return oferecerVagaParaListaDeEspera(ag);
  }

  if (acao === 'rema') {
    await db.agendamentos.marcarParaRemarcar(id);
    await responder(msg.from, 'Sem problema! Um instante que já te passo os horários.');
    return notificarRecepcao(ag, 'quer remarcar');
  }
}

Liberar a vaga: onde está o dinheiro

Cancelamento avisado com 24 horas costuma ser preenchido — se alguém for avisado a tempo.

async function oferecerVagaParaListaDeEspera(ag) {
  const espera = await db.listaEspera.para(ag.profissionalId, ag.data);
  if (!espera.length) return notificarRecepcao(ag, 'vaga aberta, sem lista de espera');

  // Um por vez, por ordem. Oferecer a cinco pessoas a mesma vaga
  // gera cinco confirmações e quatro pessoas frustradas.
  const primeiro = espera[0];

  await wa.message.send({
    type: TypeMessage.BUTTON_REPLY,
    body: {
      to: primeiro.whatsapp,
      text: `Oi, ${primeiro.nome}! Abriu uma vaga:\n\n📅 ${ag.dataFmt} às ${ag.horaFmt}\n👤 ${ag.profissional}\n\nQuer ficar com ela?`,
      footer: 'A vaga fica reservada por 2 horas',
      buttons: [
        { id: `vaga:${ag.id}:${primeiro.id}`, text: 'Quero!' },
        { id: `vagan:${ag.id}:${primeiro.id}`, text: 'Agora não' },
      ],
    },
  });

  await db.listaEspera.marcarOfertado(primeiro.id, ag.id, { expiraEm: '2h' });
}

Um por vez. Oferecer a mesma vaga para cinco pessoas gera cinco confirmações e quatro clientes irritados. Com prazo de reserva e passagem automática para o próximo quando expira, a fila anda sozinha.

O agendador

// roda de hora em hora
async function enviarLembretes() {
  const amanha = await db.agendamentos.entre(
    addHours(new Date(), 24),
    addHours(new Date(), 25),
  );

  for (const ag of amanha) {
    if (ag.lembrete_24h_em) continue;         // já mandou
    if (!ag.paciente.whatsapp) continue;
    if (await estaEmOptOut(ag.paciente.whatsapp)) continue;

    await fila.add('lembrete', { agendamentoId: ag.id, tipo: '24h' }, {
      jobId: `lembrete:${ag.id}:24h`,          // não manda duas vezes
    });
  }
}

A janela de uma hora com o jobId determinístico evita o problema clássico do agendador: rodar duas vezes por causa de um deploy e mandar o lembrete em duplicidade.

Na API oficial: template

Lembrete parte de você, com a janela de 24 horas fechada — então precisa de template aprovado.

Categoria utilidade: a mensagem acompanha um compromisso que a pessoa marcou. É a categoria mais barata e a mais fácil de aprovar.

Botão de resposta rápida também é permitido em template. Submeta com os botões desde o começo — descobrir depois que o template aprovado não tem botão significa criar outro e esperar de novo.

Na API não oficial não há template nem janela; os botões saem direto.

O que medir

NúmeroO que diz
Taxa de confirmaçãoQuantos respondem ao lembrete
Taxa de falta antes × depoisO número que justifica o módulo
Cancelamentos com antecedênciaQuantos avisaram a tempo
Vagas repreenchidasA receita recuperada

O último é o que fecha a venda do módulo. "Reduzimos a falta de 22% para 9%" é bom; "recuperamos 34 horários no mês passado" é melhor, porque tem valor em reais.

Como acompanhar está em métricas de campanha.

Serve para qualquer agenda

O padrão não é de clínica — é de agenda:

NegócioAntecedênciaDetalhe
Clínica e consultório24–48hLevar documento, jejum
Salão e barbearia24hDuração do serviço
Oficina24hDeixar ou aguardar
Assistência técnicaNa vésperaJanela de horário
Aula particular24hLink, se for on-line

Muda o vocabulário e o prazo. A estrutura é a mesma, e é por isso que ela vira um módulo só, reaproveitado em cada cliente novo — que é o argumento inteiro de entregar o mesmo código em todo projeto.

Conclusão

Lembrete de agendamento é dos módulos mais fáceis de justificar: o cliente final quer receber, o negócio recupera horário perdido, e o retorno aparece em uma semana de uso.

O que separa o lembrete que funciona do que só avisa são duas coisas: o botão "não vou poder", que captura a informação valiosa, e a lista de espera automática, que transforma o cancelamento em receita em vez de buraco na agenda.

Pronto para automatizar seu WhatsApp?

Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.

Começar grátis

Perguntas frequentes

Quando enviar o lembrete de agendamento?+

Dois disparos funcionam melhor que um. O primeiro entre 24 e 48 horas antes, com pedido de confirmação — é o que dá tempo de remarcar e de oferecer a vaga a outra pessoa. O segundo na manhã do dia, curto, apenas relembrando horário e endereço.

Como fazer o cliente confirmar pelo WhatsApp?+

Com botões de resposta rápida: confirmar, remarcar e cancelar. O botão devolve um identificador fixo, então o seu sistema atualiza o agendamento sem precisar interpretar texto livre — que é onde a automação costuma errar.

Lembrete de agendamento precisa de template na API oficial?+

Sim, porque a mensagem parte de você com a janela de 24 horas fechada. A boa notícia é que lembrete é categoria utilidade, a mais barata e a mais fácil de aprovar, já que acompanha um compromisso que a pessoa marcou.

O que fazer quando o cliente responde que não vai?+

Liberar a vaga imediatamente e, se houver lista de espera, oferecer o horário a quem está aguardando. É aí que o lembrete deixa de ser cortesia e vira receita: um cancelamento avisado com 24 horas de antecedência costuma ser preenchido.

Isso funciona fora de clínicas?+

Sim. Qualquer negócio com agenda tem o mesmo problema: salão, oficina, estúdio, consultoria, assistência técnica, aula particular. O padrão é idêntico — muda o vocabulário da mensagem e o prazo de antecedência.

Continue lendo