Enquiries Channel manager Bookings Your website Booking engine Pricing
v2026-09

booking.changed

A booking you created has changed — by you or by the host.

When it fires

A booking you created changed — either the host edited it in the Doorloom app, or your own write is being echoed back to you as confirmation.

This event describes a thing rather than a period, so window is null.

What to do with it

  • This event reaches only the integration that owns the booking. It carries guest contact details, so it is never broadcast to other integrations covering the same property.
  • There is no separate created, updated or cancelled event. A cancellation arrives as booking.changed with status: "cancelled" and a non-null cancelled_at.
  • origin tells you who made this change. "partner" is your own write coming back — you can usually ignore it, or use it to confirm the write landed. "doorloom" is the host editing in the app, which you must apply.
  • revision increments on every change from either side. It is what If-Match compares against on PATCH /bookings/{id}.
  • data here is byte-identical to the booking object returned by the REST endpoints, so one parser serves both.

The data block

Field Type Description
id integer Doorloom's booking id. Use it in the REST paths.
external_booking_id string|null The id you supplied at create.
external_reference string|null Your source.reference, e.g. the OTA confirmation code.
revision integer Increments on every change, from either side.
origin string "partner" or "doorloom" — who made the latest change.
status string pending, confirmed, cancelled, completed or refunded.
property.doorloom_id integer The booked property.
property.external_id string|null Your alias for it.
check_in string Y-m-d.
check_out string Y-m-d. Exclusive — the guest leaves this morning.
guests.adults integer Total adults across all units.
guests.children integer Total children across all units.
guest.name string Lead guest name.
guest.phone_code string Dialling code, e.g. "+91".
guest.mobile string Mobile number without the dialling code.
units[].property object {doorloom_id, external_id} for the unit's property.
units[].inventory_id integer The allocated unit.
units[].external_unit_id string|null Your alias for it.
units[].adults integer Adults in this unit.
units[].children integer Children in this unit.
units[].meal_plan string|null EP, CP, MP or AP.
units[].stay_price number Room money for this unit across the stay.
units[].meal_total number Meal money for this unit across the stay.
units[].line_total number stay_price plus meal_total.
pricing.currency string Always "INR".
pricing.total number Booking total. For a booking you created, this is the total you sent.
pricing.advance number Recorded as collected.
pricing.balance number Still owed.
pricing.partner_breakdown object|null The pricing.breakdown you sent at create, stored verbatim and never interpreted.
payment object|null The payment object you sent, stored verbatim.
source.channel string|null The channel you named at create, e.g. "airbnb".
source.reference string|null Your reference on that channel.
notes string|null Free-text note on the booking.
cancelled_at string|null ISO-8601 in Asia/Kolkata. Non-null once cancelled.
cancellation_note string|null Why it was cancelled.
created_at string ISO-8601 in Asia/Kolkata.
updated_at string ISO-8601 in Asia/Kolkata.

Example

The full envelope, as it arrives on the wire.

json
{
    "id": "01J6Y0W1T4V7Y9B1D3F5H7J9K1",
    "type": "booking.changed",
    "version": "2026-09",
    "sequence": 1047,
    "occurred_at": "2026-10-01T16:22:40+05:30",
    "integration": {
        "id": 12,
        "slug": "acme-pms"
    },
    "property": {
        "doorloom_id": 902,
        "external_id": "VILLA-9",
        "master_property_id": 902
    },
    "window": null,
    "data": {
        "id": 55231,
        "external_booking_id": "PMS-100234",
        "external_reference": "HM-77",
        "revision": 2,
        "origin": "doorloom",
        "status": "confirmed",
        "property": {
            "doorloom_id": 902,
            "external_id": "VILLA-9"
        },
        "check_in": "2026-10-12",
        "check_out": "2026-10-14",
        "guests": {
            "adults": 4,
            "children": 1
        },
        "guest": {
            "name": "Asha Rao",
            "phone_code": "+91",
            "mobile": "9876543210"
        },
        "units": [
            {
                "property": {
                    "doorloom_id": 902,
                    "external_id": "VILLA-9"
                },
                "inventory_id": 31,
                "external_unit_id": "ROOM-A",
                "adults": 2,
                "children": 1,
                "meal_plan": "CP",
                "stay_price": 8000,
                "meal_total": 2600,
                "line_total": 10600
            },
            {
                "property": {
                    "doorloom_id": 902,
                    "external_id": "VILLA-9"
                },
                "inventory_id": 32,
                "external_unit_id": "ROOM-B",
                "adults": 2,
                "children": 0,
                "meal_plan": "EP",
                "stay_price": 8000,
                "meal_total": 0,
                "line_total": 8000
            }
        ],
        "pricing": {
            "currency": "INR",
            "total": 18600,
            "advance": 4000,
            "balance": 14600,
            "partner_breakdown": {
                "room": 16000,
                "meals": 2600
            }
        },
        "payment": {
            "status": "partial",
            "amount_collected": 4000,
            "collected_by": "partner",
            "reference": "pay_123"
        },
        "source": {
            "channel": "airbnb",
            "reference": "HM-77"
        },
        "notes": "Late arrival, around 11pm",
        "cancelled_at": null,
        "cancellation_note": null,
        "created_at": "2026-10-01T15:58:12+05:30",
        "updated_at": "2026-10-01T16:22:40+05:30"
    }
}

Related

Something unclear or wrong on this page? Write to [email protected] and tell us which page — we would rather fix the doc than answer the ticket twice.