Event Types

Webhook Event Types

Reference for the payload shape of every event Hostex emits. Read the
Usage Guide first for headers, delivery semantics,
and security.

All payloads share the envelope:

{
  "event": "<event_name>",
  "data":  { /* event-specific, documented below */ },
  "timestamp": "2026-05-22T02:51:12Z"
}

Payload field names match the corresponding GET /<resource>
response in the OpenAPI spec — see the API Reference section for
per-field types.


reservation_created

Fired when a new reservation lands in Hostex — from any channel
(Airbnb, Booking.com, custom-channel via POST /reservations, etc.).

{
  "event": "reservation_created",
  "data": {
    "reservation_code": "ABC123",
    "stay_code": "ABC123",
    "channel_type": "airbnb",
    "property_id": 12345,
    "check_in_date": "2026-06-01",
    "check_out_date": "2026-06-05",
    "status": "accepted",
    "guest": {
      "name": "Jane Doe",
      "email": "[email protected]",
      "phone": "+1 555 123 4567"
    },
    "booked_at": "2026-05-22T02:50:00+00:00"
  }
}

Use it to: index a new booking, trigger an onboarding email, create a
cleaning task for the day before check-in.


reservation_updated

Fired when an existing reservation changes in any of these ways:

  • Status transition (e.g. acceptedcancelled).
  • Date / guest-count change.
  • Property reassignment (allocate / move-to-box).
  • Charge / financial change (added or modified ReservationCharge).
  • Tag attached or detached.
  • note (host-side reservation remarks) edited.
{
  "event": "reservation_updated",
  "data": {
    "reservation_code": "ABC123",
    "stay_code": "ABC123",
    "channel_type": "airbnb",
    "property_id": 12345,
    "status": "cancelled",
    "...": "..."
  }
}

Tip: the payload only confirms that the reservation changed; if you need
the post-change snapshot, call GET /reservations?id=<...> and read the
fresh state. Avoid trying to diff payloads — the same reservation can
emit several reservation_updated events in quick succession.


property_availability_updated

Fired when a property's Hostex-side availability is changed via
POST /availabilities (or the equivalent portal action). Not fired for
channel-side calendar updates — see listing_calendar_updated for those.

{
  "event": "property_availability_updated",
  "data": {
    "property_id": 12345,
    "start_date": "2026-06-01",
    "end_date": "2026-06-30",
    "available": false,
    "source": "openapi"
  }
}

listing_calendar_updated

Fired when a channel-side listing's calendar changes (prices,
inventories, restrictions) — either via POST /listings/* from your
integration or via Hostex's own channel-sync.

{
  "event": "listing_calendar_updated",
  "data": {
    "channel_account_id": 9876,
    "channel_type": "airbnb",
    "listing_id": "12345-ABC",
    "property_id": 12345,
    "fields_changed": ["price", "min_nights"],
    "start_date": "2026-06-01",
    "end_date": "2026-06-30"
  }
}

Use it to: keep your own price intelligence / channel-manager bridge
in sync without polling POST /listings/calendar.


message_created

Fired when a new message arrives in any conversation thread (inbound
from the guest, outbound from your own POST /conversations/{id} calls,
or sent from inside the Host Portal).

{
  "event": "message_created",
  "data": {
    "message_id": "msg_abc",
    "conversation_id": "thread_xyz",
    "channel_type": "airbnb",
    "sender_role": "guest",
    "sender_name": "Jane Doe",
    "display_type": "Text",
    "content": "Hi! What time can I check in?",
    "created_at": "2026-05-22T02:51:12+00:00"
  }
}

Pair with GET /conversations/{id} for full thread context (activities,
note, etc.). This is the recommended trigger for live inbox UIs.


review_created

Fired when a new review is created — either by the guest, the host
(via POST /reviews/{reservation_code}), or the host portal.

{
  "event": "review_created",
  "data": {
    "reservation_code": "ABC123",
    "channel_type": "airbnb",
    "property_id": 12345,
    "review_status": "reviewed",
    "rating": 5,
    "comment": "Lovely stay!",
    "...": "..."
  }
}

review_updated

Fired when an existing review is updated — typically when the host
adds, edits, or removes a reply.

{
  "event": "review_updated",
  "data": {
    "reservation_code": "ABC123",
    "channel_type": "airbnb",
    "property_id": 12345,
    "rating": 5,
    "host_reply": "Thanks for staying with us!",
    "...": "..."
  }
}

Forward compatibility

Hostex may add new events or new fields to existing events at any time
without bumping the v3 API version. Your handler must:

  1. Ignore unknown event types (drop or log; do not crash).
  2. Ignore unknown fields within known events.
  3. Re-derive state from the API when the payload is not enough —
    the webhook is a "something changed, go look" signal, not a full
    change feed.

When new events are added, they will be announced in the
Changelog.