Usar las configuraciones de habitación

Esta sección está conformada por los siguientes temas:

Descripción general de las configuraciones de habitación

Además de incluir habitaciones más económicas de ocupación doble en el feed de precios del hotel, puede haber otras combinaciones de habitaciones con distintos paquetes de servicios. Se conocen como configuraciones de habitación. Con ellas, se pueden definir varios tipos de habitaciones para una única propiedad o combinar un itinerario de una habitación con servicios y condiciones de venta adicionales para los usuarios más allá de un precio estándar. Asimismo, puedes especificar nombres o descripciones para que resulten más atractivas a los usuarios.

En la siguiente imagen verás ejemplos de configuraciones de habitación:

En este ejemplo, es probable que la primera "configuración" sea la habitación base. La segunda es un tipo de habitación distinta en la misma propiedad. La tercera es un paquete "premium" de la habitación base, que puede incluir servicios tales como desayuno incluido o late check-out.

La aparición de configuraciones de habitación en los resultados de búsqueda se rige mediante el mismo proceso de selección que las tarifas de las habitaciones estándar. Si quieres obtener más información sobre las ventajas de las configuraciones de habitación, consulta Utilizar la configuración de habitación para aumentar el rendimiento.

Metadatos

Al definir configuraciones de habitación, se suelen establecer por adelantado la descripción, los servicios y otros datos. Esta información recibe el nombre de metadatos de la configuración de la habitación. Luego podrás hacer referencia a estos metadatos en las actualizaciones de precios, pero no debes incluirlos en los mensajes correspondientes.

Los elementos <RoomData> y <PackageData> definen los metadatos de las habitaciones y las configuraciones de habitación de las propiedades que no dependen de ningún itinerario. Pueden reducir significativamente el tamaño del feed porque reducen la cantidad de datos repetidos de los mensajes Transaction. Por ejemplo, la descripción y el nombre de una habitación suelen repetirse en todos los itinerarios. Puedes usar <RoomData> y <PackageData> para definir este tipo de datos una sola vez. Por otro lado, los datos que sí dependen de un itinerario en concreto se combinan posteriormente con las definiciones de paquetes y habitaciones guardadas.

Si defines los metadatos con <RoomID> o <PackageID>, Google usará estos ID para encontrar los metadatos guardados. Posteriormente, combinará dichos datos con información específica del itinerario para procesar el contenido de los anuncios. Hay un proceso especial para combinar el nombre y la descripción de los elementos <RoomData> y <PackageData>, de forma que se pueda describir la habitación en <RoomData> y los detalles del paquete en <PackageData>. Si defines los datos de la habitación y del paquete de una única habitación o configuración de habitación, Google incluirá ambos en el anuncio, separados por un guion.

Prioridad de los datos

Los datos de la configuración de habitación se recopilan de todas las fuentes y se combinan mediante reglas de prioridad, a fin de producir los datos finales de una configuración de habitación, un itinerario y un hotel determinados. El orden es el siguiente, de la prioridad más baja a la más alta:

  • <PartnerData>
  • <PropertyData>
  • <RoomData>, donde <RoomID> se corresponde con <RoomID> en el bloque <RoomBundle>
  • <PackageData>, donde <PackageID> se corresponde con <PackageID> en el bloque <RoomBundle>
  • <RoomBundle>

Sintaxis de la configuración de habitación

Las configuraciones de las habitaciones se definen en los mensajes Transaction. La estructura de este mensaje depende de si vas a definir los metadatos de la configuración de la habitación o actualizar la disponibilidad de sus precios.

Para definir los metadatos: utiliza un elemento <PackageData> dentro de un elemento <PropertyDataSet>. Para obtener más información, consulta Definir metadatos de habitación y paquete.

Para establecer la disponibilidad y los precios: Utiliza un elemento <RoomBundle> en <Result> por cada combinación de paquete/itinerario.

