Booking.com

 

On this page:

Overview

With Booking.com, companies can expand their hotel search beyond the traditional GDS. Booking.com offers both hotel and non-hotel accommodations globally with support for negotiated rates.

Important: Booking.com must be enabled by Deem at a global level. Once enabled, you can configure it on each of your sites. To request that Booking.com be enabled by Deem, open a support ticket.

Benefits of Booking.com include:

  • Offers long-term stays (up to 30 nights).

  • Alternate accommodations available outside the US and CA.

  • TMC may have commission incentive (using their own Affiliate ID vs. Deem default).

  • Negotiated Rates/Multi-Level Rates might provide additional rate offerings if the customer/TMC does not have a robust rate plan.

Need to know

  • Once enabled, travelers will see Booking.com options along with other hotel content on the hotel search results.

  • After a reservation is booked, travelers will receive an additional email directly from Booking.com to confirm the booking.
    Note: Booking.com generated emails are not customizable and may vary over time based on style updates made by the supplier.

  • Booking.com is compatible with Amadeus, Apollo, Sabre, and Worldspan.

  • Deem currently does not charge for the setup of Booking.com.

  • If a customer is interested in enabling Booking.com, they must first open a support ticket. Deem will enable Booking.com at a global level, which will allow you to configure it on each of your sites. Refer to Opening a Support Ticket.

  • The Booking.com Affiliate ID can be configured using either the TMC, customer, or Deem Booking.com Affiliate ID.

  • Limitations and considerations:

    • Loyalty rewards are not supported.

    • Conferma/Vpay is not supported.

Configure Booking.com

Important: Booking.com must be enabled by Deem at a global level. Once enabled, you can configure it on each of your sites. To request that Booking.com be enabled by Deem, open a support ticket.

  1. From the partner dashboard home page, select the Settings link for the site you want to modify.

  2. From the top menu, select the Services tab.

  3. Select Travel Agency.

  4. Select Agency Settings.

  5. Select configuration you would like to update.

  6. At the bottom of the Ancillary Sources table, select Add Ancillary Source.

  7. Enter a source name (e.g., Booking.com).

  8. In Source, select Web: Booking.com.

  9. For the option Would you like the system to add ancillary passive segments to your primary GDS?,

    • Select Yes to add system-generated ancillary passive segments to the primary GDS. This option is recommended Sabre and Apollo.

    • Select No to not add passive segments to the primary GDS.

  10. Select whether or not Booking.com hotels should be indicated as preferred in the traveler’s search results list.

  11. Leave the Affiliate ID field blank to apply the system (Deem) default Affiliate ID. Otherwise, enter your TMC or customer Affiliate ID to use as an override.

  12. Save your changes.

  13. The Agency Settings page displays with your new ancillary source listed.

  14. Scroll down to the Passive Segment Processing section.

  15. Click below link for passive segment scripts.

  16. If there are no other changes, scroll to the bottom and select Save.

Important: Once configured, Test to ensure that booking is successful, as well as PNR is written as you anticipated.

Messaging

Messaging can be added during the booking process if the customer selects a Booking.com hotel rate. Refer to Dynamic Site Messaging for more information.

PNR scripts

PNR scripts can be programmed to customize your reservation. Refer to Custom PNR Configuration for more information. If you need assistance please open a Deem Support Case.

Display configuration

There are three options for displaying hotel results to users. Option 2 is the recommended option.

  • Option 1: Use superdomain setting. Property display will be based on hotel groups configured for the superdomain.

  • Option 2: Preferred and non-preferred hotels are displayed together. Users see all the properties at once. Preferred properties are automatically displayed first.

  • Option 3: Sort properties into separate categories. Create categories (3 maximum), set up which properties will be shown in each category, and decide the display order of properties. The categories will be searchable using the Filters section. 

    • If option 3 is selected, you will be asked how many categories you would like to display the hotels (up to 3).

    • You will then be given the ability to select how you would like them sorted.

Refer to Display Configuration for more information.

Scripts

