Cómo automatizar reservas de coworking sin ejecutar nada dos veces

Una automatización útil no es solo «cuando ocurre X, haz Y». Debe saber cuándo ejecutarse, qué condiciones siguen siendo ciertas y cómo demostrar que la misma acción no se repetirá.

Actualizado

Dos tipos de trigger que no son intercambiables

Un trigger de evento reacciona a algo que acaba de suceder: una reserva fue confirmada, un pago cambió de estado o un check-in terminó. Puede ejecutarse inmediatamente porque el evento ya contiene la identidad de la reserva.

Un trigger programado responde a una relación con el tiempo: 24 horas antes de la llegada, cada mañana o después de un vencimiento. Necesita buscar qué reservas cumplen la ventana en ese momento. Convertirlo en un retraso iniciado al crear la reserva falla cuando la fecha cambia o el proceso se reinicia.

La clave de idempotencia es el diseño

Los jobs se repiten. Un worker puede morir después de enviar un correo y antes de marcarlo como completado; el siguiente intento no sabe que el envío salió. Por eso cada ejecución necesita una clave estable, por ejemplo:

automation:{rule_id}:booking:{booking_id}:event:{event_key}

Antes de actuar, el sistema intenta registrar esa clave como única. Si ya existe, la acción fue solicitada anteriormente y no se repite. No basta con consultar «¿hay un correo parecido?»: dos reglas legítimas pueden enviar mensajes distintos sobre la misma reserva.

Las condiciones son filtros, no triggers

«Reserva confirmada» puede ser el trigger. «Pago pendiente», «canal directo» y «el cliente tiene email» son condiciones evaluadas justo antes de actuar. Separarlas evita crear decenas de eventos casi idénticos y permite explicar por qué una ejecución se omitió.

Calendario semanal de Boris con reservas entre salas de reuniones y puestos abiertos
Los triggers programados leen las mismas fechas que muestra el calendario; una regla solo es fiable si sus fechas también lo son.

Las reglas deben invocar servicios, no reimplementarlos

La acción «enviar invitación de check-in» debe llamar al mismo servicio que utiliza el botón manual. Ese servicio ya conoce el idioma, la plantilla, la caducidad del enlace y el historial. Copiar esa lógica dentro del motor de automatizaciones crea un segundo comportamiento que terminará divergiendo.

Las primeras reglas que merece la pena crear

  • Enviar confirmación cuando una reserva pasa a confirmada.
  • Recordar el pago cuando sigue pendiente cerca del vencimiento.
  • Enviar el enlace de check-in dentro de una ventana configurable.
  • Avisar al equipo cuando falla una acción obligatoria.
  • Solicitar feedback después de una reserva completada.

Antes de activar una regla

  • Define una clave de idempotencia que represente exactamente una intención.
  • Conserva trigger, condiciones, resultado y error en el historial.
  • Coloca las restricciones en condiciones, no en nuevos tipos de trigger.
  • Haz que la acción utilice el servicio real del producto.
  • Asegúrate de que los fallos aparezcan en una pantalla que alguien revise.