Hotel Loyalty Programs
Common:LoyaltyCard
A request can be modified to include a Loyalty Program identifier, also known as a Frequent Traveler or Frequent Guest identifier.
This identifier may return lower rates specifically designated for loyalty program members. A Loyalty Program can be sponsored by a specific hotel chain or by an affiliated travel organization, such as an Airline Loyalty Program with affiliated hotel rewards. Loyalty Programs may also provide privileges not associated to room rates; for example, VIP members for a loyalty program may be able to reserve rooms at a hotel property that is sold out and listed as unavailable.
Loyalty Card information can be added using a Traveler Profile. For some transactions and providers, Loyalty Cards information can also be entered directly into the request.
Implementation by Provider
See Implemented Transactions for provider functionality specific to each transaction.
Provider |
Implementation |
---|---|
Galileo (1G) | Supports up to four loyalty cards per booking traveler. |
Apollo (1V) | Supports up to four loyalty cards per booking traveler. |
Worldspan (1P) | Supports up to four loyalty cards per booking traveler. Available functionality varies by transaction. |
Request
The minimum required data for loyalty cards in hotel requests is:
- LoyaltyCard @CardNumber
- LoyaltyCard SupplierType="Hotel" or LoyaltyCard SupplierType="Air"
- LoyaltyCard @SupplierCode
Chain code requirements vary by hotel supplier, but are always required in Universal API because supplier codes may be required for other types of loyalty programs. As of Release 8.0 (Hotel v29.0), a A default "$$" value is programmatically added by Universal API for LoyaltyCard @SupplierCode if a value is not sent in the request. However, this must be modified to “XX” for Worldspan (1P). See @SupplierCode for details.
Schema
The LoyaltyCard element is used to provide frequent traveler program information.
Note that the LoyaltyCard element is also use by Air, Vehicle, and types of travel segments. Information in this topic pertains only to LoyaltyCard usage for hotels.
Element/Attribute | Description |
---|---|
LoyaltyCard | Provides loyalty program identifier information. |
@Key | A value for @Key can be included in a request or is automatically assigned when a PNR is imported. The key that is sent in the request is returned in the response. If no value is provided in @Key in the request, a UUID is generated in the Universal API response. |
@SupplierCode |
Identifies the hotel chain associated with the loyalty membership. Chain code requirements vary by hotel supplier, but are always required in Universal API because supplier codes may be required for other types of loyalty programs.
|
@AllianceLevel |
Optional in responses to indicate the corresponding alliance level for an associated loyalty card number. For example: "Star Alliance Gold" or "Star Alliance Silver". |
@MembershipProgram | |
@EIStat |
Element Status (@ElStat) and Key Override (@KeyOverride) values indicate situations where keys were modified by Universal API. |
@KeyOverride | |
@CardNumber |
The Loyalty Program member's ID number or code, which is assigned by the Loyalty Program supplier. A maximum of 36 characters is allowed by the schema, but this maximum varies by provider. Galileo (1G) and Apollo (1V)
LoyaltyCard @CardNumber supports 1 to 19 characters. Worldspan (1P)
Error Message
If the number of characters exceeds 17, an error message is returned: Cannot exceed 17 characters for Loyalty Card for Hotel Frequent Guest.
Error Message
If the number of characters exceeds 22, an error message is returned: Cannot exceed 22 characters for Loyalty Card for Air Frequent traveler.
|
@Status | |
@MembershipStatus | Optional in responses to indicate the corresponding program membership for an associated loyalty card number. For example: "Aeroplan". |
@FreeText | Optional free-text messages can be sent to the supplier. |
@SupplierType |
Use values "Hotel" or "Air". For applicable providers and suppliers, Frequent Flyer cross-accrual is also supported, and an "Air" value is accepted.
|
@Level | Optional in responses to indicate the corresponding program level for an associated loyalty card number. For example: "Super Elite". |
@PriorityCode | Used for air segments; not applicable to hotel segments. Airlines can file optional services with ATPCO that are valid for a specific loyalty card priority code. The priority code is returned by the provider if the loyalty card was validated by the supplier (carrier). |
ProviderReservationSpecificInfo | Identifies the PNR and product association of the Loyalty Card at the supplier level. |
Implemented Transactions
HotelReqRsp.xsd
HotelSearchAvailablityReq/HotelSearchModifiers/LoyaltyCard
HotelSearchAvailablityAsynchReq/HotelSearchModifiers/LoyaltyCard
In addition to the minimum requirements for a Hotel Search for properties, Loyalty Program information can be included by adding program information hotel chain and loyalty card information in the LoyaltyCard element.
The response returns standard Hotel Search data. However, only responses for properties owned by the specified hotel chains are returned. The room rates returned in the response are based the Loyalty Program rates provided by the requested chain. Applicable rates do not indicate whether they are associated to a Loyalty Program.
Exceptions
Hotel Search functionality with loyalty cards was added for Worldspan in Release 8.0 (Hotel v29.0).
Previously, Loyalty Card information could be added to a Universal Profile for Worldspan (1P), but could not be added as a separate modifier during the hotel search process. This update is not backwards-compatible.
HotelReqRsp.xsd
HotelSuperShopperReq and HotelSuperShopperRsp
Hotel Super Shopper is currently supported only for Galileo (1G) and Apollo (1V) as an alpha release.
HotelReqRsp.xsd
HotelDetailsReq/HotelDetailsModifiers/LoyaltyCard
In addition to the minimum requirements for a Hotel Rate and Rule Search, the Loyalty Program information can be included by adding program information hotel chain and loyalty card information in the LoyaltyCard element.
Using HotelDetailsReq, loyalty card functionality is supported for both full Hotel Rate and Rule Search and Hotel Rate and Rule Search for Rate Plans Only, but is not supported for Hotel Description, which does not return rate information.
- If @RateRuleDetail=“Complete”, a full Hotel Rate and Rule Search response is returned with availability, rates, and descriptive data.
- If @RateRuleDetail=“None” or is empty, a Hotel Description response is returned with only descriptive information, and no availability or rate information.
- If @RateRuleDetail=“RatePlansOnly”, an abridged Hotel Rate and Rule Search for Rate Plans Only response is returned with only availability and rates, but no descriptive data.
The response returns standard Hotel Rate and Rule Search data. However, only room/rate combinations applicable to the requested loyalty program are returned.
Exceptions
Worldspan (1P)Hotel Search functionality for Worldspan was added in Release 8.0 (Hotel v29.0).
Previously, Loyalty Card information could be added to a Universal Profile for Worldspan (1P), but could not be added as a separate modifier during the hotel search process. This update is not backwards-compatible.
UniversalReqRsp.xsd
HotelCreateReservationReq/BookingTraveler/LoyaltyCard
UniversalRecordModifyReq/UniversalModifyCmd/HotelAdd/LoyaltyCard (in existing Universal Records)
Hotel Booking creates a hotel reservation based on the room and rate results from a Hotel Rate and Rule Search response. Loyalty card information can be added to a booking using a Traveler Profile or entered directly into the booking request.
Hotel bookings can be created using either:
-
HotelCreateReservationReq, which creates a new PNR for the booking (and a new Universal Record.
-
HotelAdd, which adds a new hotel booking to an existing Universal Record. Only once hotel booking can be associated to a single PNR.
Multiple loyalty cards are supported in a passive booking when they are different types. If multiple cards of the same type are provided, only the first loyalty card of that type is sent, and a warning message is returned. Air loyalty card information can be included in the request even if there is no Air reservation in the Universal Record.
The Hotel Reservation response includes the Universal Record, as well as the Hotel Reservation information for this booking in the HotelReservation element. The Loyalty Program information is stored in the Universal Record and returned in the Hotel Reservation/BookingTravelerRef and Universal Record Retrieve responses.
UniversalReqRsp.xsd
UniversalRecordModifyReq/UniversalModifyCmd/HotelUpdate/LoyaltyCard (in existing Universal Records)
UniversalRecordModifyReq/UniversalModifyCmd/HotelDelete/Element="LoyaltyCard" (in existing Universal Records)
Loyalty program information can be added to or deleted from an existing hotel reservation (PNR) using Universal Record Modify.