Apunta BugCapturer a cualquier endpoint tuyo y cada informe llega como payload JSON firmado y versionado — ideal para servicios propios, colas y herramientas internas.
La estructura de abajo está garantizada en la versión 1. Se añaden campos, pero nunca se renombran en silencio.
| Campo | Tipo | Descripción |
|---|---|---|
| event | string | Nombre del evento — share.created para un informe, test para el botón de prueba |
| schema_version | number | Versión del esquema, actualmente 1 — compruébala antes de parsear |
| share.report_url | string | Enlace público al informe completo |
| report.console_errors | array | Mensajes de error de consola con su origen, hasta 30 entradas |
| report.network_errors | array | Peticiones fallidas con método, URL y estado, hasta 30 entradas |
| report.*_errors_count | number | Recuento de errores — misma longitud que los dos arrays de arriba |
| reporter | object | La identidad que envía tu sitio (name / email / uid); cadenas vacías si es anónimo |
Cada petición va firmada con un secreto que tú controlas, para que tu endpoint pueda rechazar lo falsificado.
| Cabecera de firma | x-bugcapturer-signature |
|---|---|
| Algoritmo | HMAC-SHA256 sobre el cuerpo sin procesar de la petición |
| Secreto | Se muestra una sola vez al crear la integración |
| Comparación | Usa una comparación de tiempo constante |
const crypto = require('crypto');
const expected = crypto
.createHmac('sha256', process.env.BC_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
const received = req.headers['x-bugcapturer-signature'];
crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(received)
);
Los webhooks fallan por motivos aburridos: un despliegue, un reinicio, una red mala. BugCapturer cuenta con ello.
Las entregas fallidas se reintentan con backoff antes de marcarse como fallidas.
Un endpoint que falla de forma continua se pausa automáticamente y te avisamos por correo.
Cada intento y su respuesta quedan registrados, para depurar sin adivinar.
Vuelve a enviar a mano una entrega fallida cuando tu endpoint se recupere.