Debes definir al menos una configuración de habitación que se corresponda con la tarifa de la habitación base. A continuación, puedes definir otras configuraciones adicionales en el mismo bloque <Result> para otros tipos de habitaciones de esa propiedad o distintos paquetes de servicios.

A continuación te enseñamos la sintaxis para definir configuraciones de habitación:

Ver sintaxis

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="transaction_timestamp" id="transaction_id">
 <Result>
   <Property>hotel_id</Property>
   <Checkin>check-in_date</Checkin>
   <Nights>number_of_nights</Nights>
   <Baserate currency="currency_code">price</Baserate>
   <Tax currency="currency_code">taxes</Tax>
   <OtherFees currency="currency_code">other_fees</OtherFees>
   <ChargeCurrency>charge_currency</ChargeCurrency>
   <Custom1>customer_value_1</Custom1>
   <AllowablePointsOfSale>
      <PointOfSale id="POS_id"/>
   </AllowablePointsOfSale>
   <RoomBundle>
      <!-- Reference room or package metadata (more efficient than inline) -->
      <RoomID>room_ID</roomID>
      <PackageID>package_ID</packageID>
      
      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>

      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>

      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Custom1>custom_value_1</Custom1>
      <AllowablePointsOfSale>
        <PointOfSale id="POS_id"/>
      </AllowablePointsOfSale>
  </RoomBundle>
  ...
 </Result>
 ...
</Transaction>

Los siguientes elementos secundarios de cada elemento <RoomBundle> son obligatorios:

  • <BaseRate>
  • <OtherFees>
  • <Tax>

Además de estos, también puedes definir los valores de <Name> y otros elementos para que las configuraciones de habitación resulten mucho más atractivas a los clientes.

Las configuraciones de habitación admiten los mismos elementos secundarios que los elementos <PackageData> y <RoomData>. Para obtener más información sobre ellos, consulta Descripción general de los mensajes Transaction. Además de estos elementos secundarios, el elemento <RoomBundle> también toma los siguientes elementos secundarios opcionales:

  • <RoomID>: asigna la descripción de una habitación a una configuración de habitación.
  • <PackageID>: asigna la descripción de un paquete a una configuración de habitación.
  • <RatePlanID>: especifica el ID de la configuración de la habitación.

Además, puedes usar otros elementos como <Name> para que los clientes se sientan mucho más atraídos por tus configuraciones de habitación. En este caso, deberás definir los nombres y demás información descriptiva en los metadatos y asegurarte de que coincide con la página de inicio del hotel.

También puedes usar la siguiente sintaxis para intercalar los datos de la configuración de habitación:

Ver sintaxis

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="transaction_timestamp" id="transaction_id">
 <Result>
   <Property>hotel_id</Property>
   <Checkin>check-in_date</Checkin>
   <Nights>number_of_nights</Nights>
   <Baserate currency="currency_code">price</Baserate>
   <Tax currency="currency_code">taxes</Tax>
   <OtherFees currency="currency_code">other_fees</OtherFees>
   <ChargeCurrency>charge_currency</ChargeCurrency>
   <Custom1>customer_value_1</Custom1>
   <AllowablePointsOfSale>
      <PointOfSale id="POS_id"/>
   </AllowablePointsOfSale>
   <RoomBundle>
      <!-- Define data inline (less efficient) -->
      <RoomData>
        <Name>
           <Text text="room_name" language="language_code"/>
        </Name>
        <Description>
           <Text text="room_description" language="language_code"/>
        </Description>
        <PhotoURL>
          <Caption>
            <Text text="photo_caption" language="language_code"/>
          </Caption>
          <URL>image_location</URL>
        </PhotoURL>
        ...
        <Capacity>maximum_capacity_for_room</Capacity>
        <Occupancy>intended_number_of_occupants_for_package</Occupancy>
      </RoomData>
      <PackageData>
        <Name>
           <Text text="room_name" language="language_code"/>
        </Name>
        <Description>
           <Text text="room_description" language="language_code"/>
        </Description>
        <Occupancy>occupancy_limit</Occupancy>
        <ChargeCurrency>charge_currency</ChargeCurrency>
        <Refundable available="refund_avail" 
              refundable_until_days="refund_days"
              refundable_until_time="refund_time"/>
        <BreakfastIncluded>breakfast_included</BreakfastIncluded>
        <ParkingIncluded>parking_included</ParkingIncluded>
        <InternetIncluded>internet_included</InternetIncluded>
      </PackageData>
      <RatePlanID>rate_plan_id</RatePlanID>
      
      <!-- Required -->
      <Baserate currency="currency_code">price</Baserate>

      <!-- Required -->
      <Tax currency="currency_code">taxes</Tax>

      <!-- Required -->
      <OtherFees currency="currency_code">other_fees</OtherFees>

      <Custom1>custom_value_1</Custom1>
      <AllowablePointsOfSale>
        <PointOfSale id="POS_id"/>
      </AllowablePointsOfSale>
  </RoomBundle>
  ...
 </Result>
 ...
