Raphael Serafim· Publicado el 10 de septiembre de 2026· 9 min de lectura

Recordatorio de citas por WhatsApp: cómo reducir el ausentismo en clínicas y servicios

Una falta a una cita es un turno perdido que no vuelve. Cómo armar el recordatorio con confirmación por botón, cuándo enviarlo, qué hacer cuando el cliente responde que no va y cómo liberar el turno automáticamente.

Ver como Markdown

Una falta a una cita es el peor tipo de pérdida: el turno no vuelve, y nadie lo ocupó. En una clínica, una peluquería, un taller o un estudio, el ausentismo suele ubicarse entre el 15% y el 30% — y buena parte es olvido, no desistimiento.

El recordatorio por WhatsApp resuelve la mayor parte. Este artículo muestra el diseño completo, incluida la parte que casi todo sistema deja afuera: qué hacer cuando la persona responde que no va.

Dos envíos, no uno

24 a 48 horas antes — pidiendo confirmación. Es lo que da tiempo de reprogramar y de ofrecer el turno a otra persona.

La mañana del día — corto, solo recordando.

El primero es el que recupera ingresos. El segundo es el que evita la demora.

El recordatorio con confirmación

javascript
await wa.message.send({
  type: TypeMessage.BUTTON_REPLY,
  body: {
    to: paciente.whatsapp,
    text:
      `¡Hola, ${paciente.nombre}! Te recuerdo tu turno:\n\n` +
      `📅 ${fecha} a las ${hora}\n` +
      `👤 ${profesional}\n` +
      `📍 ${direccion}\n\n` +
      `¿Lo confirmas?`,
    footer: 'Toca una opción',
    buttons: [
      { id: `conf:${citaId}`, text: 'Confirmar' },
      { id: `repr:${citaId}`, text: 'Reprogramar' },
      { id: `canc:${citaId}`, text: 'No voy a poder' },
    ],
  },
});

Los botones llevan el id de la cita. Eso es lo que hace confiable la automatización: cuando llega la respuesta, sabes exactamente a qué compromiso se refiere, sin interpretar texto libre ni adivinar por "el último mensaje enviado".

El tercer botón es el que más gente olvida poner. Sin él, quien no puede ir simplemente no responde — y pierdes la información más valiosa de las tres.

Tratar la respuesta

javascript
async function alRecibirBoton(msg) {
  const [accion, id] = msg.button.id.split(':');
  const cita = await db.citas.buscar(id);
  if (!cita) return;

  if (accion === 'conf') {
    await db.citas.confirmar(id);
    return responder(msg.from, `¡Confirmado! Te esperamos el ${cita.fechaFmt} a las ${cita.horaFmt}. 😊`);
  }

  if (accion === 'canc') {
    await db.citas.cancelar(id);
    await responder(msg.from, 'Sin problema, queda cancelado. Cuando quieras reprogramar, escríbeme.');
    // El paso que convierte la cortesía en ingreso
    return ofrecerTurnoAListaDeEspera(cita);
  }

  if (accion === 'repr') {
    await db.citas.marcarParaReprogramar(id);
    await responder(msg.from, '¡Claro! Un momento y te paso los horarios disponibles.');
    return notificarRecepcion(cita, 'quiere reprogramar');
  }
}

Liberar el turno: donde está el dinero

Una cancelación avisada con 24 horas suele llenarse — si alguien se entera a tiempo.

javascript
async function ofrecerTurnoAListaDeEspera(cita) {
  const espera = await db.listaEspera.para(cita.profesionalId, cita.fecha);
  if (!espera.length) return notificarRecepcion(cita, 'turno libre, sin lista de espera');

  // De a uno, por orden. Ofrecerle el mismo turno a cinco personas
  // genera cinco confirmaciones y cuatro personas frustradas.
  const primero = espera[0];

  await wa.message.send({
    type: TypeMessage.BUTTON_REPLY,
    body: {
      to: primero.whatsapp,
      text: `¡Hola, ${primero.nombre}! Se liberó un turno:\n\n📅 ${cita.fechaFmt} a las ${cita.horaFmt}\n👤 ${cita.profesional}\n\n¿Lo quieres?`,
      footer: 'El turno queda reservado por 2 horas',
      buttons: [
        { id: `turno:${cita.id}:${primero.id}`,  text: '¡Lo quiero!' },
        { id: `turnon:${cita.id}:${primero.id}`, text: 'Ahora no' },
      ],
    },
  });

  await db.listaEspera.marcarOfrecido(primero.id, cita.id, { expiraEn: '2h' });
}