Sabre passive script

function formatDate(a) { var b = a; var c = b.getDate(); return (c < 10 ? "0" + c : c) + month[b.getMonth()] } function isEmpty(a) { return null == a || 0 == a.length || "null" == a.toLowerCase() } function numNights(cin,cout) { var checkIn = new Date(cin.getTime()); checkIn.setHours(0,0,0,0); var checkOut = new Date(cout.getTime()); checkOut.setHours(0,0,0,0); return (checkOut - checkIn) / (24 * 60 * 60 * 1000); } var month = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"); var cmd = "0HHT[CHAINCODE]GK[NoRoom][AIRPORT]IN[CHECKIN]-OUT[CHECKOUT]/[CHAINCODE] [HOTELNAME]/[ROOM_TYPE]/[CURRENCY][RATE]/G/SI-@[ADDRESS]$[CITY] [STATE] [ZIPCODE]$FONE [PHONE]@BOOKINGDOTCOM/CF-[BOOKING_CONF_NUMBER] PIN [PROVIDER_CONF_NUMBER]"; var noOfRooms = hotel.numberOfRooms; cmd = cmd.replace("[NoRoom]", noOfRooms); var airport = hotel.airportCode; cmd = isEmpty(airport) ? cmd.replace("[AIRPORT]", "") : cmd.replace("[AIRPORT]", airport); var checkin = formatDate(hotel.checkInDate); cmd = cmd.replace("[CHECKIN]", checkin); var checkout = formatDate(hotel.checkOutDate); cmd = cmd.replace("[CHECKOUT]", checkout); var chainCode = hotel.GDSVendorCode; // Replace two instances of [CHAINCODE] cmd = isEmpty(chainCode) ? cmd.replace("[CHAINCODE]", "") : cmd.replace("[CHAINCODE]", chainCode); cmd = isEmpty(chainCode) ? cmd.replace("[CHAINCODE]", "") : cmd.replace("[CHAINCODE]", chainCode); var hotelName = hotel.hotelName; cmd = isEmpty(hotelName) ? cmd.replace("[HOTELNAME]", "") : cmd.replace("[HOTELNAME]", hotelName); var roomType = hotel.roomType; cmd = cmd.replace("[ROOM_TYPE]", roomType); var rate = parseFloat(hotel.rate); if ("TL" == hotel.rateType) { var nights = numNights(hotel.checkInDate, hotel.checkOutDate); rate = parseFloat(hotel.rate) / nights; } cmd = cmd.replace("[RATE]", rate.toFixed(2)); var currency = "" + hotel.rateCurrencyCode; cmd = cmd.replace("[CURRENCY]", currency); var propertyCode = hotel.propertyCode; cmd = cmd.replace("[PROPERTYCODE]", propertyCode); var hotelAddr = hotel.hotelAddr; cmd = isEmpty(hotelAddr) ? cmd.replace("[ADDRESS]", "") : cmd.replace("[ADDRESS]", hotelAddr); var hotelCity = hotel.hotelCity; cmd = isEmpty(hotelCity) ? cmd.replace("[CITY]", "") : cmd.replace("[CITY]", hotelCity); var hotelState = hotel.hotelState; cmd = isEmpty(hotelState) ? cmd.replace("[STATE]", "") : cmd.replace("[STATE]", hotelState); var hotelZip = hotel.hotelZip; cmd = isEmpty(hotelZip) ? cmd.replace("[ZIPCODE]", "") : cmd.replace("[ZIPCODE]", hotelZip); var hotelPhone = hotel.hotelPhone; cmd = isEmpty(hotelPhone) ? cmd.replace("[PHONE]", "") : cmd.replace("[PHONE]", hotelPhone); var confNumber = hotel.confirmationNumber; cmd = isEmpty(confNumber) ? cmd.replace("[BOOKING_CONF_NUMBER]", "") : cmd.replace("[BOOKING_CONF_NUMBER]", confNumber); var providerConfNumber = hotel.providerConfirmationNumber; cmd = isEmpty(providerConfNumber) ? cmd.replace("[PROVIDER_CONF_NUMBER]", "") : cmd.replace("[PROVIDER_CONF_NUMBER]", providerConfNumber); hotel.gkCmd = cmd;