</Transaction>

No se recomienda intercalar los metadatos, porque aumenta en gran medida el tamaño de los mensajes Transaction y puede dar lugar a más errores.

Definir metadatos de paquetes y habitaciones

Puedes definir metadatos de paquetes y habitaciones en un mensaje Transaction que no tenga que ver con las actualizaciones de precios. Si defines estos datos por adelantado, no es necesario que las actualizaciones de precios incluyan información repetida como descripciones, URL de fotos, servicios y otros datos sobre todos los paquetes de habitaciones de cada uno de los itinerarios. Google guardará los datos por ti y los incluirá en los anuncios cuando se muestren. Puedes actualizar los metadatos de paquetes y habitaciones en cualquier momento, con un nuevo mensaje Transaction.

Para definir los metadatos de paquetes y habitaciones, envía un mensaje Transaction con los elementos <PackageData> o <RoomData>. Puedes definir un ID de paquete y un ID de habitación en cada bloque al que posteriormente puedes hacer referencia en los bloques de <Results> de las actualizaciones de precios. Si cambian los datos (por ejemplo, si añades un nuevo tipo de habitación a una propiedad), envía un nuevo mensaje Transaction con los datos del paquete y de la habitación actualizados.

Te recomendamos que definas los metadatos durante el proceso de configuración de Hotel Ads. Después, solo es necesario consultar los valores de <RoomID> y <PackageID> en las actualizaciones de precios en lugar de incluir de nuevo toda la información. Google usa estos ID para hacer coincidir las configuraciones de habitación y las habitaciones con los metadatos guardados. Si predefines los metadatos, toda la información de paquetes y de habitaciones se define (y se almacena gracias a Google) solo una vez, lo que elimina la necesidad de incluirlos en las actualizaciones de precios y reduce en gran medida el tamaño general de los mensajes Transaction.

Si los metadatos cambian, debes enviar un nuevo mensaje Transaction con las actualizaciones. Google sustituirá los metadatos de una habitación o paquete con los nuevos.

En el siguiente ejemplo se muestra un mensaje Transaction que define los metadatos de paquetes y habitaciones:

Ver ejemplo

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2015-04-24T20:44:56-04:00" id="TXNID">
  <!-- A transaction message with room types result. -->
  <PropertyDataSet>
    <Property>12345</Property>
    <RoomData>
      <RoomID>single</RoomID>
      <Name>
        <Text text="Single room" language="en"/>
      </Name>
      <Description><Text text="A single room" language="en"/></Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en" />
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/image1235.jpg</URL>
      </PhotoURL>
      <Capacity>2</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>double</RoomID>
      <Name><Text text="Double room" language="en"/></Name>
      <Occupancy>2</Occupancy>
    </RoomData>
    <PackageData>
      <PackageID>refundbreakfast</PackageID>
      <Name>
        <Text text="Refundable Room with Breakfast" language="en"/>
      </Name>
      <Description><Text text="Continental Breakfast" language="en"/></Description>
      <ChargeCurrency>hotel</ChargeCurrency>
      <Refundable available="1" refundable_until_days="3"/>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
    <PackageData>
      <PackageID>prepaid</PackageID>
      <Name><Text text="Nonrefundable" language="en"/></Name>
      <Description><Text text="Blah blah blad" language="en"/></Description>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="0"/>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Como los precios de las combinaciones de itinerarios y habitaciones cambian con mucha más frecuencia que las descripciones de paquetes o habitaciones, si defines metadatos en los mensajes Transaction aumentará con creces la eficiencia del proceso. Además, para corregir errores tales como descripciones de habitaciones que no coinciden es mucho más conveniente utilizar metadatos que intercalar los datos.

