Skip to main content
FlowEstate envía webhooks cuando los leads, proyectos o unidades cambian. Los suscriptores registran una URL destino y un tipo de evento; FlowEstate distribuye requests POST firmados con cuerpo JSON. Para gestionar suscripciones programáticamente (crear, listar, eliminar), ver la Referencia API de webhooks. Esta página cubre lo que tu receptor necesita hacer una vez creada la suscripción.

Headers

Cada entrega incluye:

Body

data depende del evento:
  • Eventos lead.* llevan data.lead.
  • Eventos project.* llevan data.project.
  • Eventos unit.* llevan data.unit y data.project.
  • lead.note_added lleva data.leadId y data.note.
  • lead.communication_logged lleva data.leadId y data.communication.
Para la lista completa de eventos ver Enums.

Verificar la firma

Verifica siempre la firma antes de confiar en un payload. Cualquiera que conozca tu URL puede pegarle; solo FlowEstate tiene el secret.
Firma los bytes crudos del cuerpo. Re-serializar el JSON parseado va a producir una firma diferente porque el orden de las claves, los espacios y el formato de números pueden diferir.
El secret viene en la respuesta de POST /webhooks/subscriptions y se muestra solo una vez. Si lo pierdes, elimina la suscripción y crea una nueva.

Acuse de recibo

Devuelve cualquier status 2xx para acusar recibo. FlowEstate no lee el cuerpo de la respuesta — un 200 vacío está bien. Si tu handler hace trabajo pesado (llama otros APIs, escribe a una BD lenta), acusa primero, procesa después:
El timeout de entrega es de unos pocos segundos — handlers lentos provocan reintentos innecesarios.

Política de reintentos

Las entregas fallidas (error de red, timeout, o HTTP ≥ 400) se reintentan con este backoff: Después de cinco intentos fallidos la entrega se marca como failed y no se reintenta más. El header X-FlowEstate-Delivery se mantiene constante a través de los reintentos — úsalo como tu clave de idempotencia al procesar.

Prevención de bucles

Cuando escribes a FlowEstate vía este API REST, el webhook resultante se distribuye con X-FlowEstate-Source: api. Si tu receptor también escribe de vuelta a FlowEstate, descarta los eventos con source api para evitar un bucle infinito.
Los demás valores de source:
  • ui — cambio hecho por un usuario haciendo clic en el panel de FlowEstate.
  • system — cambio hecho por un worker interno (asignaciones, automatizaciones).
  • api — cambio hecho a través de este API REST (tus propias escrituras, plataformas partner).