Sabre hotel passive parse script

//Hotel Passive Parse Script //============================ var gkData = hotel.gkData; if (gkData != null && gkData.length > 0) { hotel.propertyCode = gkData.substring(3); } var code = hotel.hotelName; var tokens = code.split(" "); var hotelname = ""; for (var i = 0; i < tokens.length; i++) { if(i == 0){ hotel.chainCode = tokens[i]; } else if(i==1){ hotelname = tokens[i]; } else { hotelname = hotelname + " "+tokens[i]; } } hotel.hotelName = hotelname; var confirmationNumber = hotel.confirmationNumber; if (confirmationNumber != null) { // Parse Booking.com confirmation number var sep = confirmationNumber.indexOf('PIN'); if (sep > 0) { confirmationNumber = confirmationNumber.substring(0, sep); } confirmationNumber = confirmationNumber.trim(); } hotel.confirmationNumber = confirmationNumber;

Apollo passive script

function formatDate(a) { var b = a; var c = b.getDate(); return (c < 10 ? "0" + c : c) + month[b.getMonth()] } function isEmpty(a) { return null == a || 0 == a.length() || "null" == a.toLowerCase() } function numNights(cin,cout) { var checkIn = new Date(cin.getTime()); checkIn.setHours(0,0,0,0); var checkOut = new Date(cout.getTime()); checkOut.setHours(0,0,0,0); return (checkOut - checkIn) / (24 * 60 * 60 * 1000); } var month = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"); var cmd = "0HTL[CHAINCODE]MK[NoRoom][AIRPORT][CHECKIN]-OUT[CHECKOUT]/H-[HOTELNAME]/R-[ROOM_TYPE]/W-[ADDRESS]@[CITY]@[STATE]@[ZIPCODE]@[PHONE]/@@H/CC[CHAINCODE]/HTSGLB/PC[PROPERTYCODE]/DR[RATE]@BCDIRECT@@/CF-[CONF_NUMBER] PIN [PROV_CONF_NUMBER]"; var noOfRooms = hotel.numberOfRooms; cmd = cmd.replace("[NoRoom]", noOfRooms); var airport = hotel.airportCode; cmd = isEmpty(airport) ? cmd.replace("[AIRPORT]", "") : cmd.replace("[AIRPORT]", airport); var checkin = formatDate(hotel.checkInDate); cmd = cmd.replace("[CHECKIN]", checkin); var checkout = formatDate(hotel.checkOutDate); cmd = cmd.replace("[CHECKOUT]", checkout); var chainCode = hotel.GDSVendorCode; // Replace two instances of [CHAINCODE] cmd = isEmpty(chainCode) ? cmd.replace("[CHAINCODE]", "") : cmd.replace("[CHAINCODE]", chainCode); cmd = isEmpty(chainCode) ? cmd.replace("[CHAINCODE]", "") : cmd.replace("[CHAINCODE]", chainCode); var hotelName = hotel.hotelName; if (isEmpty(hotelName)) { cmd = cmd.replace("[HOTELNAME]", ""); } else { if (hotelName.length() > 24) { // Trunc name to 24 chars hotelName = hotelName.substring(0, 24); } cmd = cmd.replace("[HOTELNAME]", hotelName); } var roomType = hotel.roomType; cmd = cmd.replace("[ROOM_TYPE]", roomType); cmd = cmd.replace("[ROOM_TYPE]", roomType); var rate = parseFloat(hotel.rate); if ("TL" == hotel.rateType) { var nights = numNights(hotel.checkInDate, hotel.checkOutDate); rate = parseFloat(hotel.rate) / nights; } cmd = cmd.replace("[RATE]", rate.toFixed(2)); var currency = "" + hotel.rateCurrencyCode; cmd = cmd.replace("[CURRENCY]", currency); var propertyCode = hotel.propertyCode; if (propertyCode == null || propertyCode.length() != 5) { propertyCode = "0"; } cmd = cmd.replace("[PROPERTYCODE]", propertyCode); var hotelAddr = hotel.hotelAddr; cmd = isEmpty(hotelAddr) ? cmd.replace("[ADDRESS]", "") : cmd.replace("[ADDRESS]", hotelAddr); var hotelCity = hotel.hotelCity; cmd = isEmpty(hotelCity) ? cmd.replace("[CITY]", "") : cmd.replace("[CITY]", hotelCity); var hotelState = hotel.hotelState; cmd = isEmpty(hotelState) ? cmd.replace("[STATE]", "") : cmd.replace("[STATE]", hotelState); var hotelZip = hotel.hotelZip; cmd = isEmpty(hotelZip) ? cmd.replace("[ZIPCODE]", "") : cmd.replace("[ZIPCODE]", hotelZip); var hotelPhone = hotel.hotelPhone; cmd = isEmpty(hotelPhone) ? cmd.replace("[PHONE]", "") : cmd.replace("[PHONE]", hotelPhone); var confNumber = hotel.confirmationNumber; cmd = isEmpty(confNumber) ? cmd.replace("[CONF_NUMBER]", "") : cmd.replace("[CONF_NUMBER]", confNumber); var providerConfNumber = hotel.providerConfirmationNumber; cmd = isEmpty(providerConfNumber) ? cmd.replace("[PROV_CONF_NUMBER]", "") : cmd.replace("[PROV_CONF_NUMBER]", providerConfNumber); hotel.gkCmd = cmd;

