Skip to main content
Every webhook Nudj dispatches is tracked in the delivery log. Use the log to debug failed deliveries, confirm a specific event reached your endpoint, or audit integration health.
Webhook configs live under /api/v2/admin/webhooks/configs. Delivery logs live under /api/v2/admin/webhooks/logs — the two endpoints are separate. See the Admin API reference for the canonical request/response schema.

What gets logged

Every delivery attempt records:
FieldMeaning
deliveryIdUnique per delivery, stable across retries — matches X-Nudj-Delivery-Id
webhookConfigIdWhich configured endpoint this delivery targets
eventEvent type from the catalog
urlTarget URL at time of delivery
statuspending, delivered, retrying, failed
attemptsNumber of delivery attempts so far
lastAttemptAtTimestamp of the most recent attempt
nextAttemptAtTimestamp of the next scheduled attempt (if retrying)
responseStatusHTTP status code from the last response
responseBodyShort response excerpt (for diagnostics)
errorError message if the request failed before getting a response

Listing deliveries

Query the logs via the Admin API — see the GET /webhooks/logs reference for the full filter surface. Typical filters:
  • By config (webhookConfigId) — only this endpoint’s deliveries.
  • By event (event) — only this event type.
  • By status (status) — e.g. only failed.
  • By time window (since, until) — e.g. the last hour.

Using the log to debug

1

Reproduce the trigger

Take the action that should fire the webhook (complete a challenge, award points, etc.).
2

Find the delivery

Query /webhooks/logs filtered by webhookConfigId and ordered by lastAttemptAt desc. The newest entry is your attempt.
3

Check the status

  • delivered — your endpoint returned 2xx. If your system didn’t process it, the issue is on your side.
  • retrying — the endpoint returned a retryable error. Check responseStatus + responseBody.
  • failed — retries exhausted. Check error and fix the endpoint before retriggering.
4

Verify signature match

If your endpoint is returning 401 with “invalid signature”, confirm you’re HMAC-ing the raw body — re-serialised JSON produces a different byte sequence. See Webhook Implementation for a reference implementation.

Retry policy recap

  • 5xx, timeouts, and connection errors trigger a retry with exponential backoff.
  • 2xx marks the delivery delivered.
  • 410 Gone is the documented signal for permanent removal — Nudj honours this so your side can fence off a deprecated endpoint cleanly (PR #2124 shipped this behaviour on Shopify’s disabled topics).
  • Other 4xx responses are terminal and do not retry.

Webhook implementation

The protocol — signing, retries, endpoint examples.

Events catalog

Every event type Nudj emits.
Last reviewed: 2026-04 · Related API: GET /api/v2/admin/webhooks/logs