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.
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úmero | O que diz |
|---|---|
| Taxa de confirmação | Quantos respondem ao lembrete |
| Taxa de falta antes × depois | O número que justifica o módulo |
| Cancelamentos com antecedência | Quantos avisaram a tempo |
| Vagas repreenchidas | A 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ócio | Antecedência | Detalhe |
|---|---|---|
| Clínica e consultório | 24–48h | Levar documento, jejum |
| Salão e barbearia | 24h | Duração do serviço |
| Oficina | 24h | Deixar ou aguardar |
| Assistência técnica | Na véspera | Janela de horário |
| Aula particular | 24h | Link, 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átisPerguntas 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
Como criar um chatbot de IA com a API da OpenAI para responder no WhatsApp
Um webhook, uma chamada à API da OpenAI e uma resposta pela WAME API: o código completo de um chatbot de IA que atende no WhatsApp, Instagram e Messenger. Com memória por contato, controle de custo e o que fazer quando a IA não deve responder.
Cobrança por Pix dentro do WhatsApp pela API: como enviar e o que muda na conversão
Mandar o código Pix no WhatsApp resolve o pior ponto da cobrança digital: o cliente não precisa sair do app. Como enviar a cobrança pela API, tratar a confirmação e evitar os erros que transformam a facilidade em suporte.
Erros da API do WhatsApp: o que cada um significa e como tratar
A mensagem não saiu e o log diz apenas 'erro ao enviar'. Os erros que você vai encontrar de verdade — janela fechada, número inválido, template não aprovado, limite atingido, instância caída — e o tratamento certo para cada um.