Deeplinking to Whitelabel

This guide explains how to use URL parameters to deep link to the Hotel Listing, Hotel Details, and Checkout pages with pre-filled data. It includes parameter descriptions, values, and examples for easy implementation.

1. Hotel Listing Page

Example URL:
http://wl-domain/hotels

Use the parameters below to customize the hotel search results:

ParameterDescriptionExample ValueExample Usage
placeIdGoogle Place ID for the destinationChIJgUbEo8cfqokR5lP9_Wh_DaM?placeId=ChIJgUbEo8cfqokR5lP9_Wh_DaM
checkinCheck-in date (YYYY-MM-DD)2024-09-15&checkin=2024-09-15
checkoutCheckout date (YYYY-MM-DD)2024-09-20&checkout=2024-09-20
occupanciesGuest & room configuration (base64)btoa(JSON.stringify([{ "adults": 2, "children": [8,6] }]))&occupancies=encodedStringHere
starsStar ratings (comma-separated)4,5&stars=4,5
Possible Values:
5.0 – 5 stars
4.0 – 4 stars
3.0 – 3 stars
2.0 – 2 stars
1.0 – 1 star
0 – Unrated
ratingsGuest ratings (comma-separated)8,9&ratings=8,9
Possible Values:
9 – Wonderful
8 – Very Good
7 – Good
6 – Pleasant
facilities, roomAmenities, chains, hotelTypesFeature filter (IDs, comma-separated)5,12&facilities=5,12
suburbsSuburbs (comma-separated)manhattan,brooklyn&suburbs=manhattan,brooklyn
mealPlansMeal plansAI,HB&mealPlans=AI,HB
Possible Values:
BI – Breakfast Included
LI – Lunch Included
DI – Dinner Included
HB – Half Board
FB – Full Board
AI – All Inclusive
freeCancellationShow only free cancellation options1 (all), 2 (only free cancellation)&freeCancellation=2
min_priceMinimum price filter100&min_price=100
max_priceMaximum price filter500&max_price=500
sortingSorting options1&sorting=1
Possible Values:
1 – Our Top Picks
2 – Price Low to High
3 – Price High to Low
4 – Stars Low to High
5 – Stars High to Low
6 – Distance from City Center
7 – Guest Rating High to Low

Example Full URL

http://wl-domain/hotels?placeId=ChIJgUbEo8cfqokR5lP9_Wh_DaM&checkin=2024-09-15&checkout=2024-09-20&occupancies=W3siYWR1bHRzIjoyLCJjaGlsZHJlbiI6W119LHsiYWR1bHRzIjoxLCJjaGlsZHJlbiI6W119XQ==&stars=4,5&mealPlans=BI&freeCancellation=1

2. Hotel Details Page

URL Format:
https://wl-domain/hotels/{hotelId}
Example:
https://wl-domain/hotels/lp4aa75

Supported Parameters

ParameterDescriptionExample
placeIdGoogle Place IDChIJgUbEo8cfqokR5lP9_Wh_DaM
checkinCheck-in date2024-09-15
checkoutCheckout date2024-09-20
occupanciesRoom and guest config (base64)btoa(JSON.stringify([{ "adults": 2, "children": [8,6] }]))
needFreeCancellationOnly show free cancellation1
needBreakfastFilter for breakfast1
needHalfBoardFilter for half board1
needFullBoardFilter for full board1
needAllInclusiveFilter for all inclusive1
needDinnerIncludedFilter for dinner1
needLunchIncludedFilter for lunch1

Example URL

https://wl-domain/hotels/lp4aa75?placeId=ChIJgUbEo8cfqokR5lP9_Wh_DaM&checkin=2024-09-15&checkout=2024-09-20&occupancies=eyJhZHVsdHMiOjIsImNoaWxkcmVuIjpbOCw2XX0=&needAllInclusive=1&needBreakfast=1

3. Generic Parameters

Any Route with xData

⚠️

Note: The Checkout page must be accessed via the Hotel Details page, as it depends on session data from prebooking.

How xData Works

xData allows you to pre-populate the checkout page with booking details. It can be appended to any route on the website and will persist throughout the user's journey, ensuring the data is retained until checkout.

Steps:

  1. Serialization — Convert your JSON data into a string.
  2. Compression — Gzip compress the string.
  3. Encoding — Base64 encode the compressed data.

Then, pass the result as a URL parameter xData.

Encoding Example (JavaScript)

import pako from 'pako';

export const encodeXdata = (data: any): string => {
  const jsonString = JSON.stringify(data);
  const compressedData = pako.gzip(jsonString);
  const base64String = btoa(String.fromCharCode(...compressedData));
  return base64String;
};

