Confirmación es el reto diario de recepción: citas que entran por Calendly, pacientes que no confirman y huecos que cuestan dinero. Un pipeline bien armado entre Calendly → CRM → WhatsApp reduce ausencias, estandariza mensajes y libera tiempo del teléfono.
En este how-to verás, paso a paso, cómo enlazar el webhook de Calendly, normalizar datos en el CRM y orquestar mensajes de confirmación y reconfirmación por WhatsApp usando automatización (p. ej., Zapier/Make). El resultado: menos “no-shows”, más control y reportes claros para tu día a día.
Nota: respeta la privacidad y las normativas locales. Esto no es asesoría legal.
Resumen accionable
- Conecta Calendly vía webhook para recibir cada evento en tiempo real (creación, reprogramación, cancelación).
- Normaliza los datos en el CRM con un esquema de cita estándar y deduplicación por
id_cita. - Define triggers: confirmación inmediata, recordatorio T-24h y reconfirmación T-4h si no hubo respuesta.
- Usa filtros/paths para diferenciar nuevas vs. reprogramadas vs. canceladas.
- Envía WhatsApp con plantillas y variables; captura respuesta (Sí/No) y actualiza el estado en el CRM.
- Implementa idempotencia, reintentos y logs para una automatización robusta.
- Configura alertas a recepción cuando hay silencio o dudas del paciente.
- Cierra el ciclo con métricas: tasa de confirmación, reconfirmación y “no-show”.
Webhook
El webhook es el punto de entrada. Cuando alguien agenda en Calendly, el sistema dispara un POST con los datos de la cita. Aquí defines la seguridad, los campos y la lógica de reintentos. Evita leer la agenda por lotes; el push en tiempo real reduce latencia y errores.
Qué necesitas
- URL receptora (de tu herramienta de automatización o un endpoint propio).
- Verificación/secret para asegurar que el evento proviene de Calendly.
- Mapeo de eventos:
event.created,event.rescheduled,event.canceled,invitee.no_show(si lo gestionas manualmente desde el CRM).
Campos mínimos a capturar (estándar de agenda)
| id_cita | fecha_hora_inicio (ISO) | zona_horaria | paciente_nombre | paciente_contacto | profesional | servicio | estado | origen_lead | consentimiento |
|---|---|---|---|---|---|---|---|---|---|
| 8f2c… | 2025-11-03T14:00:00 | America/Sao_Paulo | Ana López | +55 11… / email | Dr. Silva | Consulta inicial | pendiente | Calendly | true/false |
Buenas prácticas
- Idempotencia: usa
id_cita(ouuiddel evento) como clave única para evitar duplicados si Calendly reintenta la entrega. - Reintentos: responde 2xx solo al guardar; si falla el CRM, devuelve 4xx/5xx para que el emisor reintente.
- Normalización: convierte siempre a ISO 8601 y fija la
zona_horaria. - Logs: guarda payloads y respuestas (sin datos sensibles innecesarios).
Diagrama (visión general)
[Calendly Event]
|
v
[Webhook Receiver] --valida--> [Normaliza datos] --upsert--> [CRM]
\
\--enqueue--> [Orquestador de Mensajes]
Tras asegurar que el webhook persiste bien, pasamos al cerebro operativo: el CRM.
CRM
El CRM es tu fuente de verdad. Aquí viven los estados de la cita, las marcas de consentimiento y el histórico de interacción. Una buena estructura permite automatizar sin romper procesos manuales de recepción.
Empieza por un upsert (insertar si no existe, actualizar si existe) usando id_cita. Esto garantiza idempotencia y te deja registrar cambios (p. ej., reprogramación, cancelación). A continuación, define estados claros: pendiente, confirmada, reconfirmar, cancelada, no_show.
Flujo recomendado
- Upsert de la cita con todos los campos estándar.
- Marcas:
consentimiento: imprescindible antes de WhatsApp.opt_out: si el paciente pide no recibir mensajes.
- Histórico:
ultimo_mensaje_tipo(confirmación, recordatorio, reconfirmación).ultimo_mensaje_ts(timestamp).
- Reglas:
- Si
estado = cancelada→ romper cualquier cadena de recordatorios. - Si
profesionalcambia → notificar a recepción.
- Si
Triggers en el CRM
- On Create (T0): dispara confirmación inicial por WhatsApp.
- Scheduled Check (cron): a T-24h y T-4h revisa quién sigue en
pendientepara enviar recordatorio/reconfirmación. - On Reply: cuando el paciente responde, actualiza
estadoy levanta alertas si es “No”.
Filtros/paths
- Path A (nuevas): enviar confirmación y link para cambiar/cancelar.
- Path B (reprogramadas): destacar nueva hora y pedir reconfirmación.
- Path C (canceladas): mensaje corto de cancelación y oferta de reagendar.
Esta base permite que WhatsApp trabaje con mensajes consistentes y medibles.
Mensajes
WhatsApp es el canal con mejor lectura. La clave está en las plantillas (texto preaprobado) y en la gestión de respuestas. Procura un tono claro, breve y humano; y evita información clínica sensible.
Nota: respeta la privacidad y las normativas locales. Esto no es asesoría legal.
Plantillas sugeridas (variables entre llaves)
- Confirmación (T0)
“Hola, {paciente_nombre}. Soy {clínica}. Tu cita de {servicio} con {profesional} es el {fecha_local} a las {hora_local}.
¿Puedes confirmar? Responde 1 para Sí, 2 para Reprogramar, 3 para Cancelar.” - Recordatorio (T-24h)
“Recordatorio: mañana a las {hora_local} te esperamos para {servicio}. Responde 1 para confirmar o 2 si necesitas mover la cita.” - Reconfirmación (T-4h)
“Último toque: tu cita hoy a las {hora_local}. ¿Confirmas asistencia? 1 Sí / 2 Reprogramar.” - Cancelación
“Tu cita ha sido cancelada. Si deseas agendar nuevamente, responde AGENDAR.”
Lógica de orquestación
- Recepción de respuesta: interpreta
1/2/3o palabras clave (“sí”, “no”, “agendar”).1→estado = confirmada; registra timestamp.2→ envía link de reprogramación;estado = reconfirmarhasta que haya nueva hora.3→estado = canceladay marca motivo si se provee.
- Silencio: si no hay respuesta a T-24h, agenda T-4h; si sigue sin respuesta a T-2h, crea alerta para llamada manual.
- Consentimiento: si
consentimiento = false, no envíes WhatsApp. Alternativas: email o SMS.
Confiabilidad
- Idempotencia de mensajes: usa una
message_keycompuesta (id_cita+tipo_mensaje+ventana) para no duplicar envíos si hay reintentos. - Reintentos: backoff exponencial (p. ej., 1m, 5m, 15m) ante errores 5xx del proveedor.
- Logs/alertas: guarda
message_id, estado de entrega (enviado, entregado, leído) y dispara alerta si5xxsostenidos > N minutos.
Mini-diagrama de orquestación
[CRM cita pendiente]
|
v
[Motor de mensajes] --plantilla--> [WhatsApp Provider] --entrega--> [Paciente]
| |
|<------------------- webhook de respuesta --------------|
v
[Actualiza estado CRM] --si silencio--> [Tareas recepción]
Tras implementar, habrás reducido fricción sin perder el toque humano gracias a la intervención de recepción cuando se detecta silencio o intención de reprogramar.
Exceções
Siempre habrá casos que salen del carril. Define paths claros para evitar bloqueos y sorpresas.
Primero, describe 1–2 párrafos antes de las listas. Las excepciones típicas vienen de datos incompletos, cambios de última hora del profesional y errores de entrega de WhatsApp. Un buen sistema detecta, marca y direcciona a recepción con contexto para resolver rápido. En especial, maneja horarios y zonas para pacientes de otras ciudades/países.
Catálogo de excepciones y manejo
- Número inválido / Opt-out: marca
opt_out = true; cambia a email/SMS; notifica a recepción. - Cambio de profesional/servicio: regenera mensaje resaltando la novedad; solicita reconfirmación explícita.
- Reprogramación múltiple: tras N intentos en 30 días, etiqueta contacto como “baja prioridad” y ofrece alternativa (p. ej., lista de espera).
- Choque horario (time zone): recalcula hora local del paciente; si hay inconsistencia, alerta manual.
- WhatsApp caído: conmutación a SMS; registra incidente y reintenta luego.
- No-show reportado: cambia a
no_show; dispara encuesta breve y bloquea nuevos recordatorios para esa cita.
Después de mapear estas excepciones, vuelve a probar el flujo principal con datos reales para asegurar que ninguna regla colisione con los triggers de confirmación y reconfirmación.
Errores comunes
- Depender solo del email cuando el paciente ya prefiere WhatsApp.
- No unificar
id_cita, causando duplicados y mensajes repetidos. - Enviar mensajes fuera de horario razonable (sin ventana local).
- Ignorar el consentimiento y las políticas de mensajería.
- No separar recordatorio de reconfirmación, perdiendo señal de intención.
- Falta de alertas ante silencio: nadie llama y el hueco queda vacío.
Un pipeline sólido combina automatización con supervisión: la máquina hace lo repetitivo, recepción interviene donde agrega valor (dudas, excepciones, empatía).
Checklist de pruebas (versión resumida del asset)
- Webhook entrega eventos
created/rescheduled/canceledy valida secret. - CRM upsert por
id_citacon todos los campos estándar. - Estados cambian correctamente con respuestas 1/2/3 y con reprogramaciones.
- Temporizadores ejecutan T-24h y T-4h según zona horaria del paciente.
- Plantillas insertan variables {nombre, servicio, fecha, hora}.
- Idempotencia evita mensajes duplicados por reintentos.
- Logs capturan
message_id+ delivery; alertas ante silencio a T-2h. - Excepciones: opt-out, número inválido, caídas del proveedor y no-show.
- Métricas: tasa de confirmación, reconfirmación y ausencias por profesional/servicio.
FAQ
1) ¿Puedo usar Zapier para todo el flujo?
Sí. Con un webhook de entrada, filtros/paths y acciones de WhatsApp (vía proveedor compatible), cubres confirmación, recordatorios y reconfirmación.
2) ¿Cómo manejo pacientes internacionales?
Convierte siempre a ISO 8601, guarda zona horaria y calcula la hora local antes de enviar. Añade validación de número con prefijo internacional.
3) ¿Qué hago si el paciente responde con texto libre?
Implementa reglas simples (regex: “sí”, “no”, “cambiar”, “reprogramar”). Si no hay coincidencia, crea tarea para llamada manual.
4) ¿Qué métricas debo mirar cada semana?
Confirmación T0, reconfirmación T-4h, “no-show”, y tiempo medio de respuesta. Segmenta por profesional y servicio.
5) ¿Es necesario el consentimiento explícito para WhatsApp?
Sí, guarda consentimiento y ofrece opt-out. Ajusta plantillas a la normativa local.
