Agent Wranglers

EVT-29Recommended

Let customers test and inspect their webhook endpoints

Let each customer send a test event, resend one event and rotate the signing secret. Show them the last 30 days of deliveries with status and answer time.

How to do it

When a delivery fails, the customer's first question is whether you sent it. A delivery log answers it without a support ticket. Store each attempt with the event ID, the status code, the time taken and the first 1 KB of the answer, never the customer's secrets. Let the customer resend a single event or every failed event since a date. Rotation follows Sign every webhook, signing with both secrets for a day. Show endpoints that keep failing, and tell the owner before you turn one off, as Retry until the receiver accepts says.

Examples

JSON example

{
  "eventId": "evt_7Hq2",
  "endpoint": "https://hooks.example.org/shop",
  "attempts": [
    { "at": "2026-10-27T09:14:04Z", "status": 500, "ms": 412 },
    { "at": "2026-10-27T09:19:10Z", "status": 204, "ms": 88 }
  ]
}

Python example

def record_attempt(event_id: str, endpoint_id: str, status: int, elapsed_ms: int, answer: bytes) -> None:
    db.execute(
        "INSERT INTO webhook_attempts (event_id, endpoint_id, status, elapsed_ms, answer_start, at)"
        " VALUES (%s, %s, %s, %s, %s, now())",
        (event_id, endpoint_id, status, elapsed_ms, answer[:1024].decode(errors="replace")))

JavaScript example

export async function recordAttempt({ eventId, endpointId, status, elapsedMs, answer }) {
  await db.query(
    'INSERT INTO webhook_attempts (event_id, endpoint_id, status, elapsed_ms, answer_start, at) VALUES ($1, $2, $3, $4, $5, now())',
    [eventId, endpointId, status, elapsedMs, answer.subarray(0, 1024).toString('utf8')]);
}

How to check

Through the API or the dashboard, send a test event to a test endpoint that answers 500. The delivery log shows the attempt with status 500 within 1 minute. Resend it after the endpoint is fixed, and the log shows a 2xx attempt for the same event ID.

Sources

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/events/webhooks/webhook-endpoint-tools">Agent Wranglers integration and events playbook</a>. In code you write, add a comment next to it with the same link.