Skip to main content

CRS booking engine best practices with direct booking links and variables

Place guests directly in the booking engine from your website, landing pages, or emails using customized URLs with specific search criteria.

M
Written by Michelle Normoyle
Updated over a month ago

Direct booking links

Direct booking links are designed for placing guests directly in the booking engine from your website, landing pages, or emails. Since searches can be refined by specific dates, rates, and other criteria, we strongly recommend testing the entire shopper journey. This includes starting from the originating pages and exploring use cases where there is no availability. Ensuring that guests always have a clear pathway to view all available options for their selected dates or alternative dates with availability is crucial for the booking experience.

Some of the more technical details are intended for use by hoteliers and their webmasters implementing the booking engine and aligning its design with the property or brand's web presence. This is still good information to understand what is possible for your marketing and selling strategies.

⚠️Important: The calendar driven shopping page starts on the detail page (not the index/availability page) and as a result, does not use some of these variables and those are called out in the list as they are not needed. This flow will also present the calendar to select dates prior to proceeding to the available offers as requested in the URL.


Base booking engine URLs

You can use these base URLs for different booking engine pages.

πŸ“ŒNote: Variables are appended to the base link following the '?'. You can add additional variables to the end of the URL by adding a '&'.


Property identification variables

Property code (pcode)

Compatible pages: INDEX, DETAILS, SHOP

Use your CRS Property code from the CRS.

πŸ“ŒNote: You can find this under Property Description > Address/Contacts > CRS Property ID.

Property ID or Hotel ID (propertyID / hotelID)

Compatible pages: INDEX, DETAILS, SHOP

Use your CRS property numeric ID.

πŸ€“Tip: All clients can find this by hovering over the property name in the CRS. Multi-property clients can also find it next to the property name in the select property drop-down box in the CRS.

Multi-property page variables

Hotel group ID (hgID)

Compatible pages: DEFAULT, SHOP

Use your CRS hotel group or chain numeric ID to display a list of hotels under a given chain or hotel group using the default.aspx or shop.aspx pages.

πŸ“ŒNote: You can find this by hovering over the chain name in the CRS.

Selected hotel (selectedHotel)

Compatible pages: SHOP

Use this to pre-select a specific hotel in the multi-property view.

Format: selectedHotel=<CRS property code>

Language and currency variables

Language ID (langID)

Compatible pages: INDEX, DETAILS, SHOP

Specify the property language using a numerical value.

πŸ“ŒNote: See Language ID List for full details. Default is &langID=1 for US English.

Currency ID (currID)

Compatible pages: INDEX, DETAILS, SHOP

Specify the currency using a numeric value.

πŸ“ŒNote: See Currency ID List for full details. This will default to the currency listed as default in Property Description > Currency.

Calendar variables

⚠️Important: Only use one "leadtime or checkin" variable in a given URL. Only use one "nights or checkout" variable in a given URL.

Check-in date (checkin)

Compatible pages: INDEX, DETAILS, SHOP

Specify the arrival date using the format appropriate for the selected language.

Examples:

  • 12/01/2022 for December 1st, 2022 (EN-US)

  • 01/12/2022 for December 1st, 2022 (EN-GB)

Check-out date (checkout)

Compatible pages: INDEX, DETAILS, SHOP

Specify the departure date using the format appropriate for the selected language.

Examples:

  • 12/03/2022 for December 3rd, 2022 (EN-US)

  • 03/12/2022 for December 3rd, 2022 (EN-GB)

Number of nights (nights)

Compatible pages: INDEX, DETAILS, SHOP

Specify the number of nights as a numeric value.

Lead time (leadtime)

Compatible pages: INDEX, DETAILS, SHOP

Dynamically set the check-in date relative to today.

Format: <numeric value><period (d/w/m)>

Examples:

  • leadtime=5d sets check-in date to 5 days from today

  • leadtime=2w sets check-in date to 2 weeks from today

  • leadtime=1m sets check-in date to 1 month from today

Open calendar automatically (opencalendar)

Compatible pages: INDEX

Set opencalendar=1 to automatically open the calendar when the page loads.

Suppress availability (suppressavail)

Compatible pages: INDEX

Set suppressavail=1 to work with 'open calendar', allowing the system to ignore restrictions and still open the calendar to view.

Shape

Occupancy variables

Adults (adults)

Compatible pages: INDEX, DETAILS, SHOP

Specify the number of adults per room as a numeric value.

Children (children)

Compatible pages: INDEX, DETAILS, SHOP

Specify the number of children per room as a numeric value.

Child age buckets (child one/two/three/four)

Compatible pages: INDEX, DETAILS, SHOP

