Cómo recibir eventos de otro sistema en AppBO e iniciar un flujo de trabajo a partir de los datos que traen.
Trae tus herramientas a una llamada: lo conectamos, probamos cada campo en ambas direcciones y te lo entregamos documentado.
Agenda una llamadaUn webhook entrante es una URL que te da la plataforma y que un sistema externo llama cuando algo pasa de su lado. Del lado que envía está cualquier cosa capaz de hacer un HTTP POST: tu propia aplicación, un servicio de formularios, un procesador de pagos, una herramienta de agenda, un dispositivo IoT, un pipeline de CI, una plataforma de automatización. Del lado que recibe está un flujo de trabajo de AppBO que arranca en el momento en que llega la solicitud y puede leer los campos del cuerpo de la solicitud.
La razón para usar uno en lugar de la API es la dirección y la responsabilidad. Con la API, tu código es responsable de decidir cuándo actuar y de saber cuál es el estado actual de la plataforma. Con un webhook entrante, el sistema externo simplemente anuncia los hechos a medida que ocurren, y la lógica de automatización (buscar o crear el contacto, ramificar según un valor, enviar el mensaje, mover la oportunidad) vive dentro de la plataforma, donde alguien que no es desarrollador puede leerla y cambiarla. Esa división sobrevive a la rotación de personal mucho mejor que unas reglas de negocio enterradas en un proceso en segundo plano.
Los webhooks entrantes son la herramienta correcta cuando el evento de verdad tiene forma de evento: un pago se aprobó, un ticket se cerró, un envío salió del almacén, un prospecto llenó un formulario que alojas tú. Son la herramienta equivocada para cargas masivas de datos históricos, para todo lo que necesite una respuesta síncrona en el cuerpo de la respuesta y para los casos en que necesitas leer mucho estado de la plataforma antes de decidir: eso le corresponde a la API REST.
Content-Type: application/json; un cuerpo codificado como formulario o un encabezado que no coincide es la razón más común de que los campos aparezcan vacíos en el flujo.Escenario: una herramienta de reservas alojada fuera de la plataforma tiene que crear o actualizar el contacto en AppBO e iniciar una secuencia de recordatorios cada vez que se reserva una sesión.
session.booked, con un cuerpo JSON que contiene event_id, event_type, occurred_at, email, phone, full_name, session_start, practitioner y un campo shared_secret.shared_secret con el valor guardado. Coincide, así que la ejecución continúa; si no coincidiera, iría a una rama que termina el flujo.email venga incluido y que occurred_at esté dentro de la última hora. Los dos pasan.booking-tool y con session_start y practitioner escritos en campos personalizados.practitioner para elegir la plantilla de recordatorio correcta.session_start y envía un recordatorio por SMS.event_id que ya registró en el contacto y termina antes de que el email de confirmación se envíe por segunda vez.event_id nuevo y un session_start posterior; el flujo encuentra el contacto existente por email, actualiza el campo personalizado y el recordatorio se recalcula según la fecha nueva.El endpoint de un webhook entrante no es una tubería de entrada ilimitada, y las ejecuciones de flujos de trabajo son un recurso medido en la cuenta. Un emisor que dispara miles de eventos de golpe (un proceso por lotes nocturno, una carga de datos históricos, un ciclo descontrolado) puede ser limitado o puede consumir una parte sorprendente del presupuesto de ejecuciones de la cuenta. Limita del lado del emisor y nunca uses un webhook entrante como mecanismo de importación masiva.
La plataforma no elimina duplicados por ti. La mayoría de los emisores reintentan cuando se agota el tiempo de espera o ante cualquier respuesta que no sea 2xx, y muchos reintentan ante una respuesta que simplemente tardó demasiado aunque haya funcionado, así que el mismo evento va a llegar dos veces. Envía siempre un identificador de evento, regístralo en el contacto o en una tabla de consulta y revísalo en el primer paso de protección. Sin eso, los reintentos producen emails duplicados, oportunidades duplicadas y cobros duplicados en todo lo que el flujo toque después.
El disparador aprende la forma de los datos a partir de los ejemplos, así que un campo que no venía en tu ejemplo no se va a poder referenciar después. Incluye siempre las claves opcionales con valores vacíos en lugar de omitirlas. Los objetos anidados y las listas son incómodos de referenciar; aplánalos en el emisor. Los números que llegan como texto, las fechas en un formato inesperado y los teléfonos sin código de país son fallas de mapeo silenciosas que aparecen como campos vacíos o ramas que se saltan, no como errores.
Si la clave de identidad falta o no es consistente (email en unos eventos, teléfono en otros), un paso de buscar o crear va a crear un segundo contacto. Elige una clave, hazla obligatoria y rechaza los eventos que no la traigan en lugar de dejar que el flujo improvise.
Apunta el modo de prueba de tu emisor a un flujo en una subcuenta de prueba, nunca al flujo en vivo. Unos datos de prueba que llegan a un flujo en vivo con un teléfono real envían un mensaje real. Guarda las URL de prueba y de producción en entradas de secretos separadas y nómbralas sin ambigüedad.
La URL es lo único que hay entre tu flujo e internet abierto, y no es una firma. Agrega un secreto compartido en los datos y verifícalo en el primer paso. Cambia la URL del webhook si alguna vez se sube a un repositorio, se pega en un ticket o se comparte con un proveedor que se va, y recuerda que cambiarla significa volver a configurar a cada emisor.
Conectamos la integración, mapeamos los campos, probamos ambas direcciones y te la entregamos con los procedimientos (SOP) que tu equipo necesita para operarla.
Agenda una llamada