De a uno. Ofrecer el mismo turno a cinco personas genera cinco confirmaciones y cuatro clientes molestos. Con plazo de reserva y pase automático al siguiente cuando expira, la fila avanza sola.

El programador

javascript
// corre cada hora
async function enviarRecordatorios() {
  const manana = await db.citas.entre(
    addHours(new Date(), 24),
    addHours(new Date(), 25),
  );

  for (const cita of manana) {
    if (cita.recordatorio_24h_en) continue;      // ya se envió
    if (!cita.paciente.whatsapp) continue;
    if (await estaEnOptOut(cita.paciente.whatsapp)) continue;

    await cola.add('recordatorio', { citaId: cita.id, tipo: '24h' }, {
      jobId: `recordatorio:${cita.id}:24h`,       // no envía dos veces
    });
  }
}

La ventana de una hora con el jobId determinista evita el problema clásico del programador: correr dos veces por un despliegue y mandar el recordatorio duplicado.

En la API oficial: plantilla

El recordatorio sale de ti, con la ventana de 24 horas cerrada — así que necesita plantilla aprobada.

Categoría utilidad: el mensaje acompaña un compromiso que la persona agendó. Es la más barata y la más fácil de aprobar.

Los botones de respuesta rápida también se permiten en plantillas. Sométela con los botones desde el comienzo — descubrir después que la plantilla aprobada no los tiene significa crear otra y esperar de nuevo.

Qué medir

NúmeroQué dice
Tasa de confirmaciónCuántos responden al recordatorio
Ausentismo antes × despuésEl número que justifica el módulo
Cancelaciones con anticipaciónCuántos avisaron a tiempo
Turnos recuperadosEl ingreso rescatado

El último es el que cierra la venta del módulo. "Bajamos el ausentismo del 22% al 9%" está bien; "recuperamos 34 turnos el mes pasado" está mejor, porque tiene valor en dinero.

Cómo seguirlo está en métricas de campaña.

Sirve para cualquier agenda

El patrón no es de clínica — es de agenda:

NegocioAnticipaciónDetalle
Clínica y consultorio24–48 hTraer documento, ayuno
Peluquería y barbería24 hDuración del servicio
Taller24 hDejar el vehículo o esperar
Servicio técnicoLa vísperaFranja horaria
Clase particular24 hEnlace, si es en línea

Cambian el vocabulario y el plazo. La estructura es la misma, y por eso se convierte en un solo módulo, reutilizado en cada cliente nuevo.

Conclusión

El recordatorio de citas es de los módulos más fáciles de justificar: el cliente final quiere recibirlo, el negocio recupera turnos perdidos, y el retorno aparece en una semana de uso.

Lo que separa el recordatorio que funciona del que solo avisa son dos cosas: el botón "no voy a poder", que captura la información valiosa, y la lista de espera automática, que convierte la cancelación en ingreso en vez de un hueco en la agenda.

¿Listo para automatizar tu WhatsApp?

Crea tu cuenta gratis y empieza a enviar mensajes por la API en minutos.

Empezar gratis

Preguntas frecuentes

¿Cuándo enviar el recordatorio de una cita?+

Dos envíos funcionan mejor que uno. El primero entre 24 y 48 horas antes, pidiendo confirmación — es el que da tiempo de reprogramar y de ofrecerle el turno a otra persona. El segundo la mañana del día, corto, solo recordando horario y dirección.

¿Cómo hago que el cliente confirme por WhatsApp?+

Con botones de respuesta rápida: confirmar, reprogramar y cancelar. El botón devuelve un identificador fijo, así que tu sistema actualiza la cita sin tener que interpretar texto libre, que es donde la automatización suele fallar.

¿El recordatorio necesita plantilla en la API oficial?+

Sí, porque el mensaje sale de ti con la ventana de 24 horas cerrada. La buena noticia es que un recordatorio es categoría utilidad, la más barata y la más fácil de aprobar, ya que acompaña un compromiso que la persona agendó.

¿Qué hago cuando el cliente responde que no va?+

Liberar el turno de inmediato y, si hay lista de espera, ofrecérselo a quien está aguardando. Ahí el recordatorio deja de ser cortesía y se vuelve ingreso: una cancelación avisada con 24 horas de anticipación suele llenarse.

¿Esto sirve fuera de las clínicas?+

Sí. Cualquier negocio con agenda tiene el mismo problema: peluquería, taller, estudio, consultoría, servicio técnico, clases particulares. El patrón es idéntico — cambian el vocabulario del mensaje y la anticipación.

Sigue leyendo