Webhooks
Webhook events
7 events, each a pointer to a record. When one arrives, read the current state from the API. The Webhooks guide covers receiving and verifying them.
Events
| Event | When | data |
|---|---|---|
| listing.updated | A property was put on the website, or its changes were published. | {
"propertyId": "0d6e1c2a-…"
} |
| listing.deleted | A property was taken off the website or deleted. Drop it from your site. | {
"propertyId": "0d6e1c2a-…"
} |
| calendar.updated | Availability changed for a property: a booking, a cancellation, a block. | {
"propertyId": "0d6e1c2a-…"
} |
| reservation.created | A booking was created, in any status. | {
"reservationId": "7c02…",
"propertyId": "0d6e1c2a-…",
"status": "reserved",
"previousStatus": null
} |
| reservation.updated | A booking changed: its status, dates, guest, money or notes. | {
"reservationId": "7c02…",
"propertyId": "0d6e1c2a-…",
"status": "confirmed",
"previousStatus": "reserved"
} |
| reservation.deleted | A booking was deleted, usually to undo a data-entry mistake. A cancellation is an update. | {
"reservationId": "7c02…",
"propertyId": "0d6e1c2a-…",
"status": "option",
"previousStatus": null
} |
| ping | Someone pressed the test button under Settings › Integrations. | {
"orgSlug": "acme",
"sentAt": "2026-09-13T10:00:00.000Z"
} |
The envelope
The body is the delivery id, the event, createdAt, and
a small data object that points at the record.
Headers
| Header | Value |
|---|---|
| x-quarters-event | The event name, the same as event in the body. |
| x-quarters-delivery | The delivery id, the same as id in the body. Dedupe on it. |
| x-quarters-timestamp | When the delivery was sent, in Unix seconds. |
| x-quarters-signature | sha256= followed by the hex HMAC-SHA256, under your endpoint’s secret, of the timestamp, a dot and the raw body. |
The signature covers the timestamp and the raw body. Verify it in constant time, and refuse a
timestamp more than five minutes from your clock. Each delivery also carries x-housalot-event, x-housalot-delivery and x-housalot-signature, the headers’ former names, whose signature covers the body
alone. They go away with notice.
Delivery
- One POST per event per endpoint, over https, with a ten-second timeout, following no redirects.
- Any 2xx counts as received. Anything else, a timeout or a refused connection is logged as failed.
- There is no retry queue. Recent deliveries and their outcomes are listed under the endpoint in Settings › Integrations. A full read of the resource is the recovery.
- An endpoint that resolves to a private address is refused on delivery, not on save.