Deliveries & redelivery
Every outgoing webhook is logged. Open Dashboard → Webhooks to see a table of recent deliveries, with one row per event attempt.
What you’ll see
Section titled “What you’ll see”Each row shows:
- Time — when the event was created.
- Event — the event type (
license.created,license.refunded, etc.). - URL — your configured License Webhook URL at the time of delivery.
- Status — one of:
- Delivered (green) — your endpoint returned 2xx.
- Retrying (amber) — last attempt failed, the next retry is scheduled.
- Failed (red) — all attempts exhausted. Keylight has given up automatically retrying.
- Actions — for non-succeeded rows, a Redeliver button.
Filter chips at the top let you narrow to a single status.
Retries
Section titled “Retries”Keylight retries failed deliveries on this schedule, then gives up:
| Attempt | When | What’s stored on the row |
|---|---|---|
| 1 | At event time | last_status, last_response_snippet, attempt_count = 1 |
| 2 | +1 minute | updated; row stays Retrying |
| 3 | +5 minutes | updated; row stays Retrying |
| 4 | +30 minutes | success → Delivered · non-2xx → Failed |
A delivery is Delivered the first time your endpoint returns any 2xx. Failed rows can still be replayed manually with the Redeliver button — for example, after you’ve fixed a bug in your handler.
Redeliver
Section titled “Redeliver”Click Redeliver on any non-succeeded row to make Keylight send the exact same envelope to your endpoint again — same id, same body, same signature.
This is the right tool for:
- Replaying after fixing a bug in your handler (your handler should be idempotent on
event.id, so replaying is safe). - Diagnosing why a particular event failed — every attempt is captured in the row’s
last_statusandlast_response_snippet.
What’s not stored
Section titled “What’s not stored”For privacy and storage, Keylight does not keep:
- The headers of your endpoint’s response (only the status code and a 500-character snippet of the body).
- The full response body if it exceeds 500 characters.
- Any other request you made to your server. Webhook deliveries are scoped to the Keylight → you direction only.
Common failure causes
Section titled “Common failure causes”| Symptom | Likely cause | Fix |
|---|---|---|
last_status = 401 and last_response_snippet mentions signature | Your handler rejected the HMAC | Recompute the secret from Settings → Integrations and confirm constant-time comparison |
last_status = 404 | Your URL has changed | Update License Webhook URL in Settings → Integrations |
last_status = 500 and last_error is empty | Your handler threw | Inspect your server logs — X-Keylight-Delivery-Id in the headers gives you the row to correlate |
last_error mentions DNS / TLS / connection refused | Endpoint down or unreachable from Cloudflare | Confirm the URL is publicly reachable over HTTPS |
| All events show Failed within minutes of each other | Endpoint outage | Once recovered, filter to Failed and Redeliver in batches |
Related
Section titled “Related”- Webhooks overview — including the signature-verification snippets.
- Event reference — payload schema for every event.