BookingWhizz Webhooks API Documentation
Introduction
Welcome to the BookingWhizz Webhooks API, designed for seamless integration with hospitality management systems. This API enables hotels, property management systems (PMS), and travel platforms to centralize guest profiles, reservations, and stay data for improved guest experience, booking automation, loyalty programs, and revenue tracking.
How It Works
The API consists of three main webhook endpoints:
- Guest Profile Webhook – Captures guest details and preferences.
- Reservation Webhook – Manages reservation data including check-in/out, source tracking, and market segmentation.
- Stay Data Webhook – Tracks room charges, payments, and revenue for loyalty programs and financial insights.
All webhook requests require authentication headers (Client ID & Password) and must be formatted in JSON.
Authentication
Each API request requires Basic Authentication using a Client ID and Password. Credentials must be included in the request headers.
How to Get API Credentials
To obtain your API credentials, please email: support@bookingwhizz.com
PROFILES
API Endpoint
https://webhooks.bookingwhizz.com/{engine-name}/profile
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://webhooks.bookingwhizz.com/{engine-name}/profiles',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => array(
'client-id: Test',
'password: 1234567',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
Used to send guest details, preferences, and personal information.
POST call to the following url
:
https://webhooks.bookingwhizz.com/{engine-name}/profile
Request example :
{
"id":"123",
"accommodationId":"00512",
"profileType":"1", // 1 for GUEST, 2 for Company
"title":"Mr",
"firstName":"John",
"middleName":"",
"lastName":"Smith",
"gender":"Male",
"email":"test@gmail.com",
"phoneNumber":"+1234567890",
"languageCode":"EN",
"nationality":"Indian",
"dateOfBirth":"21/07/96",
"placeOfBirth":"",
"company":"",
"notes":"",
"address":"Street no 12, Delhi, India",
"city":"Delhi",
"postalCode":"123",
"country":"India",
"createdAt":"2025-11-04 06:39:04",
"updatedAt":"2025-11-04 06:39:04",
}
Response:
{
"success": true,
"message": "Created Successfully."
}
HEADER
| Field | Type | Description |
|---|---|---|
| client-id | String | (required) The client-id associated with the user. This is typically used for user authentication or account identification |
| password | String | (required) The user's password used for authentication. This field is required for post data |
BODY
| PATH PARAMETER | TYPE | Req/Opt | Description |
|---|---|---|---|
| id | String | Required | The unique identifier for the Guests resource |
| accommodationId | Numeric | Required | Property Code |
| profileType | Numeric | Required | Profile type Guest, Company, Travel Agent |
| title | String | Optional | One or more words used before the person's name. In some contexts it may signify veneration, an official position, or a professional or academic qualification. |
| firstName | String | Required | The first name of the guest the resource is for. |
| middleName | String | Optional | The middle name of the guest the resource is for. |
| lastName | String | Required | The last name of the guest the resource is for. |
| gender | String | Optional | There is special case for gender, as per the ISO/IEC 5218 standard, if the PMS doesn't provide the information the value returned will not be null, and instead will be 0. This special case does not exempt gender from the caveat linked above |
| String | Required | Email addresses, the PMS has record of, for the guest in question. | |
| phoneNumber | String | Required | Telephone numbers, the PMS has record of, for the guest in question. |
| languageCode | String | Optional | Language of the guest in ISO 639-3. |
| nationality | String | Required | Nationality, the PMS has record of, for the guest in question in ISO 3166-1 alpha-3 format. |
| dateOfBirth | String | Optional | Date of birth, the PMS has record of, for the guest in question in ISO-8601 format. |
| placeOfBirth | String | Optional | Place of birth, the PMS has record of, for the guest in question. |
| Company | String | Optional | |
| notes | String | Optional | A free text field for notes that the PMS holds on the guest in question. |
| address | String | Optional | Addresses, the PMS has record of, for the guest in question. |
| city | String | Required | City, the PMS has record of, for the guest |
| postalCode | String | Optional | Postal Code, the PMS has record of, for the guest. |
| country | String | Required | Country Name, the PMS has record of, for the guest in question in. |
| createdAt | DateTime | Required | YYYY-MM-DD h:s:i |
| updatedAt | DateTime | Required | YYYY-MM-DD h:s:i |
BOOKING DATA
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://webhooks.bookingwhizz.com/{engine-name}/bookings',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => array(
'client-id: Test',
'password: 1234567',
'Content-Type: application/json'
),
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
Used to handle reservation details, source tracking, and market segmentation.
POST call to the following url
:
https://webhooks.bookingwhizz.com/{engine-name}/bookings
Request Sample:
{
"accommodationId":"00512",
"data":{
"reservationId":"68003",
"type":"BOOKING_CREATED",
"externalReference":"",
"checkInDate":"2022-11-28",
"checkOutDate":"2022-11-30",
"arrivalTime":"10:00",
"departureTime":"14:00",
"bookingStatus":"EXPECTED",
"adults":1,
"children":0,
"roomQuantity":1,
"marketCode":"COR",
"marketDescription":"Corporate Negotiated Rates",
"sourceCode":"HST",
"sourceDescription":"Hotel Sales Team",
"createdAt":"2025-11-04 06:39:04",
"updatedAt":"2025-11-04 06:39:04",
"roomDetails":[
{
"roomNumber":"527",
"roomType":"EXK",
"ratePlanType":"Bed & Breakfast",
"rateCode":"BNB",
"netAmount":100.00,
"taxAmount":20.00,
"grossAmount":120.00,
"currencyCode":"USD",
"guestProfile":[
{
"id":"123",
"accommodationId":"00512",
"profileType":"1",
"title":"Mr",
"firstName":"John",
"middleName":"",
"lastName":"Smith",
"gender":"Male",
"email":"test@gmail.com",
"phoneNumber":"+1234567890",
"languageCode":"EN",
"nationality":"Indian",
"dateOfBirth":"21/07/96",
"placeOfBirth":"",
"company":"",
"notes":"",
"addresses":"Street no 12, Delhi, India",
"city":"Delhi",
"postalCode":"123",
"country":"India",
"createdAt":"2025-11-04 06:39:04",
"updatedAt":"2025-11-04 06:39:04",
}
]
}
]
}
}
Response:
{
"success": true,
"message": "Created Successfully."
}
HEADER
| Field | Type | Description |
|---|---|---|
| client-id | String | (required) The client-id associated with the user. This is typically used for user authentication or account identification |
| password | String | (required) The user's password used for authentication. This field is required for post data |
BODY
| PATH PARAMETER | TYPE | Req/Opt | DESCRIPTION |
|---|---|---|---|
| reservationId | String | Required | This is the unique identifier for this booking. In most cases, hotel staff or guests won't know about or use this number. |
| reference | String | Optional | The identifier hotel staff uses to look up the booking in their system. For guests who called in to make a booking (as opposed to booked through external channels like online travel agencies), this is the confirmation identifier they receive. |
| status | String | Required | Booking Status (RESERVED, CHECKED_IN, CHECKED_OUT, NO_SHOW, CANCELLED). |
| externalReferences | String | Optional | References generated by external systems that the guest or booker might use for to identify the booking. This could be the confirmation number a online travel agency like Booking.com uses in their system, as opposed to the reference that is generated in the hotel system. As bookings are created through multiple systems, they might have multiple external references. As an example, a booking created by HRS through a Global Distribution System (GDS) might have a confirmation number generated by HRS as well as a GDS Personal Record Number. |
| ratePlanId | String | Required | |
| rateCode | String | Optional | |
| market | String | Optional | Used to identify the market segment this booking belongs to. Hotels often use this information to track performance in certain segments, e.g. business travel, individual guests or guests who stay through wholesale contracts. These values vary by hotel and aren't globally mapped. |
| source | String | Required | Used by hotels to identify the source of business (e.g. mail, telephone, fax, central reservations, specific travel agencies like Booking.com or Expedia). These values vary by hotel and aren't globally mapped. |
| origin | String | Optional | Typically used by hotels to identify the technical source of a Booking. These are often values like mail, telephone, fax, central reservations, travel agency or global distribution systems. These values vary by hotel and aren't globally mapped. |
| channelManager | String | Optional | This field will be populated with the name of the channel manager that this booking was generated through. Channel manager software is used to distribute rates across channels (e.g. tens of online travel agencies) and limit availability to avoid overbooking. |
| arrivalDate | String | Required | Date format (YYYY-MM-DD) |
| departureDate | String | Required | Date format (YYYY-MM-DD) |
| arrivalTime | String | Optional | Hours:Minutes |
| departureTime | String | Optional | Hours:Minutes |
| areaId | String | Optional | Room Id. |
| notes | String | Optional | If guest has special request or any notes related to reservation. |
| requestedAreaTypeId | Date | Optional | |
| adultCount | Integer | Required | |
| childCount | Integer | Optional | |
| infantCount | Integer | Optional | |
| netAmount | Float | Optional | |
| grossAmount | Float | Required | |
| taxAmount | Float | Required | |
| taxRate | String | Optional | |
| currencyCode | String | Required | Currency Code, the PMS has record of, for the guest in question in ISO-4217 format. |
| guestId | String | Required | If multiple insert with comma. |
| allocationId | String | Optional | Room Number |
| cancelledAt | DateTime | Optional | Format: YYYY-MM-DD h:s:i |
| createdAt | DateTime | Required | Format: YYYY-MM-DD h:s:i |
| updatedAt | DateTime | Required | Format: YYYY-MM-DD h:s:i |
STAY DATA
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://webhooks.bookingwhizz.com/{engine-name}/stays',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => array(
'client-id: Test',
'password: 1234567',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
Tracks room charges, payments, and stay revenue for loyalty programs and financial tracking.
POST call to the following url :
https://webhooks.bookingwhizz.com/{engine-name}/stays
Request Sample:
{
"accommodationId":"00512",
"data":{
"reservationId ":"68003",
"type":"STAY_DATA",
"externalReference":"",
"checkInDate":"2022-11-28",
"checkOutDate":"2022-11-30",
"adults":1,
"children":0,
"roomQuantity":0,
"marketCode":"COR",
"marketDescription":"Corporate Negotiated Rates",
"sourceCode":"HST",
"sourceDescription":"Hotel Sales Team",
"createdAt":"2025-11-04 06:39:04",
"updatedAt":"2025-11-04 06:39:04",
"roomDetails":[
{
"roomNumber":"527",
"roomType":"EXK",
"ratePlanType":"Bed & Breakfast",
"rateCode":"BNB",
"netAmount":130.00,
"taxAmount":23.00,
"grossAmount":153.00,
"charges":[
{
"id":"1352595",
"billId":"68398",
"netAmount":100.00,
"taxAmount":20.00,
"grossAmount":120.00,
"currencyCode":"USD",
"description":"TRF",
"chargedAt":0,
"notes":"ROOM TARIFF",
"chargeCode":"ROOM"
},
{
"id":"1352595",
"billId":"68398",
"netAmount":30.00,
"taxAmount":3.00,
"grossAmount":33.00,
"currencyCode":"USD",
"description":"TRF",
"chargedAt":0,
"notes":"F & B Revenue",
"chargeCode":"FBREVENUE"
}
],
"payments":[
{
"id":"1355258",
"billId":"68398",
"amount":153.00,
"currencyCode":"USD",
"paymentMethod":"CRD",
"paidAt":0,
"notes":"CREDIT CARD"
}
],
"guestProfile":[
{
"id":"123",
"accommodationId":"00512",
"profileType":"1",
"title":"Mr",
"firstName":"John",
"middleName":"",
"lastName":"Smith",
"gender":"Male",
"email":"test@gmail.com",
"phoneNumber":"+1234567890",
"languageCode":"EN",
"nationality":"Indian",
"dateOfBirth":"21/07/96",
"placeOfBirth":"",
"company":"",
"notes":"",
"addresses":"Street no 12, Delhi, India",
"city":"Delhi",
"postalCode":"123",
"country":"India",
"createdAt":"2025-11-04 06:39:04",
"updatedAt":"2025-11-04 06:39:04",
}
]
}
]
}
}
Response:
{
"success": true,
"message": "Created Successfully."
}
HEADER
| Field | Type | Description |
|---|---|---|
| client-id | String | (required) The client-id associated with the user. This is typically used for user authentication or account identification |
| password | String | (required) The user's password used for authentication. This field is required for post data |
BODY
| PATH PARAMETER | TYPE | Req/Opt | DESCRIPTION |
|---|---|---|---|
| id | String | Required | This is the unique identifier for this stay. In most cases, hotel staff or guests won't know about or use this number. |
| reservationId | String | Required | The identifier hotel staff uses to look up the booking in their system. For guests who called in to make a booking (as opposed to booked through external channels like online travel agencies), this is the confirmation identifier they receive. |
| complimentary | String | Optional | Reservation is complimentary (Y/N). |
| status | String | Optional | Booking Status (CHECKED_OUT) |
| rateCode | String | Optional | |
| market | String | Optional | Used to identify the market segment this booking belongs to. Hotels often use this information to track performance in certain segments, e.g. business travel, individual guests or guests who stay through wholesale contracts. These values vary by hotel and aren't globally mapped. |
| source | String | Optional | Used by hotels to identify the source of business (e.g. mail, telephone, fax, central reservations, specific travel agencies like Booking.com or Expedia). These values vary by hotel and aren't globally mapped. |
| origin | String | Optional | Typically used by hotels to identify the technical source of a Booking. These are often values like mail, telephone, fax, central reservations, travel agency or global distribution systems. These values vary by hotel and aren't globally mapped. |
| notes | String | Optional | |
| arrivalDate | String | Required | Date format (YYYY-MM-DD). |
| departureDate | String | Required | Date format (YYYY-MM-DD). |
| areaTypeId | String | Optional | Room name of the booking. |
| chargedAt | DateTime | Optional | |
| totalRevenue | Float | Required | Total revenue of reservation. |
| roomRevenue | Float | Required | Total room revenue of reservation. |
| fbRevenue | Float | Required | Total revenue of Food and Beverages. |
| otherRevenue | Float | Required | |
| currencyCode | String | Required | Currency Code, the PMS has record of, for the guest in question in ISO-4217 format. |
| createdAt | DateTime | Required | YYYY-MM-DD h:s:i |
| updatedAt | DateTime | Required | YYYY-MM-DD h:s:i |