Daybook DocsDaybook Docs
Browse

Webhooks

Daybook posts signed events to the HTTPS endpoints you register, and records every delivery.

Register an HTTPS endpoint in Developers → Webhooks in the Daybook app. Daybook signs every event it sends with the endpoint's secret and records each delivery on the endpoint's page. Send test event posts a webhook.test event, so you can check your handler end to end.

The event envelope

Every event has the same outer shape.

  • idstring
    Unique id: evt_ and a ULID. The same value as the webhook-id header. Use it to drop duplicates.
  • typestring
    Such as webhook.test. See Event types.
  • created_atstring
    RFC 3339 timestamp.
  • modestring
    test from a sandbox account, live from a production account.
  • dataobject
    The event's data. See Event types.
json
{
  "id": "evt_01JBXK8N3QZ7V2C4D5E6F7G8HJ",
  "type": "webhook.test",
  "created_at": "2026-10-29T14:31:40Z",
  "mode": "test",
  "data": {
    "endpoint_id": "whe_01JBXK4R7T2M9P5W3Y6A8C0D1E",
    "message": "This is a test event from Daybook."
  }
}

Handling events well

  1. Verify the signature

    Reject anything without a valid webhook-signature. See Verifying signatures.

  2. Return 2xx fast

    Daybook waits 10 seconds for your answer. Any other status, or no answer in that time, is recorded as a failed delivery. Acknowledge first, then do the work in the background.

  3. Drop duplicates

    Keep the ids you've processed and skip any you've seen. A delivery that failed is tried again with the same id, so the same event can reach you more than once.

On this pageThe event envelopeHandling events well