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. Checkout Page

The checkout page supports dynamic deep linking, allowing you to send a user directly into the checkout flow by providing either a prebookId or an offerId.

This is especially useful when you already know which rate the user wants to book or when your system has performed prebooking in advance.

How It Works

You can open the checkout page using one of the following parameters:

ParameterSource / Where It Comes FromMeaning
offerIdFrom the hotel rates API:
/hotels/rates
/hotels/min-rates

https://docs.liteapi.travel/reference/post_hotels-rates
https://docs.liteapi.travel/reference/post_hotels-min-rates
Direct rate identifier. The WL system will automatically perform prebooking before checkout.
prebookIdFrom the /rates/prebook API
https://docs.liteapi.travel/reference/post_rates-prebook
A prebook token you created yourself by calling the prebook endpoint.

When to Use Which?

✔ Option 1 — offerId (Recommended for simplicity)

  • Best option if you don't want to call prebook yourself.

  • The offerId represents an actual rate returned by the system.

  • When the user lands on the checkout page with offerId, the White Label will:

    • Fetch the rate
    • Automatically perform the prebook step
    • Load the checkout page with all details ready

Pros:

  • Less work for you
  • No need to call /rates/prebook on your side
  • Any pricing updates or conditions are confirmed automatically

✔ Option 2 — prebookId (Advanced / Full control)

  • Use this if you want to perform the prebook on your backend first.
  • After calling the /rates/prebook endpoint, you receive a prebookId.
  • Pass that ID into the checkout page, and the WL will skip prebooking and go directly to checkout.

Pros:

  • Your system controls the prebook
  • Ideal for custom workflows requiring checks before letting users pay

Example URLs

Checkout using offerId

https://wl-domain/checkout?offerId=abc123xyz

Checkout using prebookId

https://wl-domain/checkout?prebookId=pq98lm45

Both will load the checkout page with the selected rate and room information.

Notes & Best Practices

  • You may still append global parameters such as
    language, currency, clientReference, , or xData` to enhance the checkout experience.
  • xData can pre-fill customer information, discount codes, and guest/holder data.
  • When using offerId, you do not need to send any room or date parameters — the WL already knows them from the rate.
  • When using prebookId, make sure the prebook response hasn’t expired (prebook validity is limited).

Quick Summary

MethodWhat You ProvideWho Handles PrebookRecommended For
offerIdRate offer IDWL systemFastest setup, simplest integration
prebookIdPrebook tokenYour backendAdvanced workflows, extra validations

4. 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.