<PackageData> y <RoomData> son elementos secundarios de <PropertyDataSet>. Para obtener más información, consulta Elemento <PropertyDataSet>.

Actualizar metadatos con Push

Si utilizas el modo de envío Push para actualizar los precios, puedes enviar actualizaciones de metadatos de paquetes y habitaciones, como harías con cualquier otra actualización. En este caso debes enviar un mensaje Transaction con la nueva información en los bloques <RoomData> y <PackageData>, tal como se ha mostrado anteriormente.

Actualizar metadatos con Pull

Si utilizas el modo de envío Pull para actualizar los precios, también puedes aprovecharlo para actualizar los metadatos de paquetes y de habitaciones.

Google envía un mensaje Query con el siguiente formato:


<Query>
  <HotelInfoProperties>
    <Property>property_ID</Property>
    ...
  </HotelInfoProperties>
</Query>

Debes responder con un mensaje Transaction en el que se definen los metadatos de habitación y de paquete de los hoteles especificados. Para obtener más información, lee la información de Mensajes Query.

Comparar la ocupación y la capacidad

Cuando vayas a definir configuraciones de habitación, debes tener clara la diferencia entre ocupación y capacidad:

  • Ocupación es el número de huéspedes al que se desea aplicar una configuración de habitación. Por ejemplo, el "Paquete Luna de miel" tiene una ocupación de dos. Para definir el valor de ocupación de un paquete, se usa el elemento secundario <Occupancy> de <PackageData> o <RoomData>, tal como se describe en Descripción general de los mensajes Transaction.
  • Capacidad es el número máximo de personas que puede alojar físicamente una habitación. La capacidad de una habitación siempre es igual o superior a la de la ocupación. Por ejemplo, imaginemos que la "Suite Luna de miel" de su hotel tiene una capacidad máxima de seis personas, pero el precio es el de una configuración de dos huéspedes. Para definir el valor de ocupación de un paquete, usa el elemento secundario <Capacity> de <PackageData> o <RoomData>, tal como se describe en Descripción general de los mensajes Transaction.

Al establecer el precio de una configuración de habitación, debes indicar el precio para el número de huéspedes definido en la configuración (el valor de <Occupancy>). Es decir, si se ha configurado <Occupancy> como 2, el precio de ese paquete debe ser para dos personas. No puedes definir <Occupancy> para cuatro huéspedes y establecer el precio de la configuración para dos huéspedes.

Actualizar configuraciones de habitación

Para cambiar el precio de una configuración de habitación, define el nuevo valor de Baserate en el elemento <Result>. Las configuraciones de habitación se actualizan de forma diferente a los precios del hotel. Un precio de hotel es positivo (disponible para todo el itinerario a un precio determinado) o -1 (no disponible). Para quitar una combinación de itinerario/habitación del inventario, se define el valor de Baserate de Result como -1. Para eliminar una configuración de habitación de una habitación/itinerario, debes quitar el elemento <RoomBundle> de <Result> en el mensaje Transaction.

Cada vez que actualices el bloque <Result> de una habitación/itinerario en los mensajes Transaction, debes incluir un conjunto completo de configuraciones de habitación disponibles para cada <Result>. Hotel Ads sustituye el conjunto actual de configuraciones de habitación con el nuevo conjunto. Si no incluyes configuraciones de habitación en <Result>, Hotel Ads eliminará todas las configuraciones de hoteles de esa habitación/itinerario.

