Skip to content

Delivery Logs

Every webhook delivery attempt is recorded. View the history from the dashboard or via the API to diagnose delivery issues and replay failed events.

Accessing logs

  • Dashboard: Developers → Webhooks → [Endpoint] → Logs.
  • API: GET /webhooks/{id}/deliveries/.
  • Available filters: status (succeeded / failed), event type, time period.

Available fields per attempt

FieldDescription
idUnique identifier of the delivery attempt.
event_typeType of delivered event.
event_idIdentifier of the source event.
statussucceeded or failed.
http_status_codeHTTP status code returned by your endpoint.
response_time_msResponse time from your endpoint (ms).
attempt_countAttempt number (1, 2, 3…).
next_retry_atDate of the next attempt if failed.
created_atTimestamp of the attempt.

Replay a failed delivery

From a failed log entry in the dashboard, click Replay to immediately trigger a new attempt without waiting for the next automatic retry cycle. You can also do this via the API: POST /webhooks/{id}/deliveries/{did}/retry/.

Debugging a 500 error

If your endpoint consistently returns 500, first check your server’s application logs. The response_time_ms field tells you whether it’s a timeout (close to 30,000 ms) or a fast application error. Fix your code, then replay the delivery.

Object schema

ResponseGET /webhooks/{id}/deliveries/
Paginated list of delivery attempts for a given endpoint.
json
{
  "object": "list",
  "count": 42,
  "has_more": true,
  "data": [
    {
      "id": "del_xxxxxxxxxxxx",
      "object": "webhook_delivery",
      "event_type": "payment_intent.succeeded",
      "event_id": "evt_xxxx",
      "status": "succeeded",
      "http_status_code": 200,
      "response_time_ms": 145,
      "attempt_count": 1,
      "created_at": "2026-03-01T10:05:01Z"
    },
    {
      "id": "del_yyyyyyyyyyyy",
      "object": "webhook_delivery",
      "event_type": "refund.succeeded",
      "event_id": "evt_yyyy",
      "status": "failed",
      "http_status_code": 500,
      "response_time_ms": 3050,
      "attempt_count": 2,
      "next_retry_at": "2026-03-01T12:00:00Z",
      "created_at": "2026-03-01T10:05:00Z"
    }
  ]
}

Replay a delivery (API)

bash
curl -X POST \
  https://api.sangho.ga/v1/webhooks/wh_xxx/deliveries/del_yyy/retry/ \
  -H "Authorization: Bearer sk_prod_xxxx"
Response200 OK — Delivery replayed
Sangho immediately sends a new attempt to your endpoint.
json
{
  "id": "del_zzzzzzzzzzzz",
  "object": "webhook_delivery",
  "event_type": "refund.succeeded",
  "status": "pending",
  "attempt_count": 3,
  "created_at": "2026-03-01T14:00:00Z"
}