Delivery Logs & Retries
Understand the webhook delivery log, Trasys's two-attempt retry policy with a 60-second backoff, and how to debug and re-test failed webhook deliveries.
Delivery log
Every attempt Trasys makes to deliver a webhook is recorded. You can view the log in the dashboard by clicking an endpoint row and expanding the delivery history.
Each record shows:
| Field | Description |
|---|---|
| Event | The event type that was delivered |
| Attempt | 1 (initial) or 2 (retry) |
| Status | HTTP status your endpoint returned, or 0 for network/timeout errors |
| Duration | Round-trip time in milliseconds |
| Success | Whether the response was 2xx |
| Body | First 500 characters of your endpoint's response body |
| Time | When the delivery was attempted |
Retry policy
Trasys uses a two-attempt delivery policy:
- Attempt 1 — fires immediately when the event occurs.
- Attempt 2 — fires 60 seconds later if attempt 1 did not receive a
2xxresponse or timed out.
After two failed attempts, no further retries are made. You can inspect the failed deliveries in the log and use the Test button to re-send a test.ping event to verify your endpoint is reachable.
The retry queue is database-backed, so pending retries survive API server restarts.
Trasys does not guarantee exactly-once delivery. Under rare conditions (e.g., network timeout where the server received but could not respond), your endpoint may receive the same event twice. Make your handlers idempotent using the incidentId or ruleId in the payload.
Timeout
Each delivery attempt has a 10-second timeout. If your endpoint does not respond within 10 seconds, the attempt is marked as failed (status: 0, body: "Timed out after 10s").
Best practice: return 200 immediately and process the event asynchronously.
app.post('/webhook', (req, res) => {
res.sendStatus(200); // respond fast
processEventAsync(req.body); // handle in background
});Test delivery
You can send a test.ping event to any endpoint from the dashboard without waiting for a real event. The test delivery is logged just like a real one.
Test payload:
{
"event": "test.ping",
"data": {
"type": "test.ping",
"message": "Test webhook from Trasys",
"timestamp": "2026-06-18T10:00:00.000Z",
"projectId": "..."
},
"attempt": 1
}Viewing via API
GET /webhooks/:projectId/endpoints/:endpointId/deliveriesReturns the last 50 delivery records for an endpoint (requires user session auth).

