Custom Webhooks
Send Abrova Trace error data to any HTTP endpoint via custom webhooks. Integrate with your incident tools, internal systems, or anything that accepts POST requests.
Send error data to any HTTP endpoint via custom webhooks. Integrate with your incident tools, internal systems, or anything that accepts POST requests.
- An HTTP endpoint that accepts POST requests
- (Optional) A signing secret to verify requests
- Owner or admin access to the project
Which channels your project can use is shown on the Trace → Integrations page in Abrova Console.
Set Up Webhook Integration#
- In Abrova Console, open Trace → Integrations (integrations belong to the selected project)
- Click "Add integration" and choose Webhook (or "Connect" on the Webhook card)
- Enter a Name and fill in the configuration fields
- Click "Save channel" — or "Save and send test" to save and verify it
| Option | Type | Required | Description |
|---|---|---|---|
| Name | string | Yes | Name for identification (e.g., "Incident bridge") |
| URL | string | Yes | Your endpoint URL. Must start with https:// and be reachable on the public internet (e.g., https://your-server.com/api/abrova-trace-webhook) |
| Signing secret | string | No | Used to sign each request so your server can verify it |
URL rules
- The URL must use
https://and must not contain a user name or password. - The host must be a public address. Private, loopback and other internal addresses (for example
localhost,10.x.x.x,192.168.x.x) are refused when you save and are never called. - Redirects are not followed: if your endpoint answers with a
3xx, the delivery counts as failed. Enter the final URL.
After saving
Managing integrations (add, edit, switch on/off, delete, test) needs the admin or owner role; every role can see them and their delivery log. See Roles & Permissions.
The URL and the signing secret are never shown again once saved: the form shows them as set (for the URL, only its scheme and host). Leave a field as it is to keep the saved value, or press Replace to enter a new one.
If you change the URL to a different host (or switch scheme or port), enter the signing secret again as well — a saved secret is never sent to a new destination on its own. Changing only the path on the same host keeps it.
Payload Format#
When an error is seen for the first time, AbrovaTrace sends a JSON POST request with the following structure:
{
"event": "error.new",
"timestamp": "2025-01-18T10:30:00.000Z",
"data": {
"id": 456,
"message": "TypeError: Cannot read property 'map' of undefined",
"project": "My App",
"environment": "production",
"count": 1,
"first_seen": "2025-01-18T10:30:00.000Z",
"last_seen": "2025-01-18T10:30:00.000Z",
"stack_trace": "...",
"url": "https://myapp.com/checkout",
"user_agent": "Mozilla/5.0 ..."
}
}Alert rules and cron monitors connected to this webhook send alert.triggered / alert.resolved events instead, with data holding rule_name, rule_type, metric_value, threshold, operator, window_minutes, project and environment.
Signature
When a signing secret is set, each request carries:
X-AbrovaTrace-Signature: sha256=<hex>— HMAC-SHA256 of the JSON body, keyed with your secretX-AbrovaTrace-Timestamp— the send time in milliseconds
Best Practices#
Use the secret to verify incoming requests are from AbrovaTrace
Return a 2xx response within 10 seconds — slower, redirect (3xx) or other non-2xx responses count as failed
Failed deliveries are not retried; they show as failed in the integration's delivery log