Example Usage

https://test.nuitee.link?xData=H4sIAAAAAA...

When the user lands on this URL:

  • xData is decoded and stored automatically.
  • Checkout will pre-fill guest, holder, and discount information.

Supported xData Fields

{
  "guests": [
    {
      "firstName": "Guest1FirstName",
      "lastName": "Guest1LastName",
      "email": "[email protected]"
    },
    {
      "firstName": "Guest2FirstName",
      "lastName": "Guest2LastName",
      "email": "[email protected]"
    }
  ],
  "discount": {
    "code": "WEDDING10",
		"id": 1,
  },
  "holder": {
    "firstName": "HolderFirstName",
    "lastName": "HolderLastName",
    "email": "[email protected]"
  }
}
FieldTypeRequiredDescription
holderObjectRequired (if guest details used)Main holder responsible for booking
guestsArrayOptionalGuest info for each room
discountObjectOptionalPromo code to apply automatically

Important Rules

  • Discount can be passed independently (without guests/holder).

  • Holder is required to proceed with booking.

  • If 1 room and no guests: ➜ holder will be used.

  • If multiple rooms:

    • Equal guests ➜ Each fills one room.
    • Fewer guests ➜ First room uses holder, others use guests, then placeholders.

Scenario Examples

Selected RoomsProvided GuestsFinal Room Assignment
10Holder details used as guest
22Guest 1 ➜ Room 1, Guest 2 ➜ Room 2
21Holder ➜ Room 1, Guest 1 ➜ Room 2
30Holder ➜ Room 1, Room 2 ➜ Empty, Room 3 ➜ Empty

Notes

  • Emails must be valid (used for confirmation).
  • Discount codes are auto-validated during checkout.
  • Missing or empty xData will NOT break the flow — will load a fresh page.

Quick Summary

What You Must DoWhy
Always pass a valid holderRequired for booking to proceed
Optionally pass guestsTo pre-fill room guest names
Optionally pass discountTo auto-apply promotions
Encode the xData properlyTo avoid payload issue

Client Reference

Parameter: clientReference
Type: String
Optional

A custom identifier to tag the booking flow with your internal reference (e.g., guest ID, cart ID, session ID). Useful for tracking, analytics, and mapping bookings to your system.

Example:

https://wl-domain/hotels?clientReference=guest_12345

✔️ Works across listing, details, and checkout pages.

Sandbox Mode

Parameter: isSandbox
Type: Boolean (true / false)
OptionalDefault: false

Use this parameter to enable the sandbox (test) payment flow instead of processing live transactions.

⚠️

Important: This requires the White Label configuration to include a valid sandbox payment key. If not properly configured, the work flow will not function.

Example

https://wl-domain/hotels?isSandbox=true

Notes

  • ✔️ Can be used on any route
  • ✔️ Default behavior is live mode (isSandbox=false or when omitted)
  • 🔁 Remember to set isSandbox=false when switching back to live payments

Language and Currency

These parameters can be appended to any route and influence the site behavior globally.

Language

Parameter: language
Default: en
Supported Languages:

  • en – English
  • fr – French
  • ru – Russian
  • it – Italian
  • nl – Dutch
  • es – Spanish
  • tr – Turkish
  • de – German
  • ar – Arabic
  • pt – Portuguese
  • el – Greek
  • ro – Romanian

Currency

Parameter: currency
Default: USD
Supported Currencies:

  • AED – UAE Dirham
  • AUD – Australian Dollar
  • BRL – Brazilian Real
  • CAD – Canadian Dollar
  • CNY – Yuan Renminbi
  • EGP – Egyptian Pounds
  • EUR – Euro
  • FJD – Fiji Dollar
  • GBP – Pound Sterling
  • HKD – Hong Kong Dollar
  • IDR – Rupiah
  • INR – Indian Rupee
  • JPY – Yen
  • LKR – Sri Lanka Rupee
  • MAD – Moroccan Dirham
  • MNT – Tugrik
  • MUR – Mauritius Rupee
  • MXN – Mexican Peso
  • MYR – Malaysian Ringgit
  • PHP – Philippine Peso
  • RUB – Russian Ruble
  • SAR – Saudi Riyal
  • SGD – Singapore Dollar
  • THB – Baht
  • TWD – New Taiwan Dollar
  • USD – US Dollar
  • ZAR – Rand
  • RON – Romanian Leu

That’s it!
By following this guide, you can seamlessly integrate deep linking across the entire website — from hotel search and details to checkout — ensuring a smoother, faster, and more personalized user experience.