Specify the number of children per room in specific child age buckets as numeric values.

Child ages (childAges)

Compatible pages: INDEX, DETAILS, SHOP

Specify the actual ages of children as a comma-separated list. For multi-property bookings, separate each room's ages with the | symbol.

Number of rooms (rooms)

Compatible pages: INDEX, DETAILS, SHOP

Specify the number of rooms in the request as a numeric value (one to five).

Bed type (bed)

Compatible pages: INDEX

Specify bed type preferences:

  • King = 10.

  • Queen = 20.

  • Double = 30.

  • Twin = 40.

Smoking preference (nonsmoking)

Compatible pages: INDEX

Specify smoking preferences:

  • Yes = Non-smoking room.

  • No or empty = no preference.

Room type, rate code, and package variables

⚠️Important: You must use details or shop base URLs for these variables. Only specify one room type, rate code, or package variable per URL.

Rate code (rate)

Compatible pages: DETAILS, SHOP

Use your rate code as a text string from the CRS.

Example: Rate Code AAA – Use of &rate=aaa will bring results showing the association rate offer first.

Rate code ID (rcID)

Compatible pages: DETAILS

Use the specific CRS rate code numeric ID.

πŸ€“Tip: You can find this by hovering over the rate code directly in the CRS under Rate Management > Rate Code > Rate Code List. Alternatively, it can be found in the browser URL bar if the rate code is selected from the rate code list after "RatecodeID=".

Selected rate (selectedRate)

Compatible pages: SHOP

Use this to pre-select a specific rate in the calendar-driven shop page.

Example: Rate Code AAA – Use of &selectedRate=aaa will bring results showing the association rate offer first.

Room type code (roomType)

Compatible pages: DETAILS

Use the specific CRS room type alphanumeric code found on the Room Type List in the CRS under Property Description > Room Type > Room Type List.

Room type ID (rmID)

Compatible pages: DETAILS

Use the specific CRS room type numeric ID.

πŸ€“Tip: You can find this by hovering over the room type directly in the CRS under Property Description > Room Type > Room Type List. Alternatively, it can be found in the browser URL bar if the room type is selected from the room type list after "roomTypeID=".

Package ID (packageID)

Compatible pages: DETAILS

Use the specific CRS package numeric ID.

πŸ€“Tip: You can find this by hovering over the package directly in the CRS under Group/Package/Add-Ons > Package > Package List. Alternatively, it can be found in the browser URL bar if the package is selected from the package list after "packageID=".

Package code (package)

Compatible pages: DETAILS, SHOP

Use the specific CRS Package code found in Group/Package/Add-Ons > Package > Package List.

Format: package=<CRS package Type Code>

Selected package (selectedPackage)

Compatible pages: SHOP

Use this to pre-select a specific package in the calendar-driven shop page.

Format: selectedPackage=<CRS package Type Code>

Selected tower (selectedTower)

Compatible pages: SHOP

Use this to pre-select a specific room type group in the calendar-driven shop page.

Format: selectedTower=<CRS room type group Code>

Show qualified rates (showQualifiedRates)

Compatible pages: INDEX, DETAILS, SHOP

Set showQualifiedRates=true to control the display of qualified rates.

Access and ID code variables

Compatible pages: DETAILS, SHOP

Promotional code (promo)

Specify a promotional rate code or ID offered by the property.

⚠️Important: Do not enter standard, discount, package, group, or corporate rate codes or IDs.

Group attendee ID (group)

Use the group attendee code that guests enter to retrieve and book group rates.

πŸ“ŒNote: Group rates will not be displayed unless requested by the guest. This is not the CRS or PMS group rate code, but what is entered in the 'Group Code' field on the UI of the IBE.

Corporate code (corp)

Use this for negotiated or corporate travelers to bring rates within the corporate category directly to guests.

Access code (access)

Use this for restricted rates to bring rates within the restricted category associated with the given access code to guests.

IATA number (IATA)

Assign a travel agent's IATA or ARC ID to reservations made on the booking (eight characters maximum).

Branding and A/B testing variables

Brand ID (brandID)

Use the branding ID set up in your CRS as a numeric value.

A/B testing settings (settings)

Use settings=<A/B> when A/B testing is enabled in your CRS branding setup.

Results view variables

Landing page view types (viewtype)

Compatible pages: INDEX

Control how results display on the landing page:

  • viewtype=1 - List View (default)

  • viewtype=2 - Price View sorted Low to High

  • viewtype=3 - Price View sorted High to Low

  • viewtype=4 - Grid View (default)

Calendar-driven shopping page view types (viewtype)

