property.changed
Listing identity, status and coverage.
When it fires
A listing was renamed, archived or reactivated, or its coverage or external id changed.
This event describes a thing rather than a period, so window is
null.
What to do with it
coverage: "inactive"means the property has been removed from your integration. Stop selling it. You will receive no further events for it.status: "archived"means the host took it off market entirely. Bookings against it are refused withPROPERTY_ARCHIVED.- Doorloom supports property clusters: a main property with sub-properties that block each other.
is_masterandmaster_property_idtell you where this listing sits. If you do not model clusters, availability events already account for the mutual blocking, so you can ignore both fields.
The data block
| Field | Type | Description |
|---|---|---|
doorloom_id
|
integer | Doorloom's permanent id. |
external_id
|
string|null | Your alias for the property, if one has been mapped. |
coverage
|
string | "active" or "inactive". Whether this property is in your integration's scope. |
name
|
string | The listing name, falling back to the internal property name. |
property_type
|
string|null | Villa, apartment, homestay and so on, as the host classified it. |
status
|
string | "active", "inactive" or "archived". |
is_master
|
boolean | True when this property is the head of its cluster, or has no cluster. |
master_property_id
|
integer | The cluster head's id. Equals doorloom_id when is_master is true. |
units[]
|
array | The ACTIVE units only. Use inventory.changed when you need the retired ones. |
units[].inventory_id
|
integer | Doorloom's permanent id for the unit. |
units[].external_unit_id
|
string|null | Your alias for it, if one has been mapped. Null means unmapped — you can still book the unit by inventory_id, or omit both and let Doorloom allocate. |
units[].name
|
string | Host-facing unit name, e.g. "Garden Suite". |
units[].code
|
string|null | Host-entered short code, if any. |
units[].is_active
|
boolean | False for a unit the host deactivated or deleted. An inactive unit cannot be booked. |
units[].is_default
|
boolean | True for the property's default unit. Single-unit properties have exactly one. |
units[].max_occupancy
|
integer|null | Maximum guests the unit sleeps. Null means the host has not set one; Doorloom does not enforce it. |
units[].deleted
|
boolean | True once the host deletes the unit. Retire your alias when you see this. |
Example
The full envelope, as it arrives on the wire.
{
"id": "01J6Y0V9R2T5W7Y9A1C3E5G7H9",
"type": "property.changed",
"version": "2026-09",
"sequence": 1046,
"occurred_at": "2026-10-01T15:06:02+05:30",
"integration": {
"id": 12,
"slug": "acme-pms"
},
"property": {
"doorloom_id": 902,
"external_id": "VILLA-9",
"master_property_id": 902
},
"window": null,
"data": {
"doorloom_id": 902,
"external_id": "VILLA-9",
"coverage": "active",
"name": "Amber Villa, Alibaug",
"property_type": "Villa",
"status": "active",
"is_master": true,
"master_property_id": 902,
"units": [
{
"inventory_id": 31,
"external_unit_id": "ROOM-A",
"name": "Garden Suite",
"code": "GS",
"is_active": true,
"is_default": true,
"max_occupancy": 4,
"deleted": false
},
{
"inventory_id": 32,
"external_unit_id": "ROOM-B",
"name": "Pool Suite",
"code": "PS",
"is_active": true,
"is_default": false,
"max_occupancy": 4,
"deleted": false
}
]
}
}
Related
- The event envelope — the wrapper
around
data, shared by every event. - Ordering and idempotency — how to decide whether to apply this event.