Referencia de eventos de webhooks
Esquemas detallados de payloads y JSON de ejemplo para cada tipo de evento de webhook de ZenFlip, incluyendo cabeceras de solicitud y un ejemplo de verificación de firma en Node.js.
- Envolvente común
- Cabeceras de solicitud
- publication.created
- Esquema del payload
- Ejemplo de payload
- publication.converted
- Esquema del payload
- Ejemplo de payload (éxito)
- Ejemplo de payload (fallo)
- publication.deleted
- Esquema del payload
- Ejemplo de payload
- lead.captured
- Esquema del payload
- Ejemplo de payload
- team.member_joined
- Esquema del payload
- Ejemplo de payload
- export.completed
- Esquema del payload
- Ejemplo de payload
- Verificación de firma (ejemplo completo)
- Mejores prácticas
Referencia de eventos de webhooks
Este documento proporciona el esquema completo del payload y JSON de ejemplo para cada tipo de evento de webhook soportado por ZenFlip. Todos los payloads siguen la misma estructura de nivel superior.
Envolvente común
Cada payload de webhook comparte esta estructura:
Cabeceras de solicitud
Cada solicitud HTTP POST de webhook incluye estas cabeceras:
Cabecera | Valor de ejemplo |
|
|
|
|
|
|
|
|
|
|
publication.created
Se dispara cuando se crea una nueva publicación en la organización.
Esquema del payload
Campo | Tipo | Descripción |
| string | UUID de la nueva publicación |
| string | Título de la publicación |
| string | Slug compatible con URL |
| string | Estado inicial (siempre |
| string | UUID del usuario que la creó |
Ejemplo de payload
publication.converted
Se dispara cuando un trabajo de conversión de PDF se completa, ya sea con éxito o con error.
Esquema del payload
Campo | Tipo | Descripción |
| string | UUID de la publicación |
| string | Título de la publicación |
| string | UUID de la versión que fue convertida |
| integer | Número de versión secuencial |
| string | Resultado de la conversión: |
| integer | Número de páginas generadas (0 si falló) |
| string | Mensaje de error (null si fue exitoso) |
| string | Marca de tiempo ISO 8601 de la finalización |
Ejemplo de payload (éxito)
Ejemplo de payload (fallo)
publication.deleted
Se dispara cuando una publicación es eliminada permanentemente.
Esquema del payload
Campo | Tipo | Descripción |
| string | UUID de la publicación eliminada |
| string | Título en el momento de la eliminación |
| string | Slug en el momento de la eliminación |
| string | UUID del usuario que la eliminó |
Ejemplo de payload
lead.captured
Se dispara cuando un visitante envía un formulario de captura de leads en una publicación.
Esquema del payload
Campo | Tipo | Descripción |
| string | UUID del lead capturado |
| string | UUID de la publicación |
| string | Dirección de email enviada |
| string | Nombre completo (null si no se recopiló) |
| string | Nombre de la empresa (null si no se recopiló) |
| string | Número de teléfono (null si no se recopiló) |
| object | Pares clave-valor de campos personalizados |
| integer | Página donde se activó el formulario |
| string | Método de activación: |
| string | Marca de tiempo ISO 8601 del envío |
Ejemplo de payload
team.member_joined
Se dispara cuando un miembro del equipo acepta su invitación y se une a la organización.
Esquema del payload
Campo | Tipo | Descripción |
| string | UUID del nuevo miembro del equipo |
| string | Dirección de email del miembro |
| string | Nombre para mostrar |
| string | Rol asignado: |
| string | UUID del usuario que envió la invitación |
| string | Marca de tiempo ISO 8601 de cuando se unió |
Ejemplo de payload
export.completed
Se dispara cuando un trabajo de exportación HTML o SCORM termina de procesarse.
Esquema del payload
Campo | Tipo | Descripción |
| string | UUID del trabajo de exportación |
| string | UUID de la publicación exportada |
| string | Formato de exportación: |
| string | Resultado: |
| string | URL pre-firmada para descargar la exportación (null si falló, expira en 24 horas) |
| integer | Tamaño del archivo de exportación en bytes (0 si falló) |
| string | Mensaje de error (null si fue exitoso) |
| string | Marca de tiempo ISO 8601 de la finalización |
Ejemplo de payload
Verificación de firma (ejemplo completo)
Aquí tienes un servidor completo en Node.js con Express que recibe y verifica webhooks de ZenFlip:
Mejores prácticas
Siempre verifica las firmas. Nunca confíes en un payload de webhook sin validar la cabecera
X-ZenFlip-Signature.Responde rápidamente. Devuelve un estado
200inmediatamente y procesa el evento de forma asíncrona. Las entregas de webhooks tienen un tiempo límite de 10 segundos.Deduplica por ID de entrega. Almacena los valores
idprocesados y omite los duplicados. Los reintentos pueden causar que el mismo evento se entregue más de una vez.Usa endpoints HTTPS. ZenFlip solo envía webhooks a URLs que usen HTTPS.
Gestiona los fallos con elegancia. Si un servicio posterior no está disponible, encola el evento para procesamiento posterior en lugar de devolver un estado de error.