Tarifas condicionales

Las tarifas condicionales son un tipo de regla de tarifas que te permite ofrecer diferentes tarifas para los itinerarios en función de criterios como el dispositivo o el país del usuario, o si el usuario accedió a Google.

Cuando tienes más de una tarifa pública o tarifa condicional para un itinerario o un paquete de habitaciones, el usuario verá la tarifa más baja. Google siempre elige la tarifa más baja que sea apta para el usuario.

Descripción general

Las tarifas condicionales son visibles en las ranuras de precios estándar y solo se muestran a los usuarios cuyas búsquedas cumplen con los criterios de la tarifa condicional asociada. Estos criterios pueden basarse en lo siguiente:

Para habilitar las tarifas condicionales, modifica lo siguiente:

Tarifas condicionales específicas de dispositivos

Las tarifas específicas de dispositivos son tarifas de hoteles que solo son visibles y reservables para 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 de dispositivos en el sitio del socio.

fenced_rates

Tarifas condicionales específicas de países

Las tarifas específicas de países son tarifas de hoteles que solo son visibles y reservables para los usuarios que buscan hoteles desde un país específico. Google determina el país con la dirección IP del usuario final. Los socios de Google proporcionan las tarifas, y los usuarios finales pueden ver y reservar las mismas tarifas específicas de países en el sitio específico de países del socio.

Tarifas condicionales específicas de idiomas

Las tarifas específicas de idiomas solo son visibles para los usuarios que buscan hoteles mientras utilizan una configuración de idioma específica en Google. Las condiciones específicas de idiomas se definen con el elemento <LanguageCode>.

El idioma no se especifica en los mensajes de solicitud de consultas con contexto. Por lo tanto, si especificas <LanguageCode> en tus reglas de tarifas, entonces la respuesta con contexto debe incluir todas las tarifas específicas de idiomas pertinentes.

Tarifas condicionales submuestreadas

Las tarifas condicionales submuestreadas solo son visibles para un subconjunto aleatorio de todos los usuarios aptos. La tasa de muestreo se define con el <MaxUsersPercent> elemento y se calcula de la siguiente manera:

MaxUsersPercent = (number of users selected to view rate)/(total eligible users)

Tarifas condicionales de acceso

Las tarifas de acceso 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. Las tarifas de acceso se definen con el <UserSignedIn> elemento.

Dado que Google siempre selecciona la tarifa más baja que sea apta, si una tarifa condicional es más alta que el precio establecido en el nivel <Result>, la tarifa condicional nunca se seleccionará. Para evitar esto, quita la tarifa en el <Result> nivel y condiciona todas las tarifas. Como alternativa, pregúntale a tu administrador técnico de cuentas sobre el uso de una regla de tarifas predeterminada para los precios establecidos en el <Result> nivel.

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

El elemento <Rate> también se puede usar como varios elementos secundarios de <Rates> dentro de los elementos <RoomBundle> o <Result>. Para usarlo como una tarifa condicional, debes establecer el valor del atributo rate_rule_id para que coincida con el ID de la regla de tarifas que definiste en el archivo en formato XML de reglas de tarifas.

Si no tienes una tasa de ocupación doble pública predeterminada, establece el <Baserate> elemento secundario del mensaje <Result> en -1. En este caso, cualquier condicional <Rates> que se envíe a Google se considerará válida.

Ejemplos

Base + 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 individual

En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene una sola tarifa en <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 múltiple

En el siguiente ejemplo, se muestra un mensaje de Transaction que contiene varias tarifas en <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>

Sin ocupación doble pública

En el siguiente ejemplo, se muestra un mensaje de transacción que contiene una tarifa condicional sin tasa de ocupación doble pública:

<?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 tu archivo de 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 cumplir 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 tarifas por su nombre, el id atributo del <RateRule> elemento, con la RATE-RULE-ID variable.

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)&currency=(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 tarifas:

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)&currency=(USER-CURRENCY)

En este ejemplo, se elige entre dos páginas de destino, según si se establece el ID de la regla de tarifas.

Para obtener más información, consulta Usa variables y condiciones.