Compatible pages: SHOP

Control sorting on the shopping page:

  • viewtype=1 - SortBy: Price (Low to High)

  • viewtype=2 - SortBy: Price (Low to High)

  • viewtype=3 - SortBy: Price (High to Low)

Open promo/IATA code block (openPromoIATA)

Compatible pages: INDEX

Set openPromoIATA=true to automatically open the 'Enter Additional Options (Add Promo/IATA)' block when users land on the index page of IBE.

Loyalty program variables

Use these variables when your hotel or CRM website redirects logged-in guests to the booking engine.

Perform authentication check (performAuthCheck)

Compatible pages: DEFAULT, INDEX, DETAILS, SHOP

Set performAuthCheck=true to use the silent login feature of the SSO server using prompt=none. If guests are already logged in to the same browser session, they'll be logged into IBE automatically. If not logged in, they'll return to IBE quickly without any login.

Force authentication (forceAuth)

Compatible pages: DEFAULT, INDEX, DETAILS, SHOP

Set forceAuth=true to use the normal login feature of the SSO server. If guests are already logged in to the same browser session, they'll be logged into IBE. If not logged in, they'll see the login screen.

Voucher code (voucher or vouchercode)

Compatible pages: DEFAULT, SHOP (SHR CRM only)

Use encrypted offer data for voucher codes.

πŸ“ŒNote: Currently only supported with SHR CRM. Please contact your Customer Success Manager or support team for details.

User token (userToken)

Compatible pages: DETAILS, SHOP (specific programs only)

Use encrypted guest offer data to allow pseudo-login of guests.

πŸ“ŒNote: Currently only supported with selected loyalty programs to allow pseudo-login of guests. Please contact your Customer Success Manager or support team for details.

Offer code (offerCode)

Compatible pages: DETAILS, SHOP (specific programs only)

Use this to pass loyalty offer codes.

πŸ“ŒNote: Currently only supported with selected loyalty programs to allow passing loyalty offer codes. Please contact your Customer Success Manager or support team for details.

Saved cart variable

Load saved card (saved)

Compatible pages: CART

Use saved=<card id> with cart.aspx/combocheckout.aspx when the save for later or abandoned cart feature is enabled to load the previous saved cart.

Reservation confirmation variables

Reservation key (resvKey)

Compatible pages: CONFIRM

To create deep links to IBE reservation confirmations from third-party websites like our CRM landing pages or emails or hotel websites, the source website needs to know:

  • Hotel ID/Code of the property in the CRS.

  • CRS reservation number of the reservation.

  • Last name of the primary guest on the reservation.

Generate the reservation key

Follow the steps below to generate the reservation key.

  1. Combine the CRS reservation number and the last name in upper case using the pipe | symbol.

  2. Generate a SHA256 hash of the combined string.

  3. Get the lowercase hexadecimal string of the hash.

  4. Pass this as "resvKey" URL query parameter to the IBE confirmation page along with the CRS reservation number in the "crsID" URL query parameter along with ret=1 parameter.

Example:


Reference lists

Here is the complete list of all supported languages with their date formats:

Language ID

Language

Date Format

1

English

MM/dd/yyyy

2

French

dd/MM/yyyy

3

Spanish

dd/MM/yyyy

4

German

dd.MM.yyyy

5

Italian

dd/MM/yyyy

6

English (GB)

dd/MM/yyyy

7

Chinese (Simplified)

yyyy-MM-dd

8

Russian

dd.MM.yyyy

9

Japanese

yyyy/MM/dd

10

Chinese (Traditional)

yyyy-MM-dd

11

Portuguese

dd/MM/yyyy

12

Czech

dd.MM.yyyy

13

Swedish

yyyy-MM-dd

14

Arabic

dd/MM/yyyy

15

Greek

dd/MM/yyyy

16

Hindi

dd/MM/yyyy

17

Dutch

dd/MM/yyyy

18

Hungarian

dd/MM/yyyy

19

Romanian

dd/MM/yyyy

20

Slovak

dd/MM/yyyy

21

Korean

yyyy.MM.dd

22

Indonesian

dd/MM/yyyy

23

Danish

dd/MM/yyyy

24

Thai

dd/MM/yyyy

25

Azerbaijani

dd.MM.yyyy

26

Norwegian

dd.MM.yyyy

27

Hebrew

dd/MM/yyyy

28

Malay

d/MM/yyyy

29

Finnish

d.M.yyyy

30

Turkish

d.MM.yyyy

31

Vietnamese

dd/MM/yyyy

32

Bulgarian

d.M.yyyy

33

Polish

YYYY-MM-DD

Did this answer your question?