Webhook delivery logs

Every event ListBee sends to your webhook endpoint is logged. You can list delivery history, filter by status, test the endpoint, and retry failures — all via the API.


List delivery events

$curl "https://api.listbee.so/v1/webhooks/wh_r7kq2xy9m3pR5tW1/events?delivered=false&limit=20" \
> -H "Authorization: Bearer lb_your_api_key"
1{
2 "object": "list",
3 "data": [
4 {
5 "object": "webhook_event",
6 "id": "evt_r7kq2xy9m3pR5tW1",
7 "webhook_id": "wh_r7kq2xy9m3pR5tW1",
8 "event_type": "order.paid",
9 "delivered": false,
10 "attempts": 3,
11 "last_attempt_at": "2026-04-03T10:22:00Z",
12 "last_response_status": 500,
13 "created_at": "2026-04-03T10:00:00Z"
14 }
15 ],
16 "has_more": false,
17 "cursor": null
18}

Use delivered=true to see successful deliveries, delivered=false for failures. Omit the filter to see all. Paginate with cursor.


Test a webhook

Send a synthetic webhook.test event to verify your endpoint is reachable and responding correctly.

$curl https://api.listbee.so/v1/webhooks/wh_r7kq2xy9m3pR5tW1/test \
> -X POST \
> -H "Authorization: Bearer lb_your_api_key"
1{
2 "object": "webhook_event",
3 "id": "evt_r7kq2xy9m3pR5tW1",
4 "event_type": "webhook.test",
5 "delivered": true,
6 "attempts": 1,
7 "last_response_status": 200,
8 "created_at": "2026-04-03T10:25:00Z"
9}

Retry a failed event

Trigger an immediate redelivery attempt for a specific event.

$curl https://api.listbee.so/v1/webhooks/wh_r7kq2xy9m3pR5tW1/events/evt_r7kq2xy9m3pR5tW1/retry \
> -X POST \
> -H "Authorization: Bearer lb_your_api_key"

The response is the updated webhook_event object with a fresh last_attempt_at and last_response_status.


Auto-disable on permanent failures

ListBee disables a webhook automatically after 3 consecutive permanent failures (status 4xx, connection refused, or DNS failure). When disabled:

  • enabled is set to false
  • disabled_reason is set to "permanent_failures"

To re-enable, send a PUT to /v1/webhooks/{id} with enabled: true. Fix the underlying issue first — the next delivery attempt happens on the next matching event.

$curl https://api.listbee.so/v1/webhooks/wh_r7kq2xy9m3pR5tW1 \
> -X PUT \
> -H "Authorization: Bearer lb_your_api_key" \
> -H "Content-Type: application/json" \
> -d '{"enabled": true}'

Next steps


Copy for AI assistants

Cursor / Claude Code
$# ListBee — Webhook delivery logs
$#
$# List delivery events:
$# GET /v1/webhooks/{id}/events
$# ?delivered=true|false filter by delivery status
$# ?cursor=... paginate
$#
$# Test a webhook:
$# POST /v1/webhooks/{id}/test
$# → sends synthetic webhook.test event
$#
$# Retry a failed event:
$# POST /v1/webhooks/{id}/events/{event_id}/retry
$#
$# Auto-disable:
$# 3 consecutive permanent failures (4xx / connection refused)
$# → enabled: false, disabled_reason: "permanent_failures"
$# Re-enable: PUT /v1/webhooks/{id} with {"enabled": true}
$#
$# Auth: Authorization: Bearer lb_...
$# Docs: https://docs.listbee.so/webhook-delivery-logs