Envía informes a cualquier sitio
con un webhook firmado

Apunta BugCapturer a cualquier endpoint tuyo y cada informe llega como payload JSON firmado y versionado — ideal para servicios propios, colas y herramientas internas.

Un esquema estable y versionado

La estructura de abajo está garantizada en la versión 1. Se añaden campos, pero nunca se renombran en silencio.

CampoTipoDescripción
eventstringNombre del evento — share.created para un informe, test para el botón de prueba
schema_versionnumberVersión del esquema, actualmente 1 — compruébala antes de parsear
share.report_urlstringEnlace público al informe completo
report.console_errorsarrayMensajes de error de consola con su origen, hasta 30 entradas
report.network_errorsarrayPeticiones fallidas con método, URL y estado, hasta 30 entradas
report.*_errors_countnumberRecuento de errores — misma longitud que los dos arrays de arriba
reporterobjectLa identidad que envía tu sitio (name / email / uid); cadenas vacías si es anónimo

Verifica antes de confiar

Cada petición va firmada con un secreto que tú controlas, para que tu endpoint pueda rechazar lo falsificado.

Cabecera de firmax-bugcapturer-signature
AlgoritmoHMAC-SHA256 sobre el cuerpo sin procesar de la petición
SecretoSe muestra una sola vez al crear la integración
ComparaciónUsa una comparación de tiempo constante
verify.js
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)
);

Reintentos y registro de entregas

Los webhooks fallan por motivos aburridos: un despliegue, un reinicio, una red mala. BugCapturer cuenta con ello.

🔁

Reintentos automáticos

Las entregas fallidas se reintentan con backoff antes de marcarse como fallidas.

⏸️

Pausa automática

Un endpoint que falla de forma continua se pausa automáticamente y te avisamos por correo.

🧾

Registro de entregas

Cada intento y su respuesta quedan registrados, para depurar sin adivinar.

🧯

Reenvío manual

Vuelve a enviar a mano una entrega fallida cuando tu endpoint se recupere.