Las tarifas condicionales son un tipo de regla de tarifas que te permite ofrecer tarifas diferentes para los itinerarios, según criterios como el dispositivo o el país del usuario, o si este accedió a su cuenta de Google.
Cuando tienes más de una tarifa pública o condicional para un itinerario o paquete de habitaciones, el usuario verá la tarifa más baja. Google siempre elige la tarifa más baja apta para el usuario.
Descripción general
Las tarifas condicionales se muestran en las ranuras de precios estándar y solo a los usuarios cuyas búsquedas cumplen con los criterios de la tarifa condicional asociada. Estos criterios pueden basarse en lo siguiente:
- Dispositivo del usuario final
- País del usuario final
- Preferencia de idioma del usuario final
- Subconjunto reducido de todos los usuarios
- Si el usuario final accedió
Para habilitar las tarifas condicionales, modifica lo siguiente:
Archivo XML de reglas de tarifas: Define las condiciones en las que se aplican las tarifas condicionales.
Feed de precios: Usa el elemento
<Rate>en un mensaje de Transaction para establecer las tarifas.Archivo de página de destino: Agrega valores específicos de la regla de tarifa a tus vínculos directos.
Tarifas condicionales específicas para cada dispositivo
Las tarifas específicas para dispositivos son tarifas de hotel que solo pueden ver y reservar los usuarios en un dispositivo específico, como un dispositivo móvil, una tablet o una computadora de escritorio. Los socios de Google proporcionan las tarifas, y los usuarios finales pueden ver y reservar las mismas tarifas específicas para cada dispositivo en el sitio del socio.

Tarifas condicionales específicas por país
Las tarifas específicas de cada país son tarifas de hoteles que solo pueden ver y reservar los usuarios que buscan hoteles desde un país específico. Google determina el país a partir de la dirección IP del usuario final. Las tarifas las proporcionan los socios de Google, y los usuarios finales pueden ver y reservar las mismas tarifas específicas de cada país en el sitio específico de cada país del socio.
Tarifas condicionales específicas del idioma
Las tarifas específicas del idioma solo son visibles para los usuarios que buscan hoteles con un parámetro de configuración de idioma específico en Google. Las condiciones específicas del idioma se definen con el elemento <LanguageCode>.
El idioma no se especifica en los mensajes de solicitud de búsquedas con contexto. Por lo tanto, si especificas <LanguageCode> en tus reglas de tarifas, la respuesta de With Context debe incluir todas las tarifas pertinentes específicas del idioma.
Tarifas condicionales submuestreadas
Las tarifas condicionales con reducción de muestras solo son visibles para un subconjunto aleatorio de todos los usuarios aptos. La frecuencia de muestreo se define con el elemento <MaxUsersPercent> y se calcula de la siguiente manera:
MaxUsersPercent = (number of users selected to view rate)/(total eligible users)
Tarifas condicionales con acceso
Los porcentajes de usuarios que accedieron a su cuenta solo son visibles para los usuarios que accedieron con una Cuenta de Google. Los socios de Google proporcionan las tarifas, y los usuarios pueden verlas y reservarlas en el sitio del socio. Los porcentajes de usuarios que accedieron se definen con el elemento <UserSignedIn>.
Dado que Google siempre selecciona la tarifa más baja apta, si una tarifa condicional es más alta que el precio establecido a nivel de <Result>, la tarifa condicional nunca se seleccionará. Para evitarlo, quita la tarifa a nivel de <Result> y establece condiciones para todas las tarifas. Como alternativa, pregúntale a tu administrador técnico de cuentas sobre el uso de una regla de tarifa predeterminada para los precios establecidos a nivel de <Result>.
Crea un archivo XML de reglas de tarifas
Las reglas de tarifas para las tarifas condicionales se definen con un archivo XML de reglas de tarifas. Para obtener más información, consulta la Referencia de XML para las reglas de tarifas.
Actualiza tu feed de precios
Las tarifas condicionales se establecen con el elemento en un mensaje de transacción.
El elemento <Rate> también se puede usar como varios elementos secundarios de <Rates> dentro de los elementos <RoomBundle> o <Result>. Para usarla como tarifa condicional, debes establecer el valor del atributo rate_rule_id para que coincida con el ID de regla de tarifa que definiste en el archivo XML de reglas de tarifas.
Si no tienes una tarifa pública predeterminada para ocupación doble, establece el elemento secundario <Baserate> del mensaje <Result> en -1. En este caso, se considerarán válidos todos los <Rates> condicionales que se envíen a Google.
Ejemplos
Básica + condicional
En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene una tarifa base y una tarifa condicional:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</Rate>
</Rates>
</Result>
</Transaction>
RoomBundle único
En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene una sola tarifa en un <RoomBundle>:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">300.00</Baserate>
<Tax currency="USD">30.00</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomBundle>
<RoomID>single</RoomID>
<Baserate currency="USD">300.00</Baserate>
<Tax currency="USD">30.00</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</RoomBundle>
<RoomBundle>
<RoomID>3</RoomID> <!-- Links to data in metadata -->
<RatePlanID>basic</RatePlanID>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<ChargeCurrency>web</ChargeCurrency>
<BreakfastIncluded>1</BreakfastIncluded>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">269.00</Baserate>
<Tax currency="USD">2.69</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rates>
</Rates>
</RoomBundle>
</Result>
</Transaction>
RoomBundle multiple
En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene varias tarifas en un <RoomBundle>:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL and it should be within 50 characters in length for optimal
performance. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
No hay habitaciones dobles disponibles para el público
En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene una tarifa condicional sin una tarifa pública de ocupación doble:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<!-- <Unavailable/> should not be specified when available nested rates
exist. -->
<Baserate currency="USD">-1</Baserate>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates. -->
<Rate rate_rule_id="mobile">
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Custom1>ratecode123</Custom1>
</Rate>
</Rates>
</Result>
</Transaction>
Actualiza el archivo de tu página de destino
Para asegurarte de que los usuarios finales aptos puedan reservar la tarifa con descuento a través de un vínculo directo, modifica tu archivo de página de destino. Es posible que también se necesite una implementación adicional en el sitio web de reservas para mostrar y aplicar correctamente las tarifas con descuento.
Esperamos que los socios respeten el precio que se muestra en el vínculo directo de la tarifa condicional.
En un vínculo directo dinámico, puedes incluir la regla de tarifa por su nombre, el atributo id del elemento <RateRule>, con la variable RATE-RULE-ID.
En el siguiente ejemplo, se agrega el ID de la regla de tarifas:
https://bookingsite.com/landing.do?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)¤cy=(USER-CURRENCY)&prid=(RATE-RULE-ID)
El archivo de página de destino también admite la directiva IF-RATE-RULE-ID, que te permite definir de forma condicional partes de la URL según si existe la regla de tarifa:
https://bookingsite.com/(IF-RATE-RULE-ID)privatelanding.do(RATE-RULE-ID)(ELSE)landing.do(ENDIF)?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)¤cy=(USER-CURRENCY)
En este ejemplo, se elige entre dos páginas de destino, según si se configuró el ID de la regla de tarifas.
Para obtener más información, consulta Usa variables y condiciones.