Real-time Push Reservation
Real-time push reservations provide your application with instant notifications of new/updated reservations as
they are received by HotelRunner.
-
Create a Callback URL
When we have new updates to send your server, we do a simple POST with a payload containing updates to a URL on your server.
This callback URL must be HTTPS and support POST method.
https://yourdomain.com/callback
Content Type: application/x-www-form-urlencoded
The POST you will see coming will look like this:
var data = new FormData(); data.append("data", "STRING_JSON_RESERVATION_DATA"); var xhr = new XMLHttpRequest(); xhr.open("POST", "https://yourdomain.com/callback?token={TOKEN}&hr_id={HR_ID}"); xhr.send(data);
We send data as post form parameter.
The above url includes JSON data structured like this:
{
"reason": "modify",
"hr_number": "R754208185",
"provider_number": "32423234422",
"channel": "bookingcom",
"channel_display": "Booking.com",
"state": "confirmed",
"modified": false,
"guest": "John Doe",
"cancel_reason": null,
"completed_at": "2025-01-21T10:01:25Z",
"updated_at": "2025-01-21T09:02:51Z",
"sub_total": 370.0,
"extras_total": 0.0,
"adjustments_total": 0.0,
"tax_total": 30.0,
"total": 400.0,
"currency": "EUR",
"checkin_date": "2025-01-11",
"checkout_date": "2025-01-12",
"note": null,
"payment": "credit_card",
"paid_amount": 400.0,
"requires_response": true,
"address": {
"city": "Istanbul",
"state": "",
"country": "Turkey",
"country_code": "TR",
"phone": "90955223454",
"email": "guest@example.net",
"street": "Bagdat Cad. Istanbul",
"street_2": null
},
"rooms": [
{
"state": "confirmed",
"rate_code": "NR:HR:10105",
"inv_code": "HR:10105",
"non_refundable": true,
"price": 200.0,
"nights": 1,
"total_guest": 2,
"total_adult": 2,
"child_ages": [
],
"name": "Queen Room - Disability Access - Deluxe Rate",
"checkin_date": "2025-01-11",
"checkout_date": "2025-01-12",
"extra_info": "Room Extra Info:Modern bir şekilde dekore edilmiş bu stüdyoda çalışma masası ve özel banyo bulunmaktadır.\nMeal Plan:Kahvaltı oda fiyatına dahildir.\nNon-Smoking Room",
"daily_prices": [
{
"date": "2025-01-11",
"price": "200.0"
}
],
"extras": [
]
},
{
"state": "confirmed",
"rate_code": "HR:10105",
"inv_code": "HR:10105",
"non_refundable": false,
"price": 200.0,
"nights": 1,
"total_guest": 2,
"total_adult": 2,
"child_ages": [
],
"name": "Single Room - Non Refundable Rate",
"checkin_date": "2025-01-11",
"checkout_date": "2025-01-12",
"extra_info": "Room Extra Info:Modern bir şekilde dekore edilmiş bu stüdyoda çalışma masası ve özel banyo bulunmaktadır.\nMeal Plan:Kahvaltı oda fiyatına dahildir.\nNon-Smoking Room",
"daily_prices": [
{
"date": "2025-01-11",
"price": "200.0"
}
],
"extras": [
]
}
]
}
The above command should return json structured like this:
{
"status": "ok"
}
Reservation Object
| Name | Description |
|---|---|
| reason | Reason of push notification: (modify, cancel, confirm) |
| hr_number | Reservation code on HotelRunner |
| provider_number | Reservation code on Sales Channel (can be blank*) |
| channel | Sales channel code |
| channel_display | Sales channel name |
| state | Reservation status on HotelRunner (reserved,confirmed, canceled)* |
| modified | Indicates that whether the reservation has been modified after your last activity. |
| guest | Guest name, who made the reservation |
| cancel_reason | Cancel reason (can be blank*) |
| completed_at | The time that shows when HotelRunner received the reservation (UTC) |
| updated_at | The time that shows when HotelRunner received the latest update (UTC) |
| sub_total | Sub total (tax not included) |
| extras_total | Extras total (tax not included) |
| adjustments_total | Adjustments total (Price adjustments total that made by Property Admin) |
| tax_total | Tax total |
| total | Grand total |
| currency | Currency (ISO-4217) |
| checkin_date | Check-in Date |
| checkout_date | Check-out Date |
| note | Guest note (can be blank*) |
| payment | Payment method information (credit_card, bank_transfer, cash, paypal) |
| paid_amount | Paid amount. |
| requires_response | Indicates the ability of a PMS that can be able to send state updates or not. |
| address | See address json structure. |
| rooms > inv_code | Inventory Code (Allocation group). |
| rooms > rate_code | Rate Code. |
| rooms > state | The line item state in reservation. (reserved,confirmed, canceled)* |
*blank: Empty or Null
*payment: We don't share credit card information.
*reserved: Initial state of reservation.
*confirmed: Next state of reservation when Hotelier confirms it.