Ejemplo de una configuración de habitación

En el siguiente ejemplo se muestran dos configuraciones de habitación para un itinerario concreto (2 noches a partir del 07/06/2015):

Ejemplo

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2015-04-24T20:44:56-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2015-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="bookingsite1.com" />
    </AllowablePointsOfSale>

    <!-- Base Rate Room Bundle -->
    <RoomBundle>
      <RoomData>
        <RoomID>single</RoomID>
      </RoomData>
      <!-- Price for 2 ("occupancy") -->         
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
    </RoomBundle>
    
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <PackageData>
        <RoomID>specialsingle</RoomID>
      </PackageData>
      <!-- Price for 2 ("occupancy") -->         
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

En este ejemplo se hace referencia a metadatos de paquetes y habitaciones predefinidos (a los que hacen referencia <RoomID> y <PackageID>), tal como se describe en Definir metadatos de paquetes y habitaciones.

Ten en cuenta que cuando añades configuraciones de habitación, debes incluir una que coincida con el valor de Baserate básico de la habitación.

Por cada elemento <Result>, el conjunto de configuraciones de habitación sobrescribe el conjunto actual en esa combinación de itinerario/propiedad. Si no defines ninguna configuración de habitación en <Result>, todas las configuraciones de habitación se eliminarán y solo aparecerá la habitación base de ese itinerario/hotel en los resultados de búsqueda

En el siguiente ejemplo se muestran las mismas configuraciones de habitación con los datos de paquetes y habitaciones definidos en línea:

Ejemplo

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2014-04-24T20:44:56-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2015-06-07</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <AllowablePointsOfSale>
      <PointOfSale id="bookingsite1.com" />
    </AllowablePointsOfSale>

    <!-- Base Rate Room Bundle -->
    <RoomBundle>
      <RoomData>
        <Name>
          <Text text="Single Queen Room - Non-Smoking" language="en" />
        </Name>
        <!-- Room can accommodate 4, but bundle is for 2 -->         
        <Capacity>4</Capacity>
        <Occupancy>2</Occupancy>
      </RoomData>
      <PackageData>
        <Occupancy>2</Occupancy>
        <ChargeCurrency>web</ChargeCurrency>
        <Refundable available="1" refundable_until_days="7"
             refundable_until_time="18:00:00" />
        <ParkingIncluded>1</ParkingIncluded>
        <InternetIncluded>1</InternetIncluded>
      </PackageData>
      <!-- Price for 2 ("occupancy") -->         
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
    </RoomBundle>
    

    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomData>
        <Name>
          <Text text="Premium King Room - Non-Smoking" language="en" />
        </Name>
        <!-- Room can accommodate 4, but bundle is for 2 -->         
        <Capacity>4</Capacity>
        <Occupancy>2</Occupancy>
      </RoomData>
      <PackageData>
        <Occupancy>2</Occupancy>
        <ChargeCurrency>web</ChargeCurrency>
        <Refundable available="1" refundable_until_days="1"
             refundable_until_time="18:00:00" />
        <BreakfastIncluded>1</BreakfastIncluded>
        <ParkingIncluded>1</ParkingIncluded>
        <InternetIncluded>1</InternetIncluded>
      </PackageData>
      <!-- Price for 2 ("occupancy") -->         
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
    </RoomBundle>
  </Result>
</Transaction>

Elementos como <RoomData> y <PackageData> contienen información común a muchas configuraciones de habitación. En lugar de incluir la misma información en cada configuración de habitación, puedes definir los valores de estos elementos una vez y posteriormente hacer referencia a las definiciones con un ID de paquete o de habitación. Para obtener más información, consulta Definir metadatos de paquetes y habitaciones.

¿Te ha resultado útil esta información?
¿Cómo podemos mejorar esta página?