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:
Parameter | Description | Example Value | Example Usage |
---|---|---|---|
placeId | Google Place ID for the destination | ChIJgUbEo8cfqokR5lP9_Wh_DaM | ?placeId=ChIJgUbEo8cfqokR5lP9_Wh_DaM |
checkin | Check-in date (YYYY-MM-DD) | 2024-09-15 | &checkin=2024-09-15 |
checkout | Checkout date (YYYY-MM-DD) | 2024-09-20 | &checkout=2024-09-20 |
occupancies | Guest & room configuration (base64) | btoa(JSON.stringify([{ "adults": 2, "children": [8,6] }])) | &occupancies=encodedStringHere |
stars | Star 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 |
ratings | Guest ratings (comma-separated) | 8,9 | &ratings=8,9 Possible Values: 9 – Wonderful 8 – Very Good 7 – Good 6 – Pleasant |
facilities , roomAmenities , chains , hotelTypes | Feature filter (IDs, comma-separated) | 5,12 | &facilities=5,12 |
suburbs | Suburbs (comma-separated) | manhattan,brooklyn | &suburbs=manhattan,brooklyn |
mealPlans | Meal plans | AI,HB | &mealPlans=AI,HB Possible Values: BI – Breakfast Included LI – Lunch Included DI – Dinner Included HB – Half Board FB – Full Board AI – All Inclusive |
freeCancellation | Show only free cancellation options | 1 (all), 2 (only free cancellation) | &freeCancellation=2 |
min_price | Minimum price filter | 100 | &min_price=100 |
max_price | Maximum price filter | 500 | &max_price=500 |
sorting | Sorting options | 1 | &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
Parameter | Description | Example |
---|---|---|
placeId | Google Place ID | ChIJgUbEo8cfqokR5lP9_Wh_DaM |
checkin | Check-in date | 2024-09-15 |
checkout | Checkout date | 2024-09-20 |
occupancies | Room and guest config (base64) | btoa(JSON.stringify([{ "adults": 2, "children": [8,6] }])) |
needFreeCancellation | Only show free cancellation | 1 |
needBreakfast | Filter for breakfast | 1 |
needHalfBoard | Filter for half board | 1 |
needFullBoard | Filter for full board | 1 |
needAllInclusive | Filter for all inclusive | 1 |
needDinnerIncluded | Filter for dinner | 1 |
needLunchIncluded | Filter for lunch | 1 |
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
WorksxData
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:
- Serialization — Convert your JSON data into a string.
- Compression — Gzip compress the string.
- 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
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]"
}
}
Field | Type | Required | Description |
---|---|---|---|
holder | Object | Required (if guest details used) | Main holder responsible for booking |
guests | Array | Optional | Guest info for each room |
discount | Object | Optional | Promo 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 Rooms | Provided Guests | Final Room Assignment |
---|---|---|
1 | 0 | Holder details used as guest |
2 | 2 | Guest 1 ➜ Room 1, Guest 2 ➜ Room 2 |
2 | 1 | Holder ➜ Room 1, Guest 1 ➜ Room 2 |
3 | 0 | Holder ➜ 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 Do | Why |
---|---|
Always pass a valid holder | Required for booking to proceed |
Optionally pass guests | To pre-fill room guest names |
Optionally pass discount | To auto-apply promotions |
Encode the xData properly | To 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
)
Optional — Default: 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
– Englishfr
– Frenchru
– Russianit
– Italiannl
– Dutches
– Spanishtr
– Turkishde
– Germanar
– Arabicpt
– Portugueseel
– Greekro
– Romanian
Currency
Parameter: currency
Default: USD
Supported Currencies:
AED
– UAE DirhamAUD
– Australian DollarBRL
– Brazilian RealCAD
– Canadian DollarCNY
– Yuan RenminbiEGP
– Egyptian PoundsEUR
– EuroFJD
– Fiji DollarGBP
– Pound SterlingHKD
– Hong Kong DollarIDR
– RupiahINR
– Indian RupeeJPY
– YenLKR
– Sri Lanka RupeeMAD
– Moroccan DirhamMNT
– TugrikMUR
– Mauritius RupeeMXN
– Mexican PesoMYR
– Malaysian RinggitPHP
– Philippine PesoRUB
– Russian RubleSAR
– Saudi RiyalSGD
– Singapore DollarTHB
– BahtTWD
– New Taiwan DollarUSD
– US DollarZAR
– RandRON
– 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.
Updated 14 days ago