Point BugCapturer at any endpoint you own and every report arrives as a signed, versioned JSON payload β ideal for custom services, queues and internal tooling.
The shape below is guaranteed for version 1. New fields are added, never silently renamed.
| Field | Type | Description |
|---|---|---|
| event | string | Event name β share.created for a report, test for the check button |
| schema_version | number | Schema version, currently 1 β check this before parsing |
| share.report_url | string | Public link to the full report |
| report.console_errors | array | Console error messages with their source, up to 30 entries |
| report.network_errors | array | Failed requests with method, url and status, up to 30 entries |
| report.*_errors_count | number | Error counts β same length as the two arrays above |
| reporter | object | The identity your site passed in (name / email / uid); empty strings when anonymous |
Every request is signed with a secret you control, so your endpoint can reject anything forged.
| Signature header | x-bugcapturer-signature |
|---|---|
| Algorithm | HMAC-SHA256 over the raw request body |
| Secret | Shown once when the integration is created |
| Comparison | Use a constant-time comparison |
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)
);
Webhooks fail for boring reasons β a deploy, a restart, a bad network. BugCapturer assumes that.
Failed deliveries are retried with backoff before being recorded as failed.
An endpoint that keeps failing is paused automatically and you are emailed.
Each attempt and its response is recorded so you can debug without guessing.
Re-send a failed delivery by hand once your endpoint is healthy again.