Apollo hotel passive parse script

Customer experience

Badge indicates Booking.com rates. The first rate is a Booking.com rate, and the others are GDS rates.

Mobile device example:

FAQs

Can a fake credit card be used for testing?

No. Booking.com performs credit card validation. While the room may initially appear confirmed, Booking.com will send a cancellation email due to credit card authorization failure.

Note: Example email; actual email may vary.

Are Booking.com emails customizable?

No. Booking.com-generated emails are not customizable and may vary over time based on style updates made by the supplier.

Do travelers receive a confirmation email after booking?

Yes. Booking.com sends a confirmation email with complete booking information, links to modify/cancel the reservation, and a Booking.com PIN number. Deem also sends a confirmation email.

Note: Example email; actual email may vary.

How do travelers modify a Booking.com reservation?

All reservation modifications can be made in Deem. Alternately, travelers can use the Modify your booking link found in the Booking.com email confirmation. Since a change is essentially a cancellation followed by a new booking, Booking.com will generate a cancellation email then a new confirmation email.

Note: Example email; actual email may vary.

Are passive segments supported? 

Yes. However custom passive segments are not available for Amadeus and Worldspan.

Can a traveler combine Booking.com with GDS hotels in the same booking? 

No. Combining Booking.com and GDS in the same booking is not allowed at this time.

Is there a fee for using Booking.com?

No. We do not charge a fee for Booking.com.

Who does the TMC contact for support with Booking.com hotel bookings?

We recommend contacting Booking.com first.

Can non-refundable instant purchase hotels be allowed? Can they be blocked?

Non-refundable rooms can be blocked for Booking.com by using the feature in the admin dashboard and check “yes” in the “remove hotel room rates from the display if the rate is non-refundable.” If the room is non-refundable & instant purchase, this feature will also work. However, if the room is only “instant purchase” this feature will not work. You will need to use the remove rooms via keywords feature in the Dashboard. If the room or rate description contains any words identifying the room as an “instant purchase” you can add those keywords into the dashboard, which will then remove all rooms that contain those keyword descriptions.

Can a site card be used to book these rates?

Yes.

Is Booking.com compatible with Virtual Pay (Conferma)? 

No. Booking.com is not compatible with Virtual Pay.

Are hotel loyalty programs supported by Booking.com? 

No. Booking.com does not support hotel loyalty programs.