Paquetes de habitaciones

Los paquetes de habitaciones te permiten definir varios tipos de habitaciones para una sola propiedad o combinar el itinerario de una habitación con funciones de tarifas (servicios adicionales que se incluyen con una tarifa y condiciones de venta) para los usuarios más allá de un precio estándar.

Conceptos clave y flujo de trabajo

Con los paquetes de habitaciones, puedes ofrecer combinaciones adicionales de tipos de habitaciones físicas con diferentes paquetes de servicios.

Ejemplos

En las siguientes imágenes, se muestran ejemplos de paquetes de Room en computadoras y dispositivos móviles:

Paquetes de habitación con imágenes

Este ejemplo es la versión para dispositivos móviles de los paquetes de habitaciones, que consta de todos los tipos de habitaciones diferentes para la cantidad requerida de ocupantes y sus respectivas imágenes de habitaciones.

Nota: Los paquetes de habitaciones sin imágenes se reemplazan por una imagen de marcador de posición de una cama.

Tarifas de funciones

En las siguientes imágenes, se muestran ejemplos de funciones de tarifas:

La aparición de los paquetes de habitaciones y las funciones de tarifas en los resultados de la búsqueda se rige por el mismo proceso de selección que las tarifas de habitación estándar.

Paquetes de habitación

Defines los paquetes de habitaciones y las funciones de tarifas en los mensajes de transacción. El elemento raíz de un mensaje de transacción es <Transaction>.

La estructura del mensaje de Transaction depende de lo que hagas: definir los metadatos sobre el paquete de habitaciones o la función de tarifas, o actualizar el precio o la disponibilidad del paquete de habitaciones.

Metadatos
Define los metadatos de la función de paquetes de habitaciones y tarifas con <PackageData> en un elemento <PropertyDataSet>. Para obtener más información, consulta Cómo definir metadatos de habitación y paquete. Los paquetes de habitación usan elementos <RoomData> existentes para las descripciones de las habitaciones físicas.
Precios y disponibilidad
Define el precio y la disponibilidad del paquete de habitaciones con el elemento <RoomBundle> en un <Result> para cada combinación de paquete o itinerario. Para obtener más información, consulta Cómo definir los precios y la disponibilidad.

La tarifa, los impuestos y otros cargos de la habitación básica son obligatorios en <Result> cuando no se usan con paquetes de habitaciones, y se pueden quitar cuando se usan con paquetes de habitaciones. Si implementas Room Bundles con una cuenta activa, sigue estos pasos:

  1. Incluye la tarifa, los impuestos y otras comisiones de la habitación base en <Result> y agrega un paquete de habitaciones que coincida con el paquete de habitaciones base.

  2. Si es necesario, define paquetes de habitaciones adicionales dentro del mismo bloque <Result> para otros tipos de habitaciones en esa propiedad o diferentes paquetes de servicios.

  3. Después del lanzamiento del paquete de habitaciones, quita la tarifa, los impuestos y otras comisiones de la habitación base.

Metadatos del paquete de habitación

Cuando defines paquetes de habitaciones y funciones de tarifas, sueles definir la descripción, los servicios adicionales que forman parte de la tarifa y otra información sobre el paquete de habitaciones con anticipación. Esta información se conoce como metadatos del paquete de habitación. Luego, haces referencia a estos metadatos en tus actualizaciones de precios, pero no los incluyes en los mensajes de actualización de precios.

Cuando definas paquetes de habitaciones de Room, usa elementos <RoomData> existentes para las descripciones de habitaciones físicas y elementos <PackageData> para las funciones de tarifas y las condiciones que no forman parte de la descripción de la habitación física.

El uso de los elementos <RoomData> y <PackageData> puede reducir significativamente el tamaño de tu lista de hoteles y tu feed de precios de hoteles, ya que disminuye la cantidad de datos repetitivos que se envían en los mensajes de transacción.

Por ejemplo, los datos como el nombre y la descripción de una habitación suelen repetirse en cada itinerario. Puedes usar los elementos <RoomData> y <PackageData> para definir este tipo de datos una sola vez. Luego, los datos del paquete de habitaciones específicos del itinerario se combinan con las definiciones de habitaciones y paquetes almacenadas para mostrárselos al usuario final.

Google correlaciona tus metadatos con los datos específicos de tu itinerario para renderizar el contenido de tus anuncios. Existe un procesamiento especial para combinar los nombres y las descripciones de los elementos <RoomData> y <PackageData>, lo que permite que la habitación física se describa en <RoomData> y que las características de las tarifas y los detalles de los paquetes se encuentren en <PackageData>.

Si defines los datos de la habitación y del paquete para una sola habitación o un paquete de habitaciones, Google incluirá ambos en el resultado del anuncio, separados por un guion.

Lineamientos relacionados con las fotos

Cuando envíes fotos de habitaciones, sigue estos lineamientos para asegurarte de que se muestren a los usuarios:

  • Envía fotos de cada tipo de habitación, incluidas las fotos de las habitaciones accesibles (por ejemplo, habitaciones accesibles designadas con varios accesorios de baño, como una ducha integrada).

  • Incluye al menos cuatro fotos de la habitación y al menos una del baño.

  • Las fotos deben ser de la habitación en sí, no de la propiedad. Las fotos más importantes son las de la cama, toda la habitación, el baño, el espacio de estar y la vista desde la habitación (con el resto de la habitación en la misma foto) y, si corresponde, el balcón, el patio o la terraza.

    También es útil tomar fotos del escritorio, la cocina, las cafeteras y teteras, y las características distintivas de la habitación.

  • Evita las fotos de personas y propiedades (por ejemplo, exteriores o servicios de la propiedad), de turismo o de comida.

  • Evita los primeros planos de objetos, como los de copas.

  • Evita incluir marcas y elementos de marca, aunque se pueden incluir artículos de tocador etiquetados o de marca en una foto que capture toda el área del baño. Las fotos no deben incluir grandes bloques de texto, logotipos ni marcas de agua.

  • Proporciona fotos horizontales estándar con un campo visual amplio; evita las fotos distorsionadas y de ojo de pez. Captura fotos con la resolución más alta para mejorar la clasificación. No es necesario que envíes la misma foto en varias resoluciones.

Precedencia de datos

Los datos del paquete de habitaciones se recopilan de todas las fuentes y se combinan, con reglas de prioridad, para producir los datos finales de un hotel, un itinerario y un paquete de habitaciones determinados. El orden es el siguiente, de menor a mayor prioridad:

  1. Datos del socio (más bajos)
  2. Datos de la propiedad
  3. <RoomData>, donde el <RoomID> coincide con el <RoomID> del bloque <RoomBundle>
  4. <PackageData>, donde el <PackageID> coincide con el <PackageID> del bloque <RoomBundle>
  5. (Más alto) <RoomBundle>

Cómo definir los precios y la disponibilidad

Para definir los precios y la disponibilidad de los paquetes de habitación, usa un elemento <RoomBundle> en un mensaje de Transaction para cada combinación de paquete o itinerario. El elemento <RoomBundle> debe estar dentro del elemento <Result>. Se muestra el código de muestra para dos elementos <RoomBundle>. Ten en cuenta que, en este ejemplo, los dos elementos <RoomBundle> hacen referencia a los metadatos de la sala y del paquete con <RoomID> y <PackageID>.

Para cada <Result>, el conjunto incluido de paquetes de habitaciones reemplaza el conjunto existente para esa combinación de propiedad o itinerario. Si no defines ningún paquete de habitaciones ni funciones de tarifas en el elemento <Result>, se quitarán todos los paquetes de habitaciones y solo aparecerá la habitación básica de ese hotel o itinerario en los resultados de la búsqueda.

Asegúrate de usar elementos como <Name> para que tus paquetes de habitaciones sean más atractivos para los clientes potenciales y asegúrate de que coincidan con la página de destino del hotel. En este ejemplo, definirías nombres y otra información descriptiva en los metadatos.

<RatePlanID> es opcional y representa el identificador único de una combinación de habitación y paquete. Te recomendamos que uses RatePlanID como variable para compilar la URL dinámica de la página de destino (anteriormente, punto de venta). Para un rendimiento óptimo, debe tener una longitud de hasta 50 caracteres. Para obtener más detalles, consulta Usa variables y condiciones.

Los siguientes elementos son opcionales en los paquetes de habitaciones:

<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>

Cuando implementes el paquete de habitaciones en una cuenta activa, quita <Baserate> después de habilitar el paquete de habitaciones.

<Result>
  <!-- Note: When using Room Bundles, the top level result price is no
       longer necessary. -->
  <Property>180054</Property>
  <Checkin>2017-10-07</Checkin>
  <Nights>2</Nights>
  <!-- Base Room Bundle -->
  <RoomBundle>
    <RoomID>060773</RoomID>
    <PackageID>P54321</PackageID>
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</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. For details, see Using Variables and Conditions. -->
    <RatePlanID>060773-P54321</RatePlanID>
  </RoomBundle>
  <!-- Premium Room Bundle -->
  <RoomBundle>
    <RoomID>436233</RoomID>
    <PackageID>P12345</PackageID>
    <!-- Price for 4 ("occupancy") -->
    <Baserate currency="USD">298.88</Baserate>
    <Tax currency="USD">42.12</Tax>
    <OtherFees currency="USD">10.00</OtherFees>
    <RatePlanID>436233-P12345</RatePlanID>
  </RoomBundle>
</Result>

Define los metadatos de la habitación y el paquete

Para definir los metadatos del paquete de habitaciones, usa los elementos <PackageData> y <RoomData> dentro del elemento <PropertyDataSet> de un mensaje de transacción.

Defines los metadatos de la habitación y el paquete en un mensaje de Transaction que está separado de los datos de precios y disponibilidad. Si defines estos datos con anticipación, tus actualizaciones de precios no necesitarán incluir información repetitiva, como descripciones, URLs de fotos, servicios y otros datos sobre cada habitación o paquete para cada itinerario.

Google almacena los metadatos por ti y los inserta en tus anuncios cuando se muestran. Puedes actualizar los metadatos de la habitación y el paquete en cualquier momento con un nuevo mensaje de Transaction.

En el mensaje de transacción, debes establecer un ID de paquete y un ID de habitación en cada bloque, a los que luego harás referencia en los bloques <Result> de las actualizaciones de precios.

Si cambian los datos de la habitación y el paquete (por ejemplo, si agregas un nuevo tipo de habitación en una propiedad), envía un nuevo mensaje de Transaction que contenga los datos actualizados de la habitación y el paquete. Google reemplazará los metadatos existentes sobre una habitación o un paquete con los datos nuevos.

Google recomienda que definas los metadatos durante la configuración inicial. Después de predefinir los metadatos, solo debes hacer referencia a los valores <RoomID> y <PackageID> en tus actualizaciones de precios en lugar de incluir toda esa información nuevamente. Google usa esos IDs para hacer coincidir las habitaciones y los paquetes de habitaciones con los metadatos almacenados. Esto puede reducir en gran medida el tamaño general de tus mensajes de transacción.

Dado que los precios de las combinaciones de habitaciones o itinerarios cambian con mucha más frecuencia que las descripciones de las habitaciones o los paquetes, definir los metadatos una vez y, luego, hacer referencia a ellos es un uso mucho más eficiente de los mensajes de transacción. Además, los errores, como las descripciones de habitaciones que no coinciden, se pueden eliminar usando metadatos en lugar de definir los datos de forma intercalada.

A continuación, se muestra el método recomendado y más eficiente para definir los metadatos y los precios por separado:

<!-- Efficient method of defining Room Bundles -->
<!----- Occupancy of 2 and 4 example ------>

<Transaction timestamp="2019-04-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note: Once defined it does not have to be repeated for future Transaction Messages. -->
  <!--       PropertyDataSets can also be defined and sent in their own Transaction Message -->
  <!--       separately from pricing. Google can be configured to pull just PropertyDataSets -->
  <!--       once per day (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4, but bundle is for 2 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageQueen.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4 and bundle is for 4 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageKing.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P54321</PackageID>
      <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>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <BreakfastIncluded/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>

    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</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. For details, see Using Variables and Conditions. -->
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy") -->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>060773-P12345</RatePlanID>
    </RoomBundle>
    <!-- Continue providing all available RoomBundle rates under matched
         property for any other occupancies -->
  </Result>
</Transaction>

Ocupación y capacidad

Cuando definas los paquetes de habitaciones, debes comprender la diferencia entre ocupación y capacidad:

Ocupación
Es la cantidad de huéspedes a los que está destinado un paquete de habitaciones. Por ejemplo, el “Paquete de luna de miel” tiene una ocupación de dos personas. Para establecer el valor de la ocupación de un paquete, usa el elemento secundario <Occupancy> de los elementos <PackageData> o <RoomBundle>.
Capacidad
Es la cantidad máxima de personas que pueden entrar en una habitación. La capacidad de una habitación siempre es igual o superior a la ocupación. Por ejemplo, la "Suite de luna de miel" de tu hotel tiene una capacidad máxima de seis personas, pero tú le pones precio a un paquete para dos huéspedes. Para establecer el valor de la capacidad de un paquete, usa el elemento secundario <Capacity> del elemento <RoomData>.

Cuando establezcas el precio de un paquete de habitaciones, debes indicar el precio para la cantidad de huéspedes para la que está diseñado el paquete (el valor especificado en el elemento <Occupancy> del paquete). Si <Occupancy> se establece en dos, el precio de ese paquete debe ser para dos personas. No puedes establecer <Occupancy> en cuatro huéspedes y establecer el precio del paquete para dos huéspedes.

Habitaciones compartidas

También puedes usar la ocupación y la capacidad en los paquetes de habitaciones para establecer precios para alojamientos con habitaciones compartidas, por ejemplo, un hostal. Por ejemplo, para establecer un precio por persona para una habitación de dormitorio que tiene 8 camas, debes establecer la ocupación en 1 y la capacidad en 8, y, luego, identificarla como tal en el nombre <RoomData>. Ver ejemplo.

Actualiza paquetes de habitación

En esta sección, se describe cómo quitar un paquete de habitación que ya no está disponible y cómo actualizar el precio de un paquete de habitación existente.

Eliminación del paquete de habitación

Los paquetes de habitaciones se quitan de forma diferente a los precios de los hoteles.

Para quitar una combinación de habitación o itinerario del inventario, configura el elemento <Result> en -1.<Baserate> Para quitar un paquete de habitación para una habitación o un itinerario determinados, quita el elemento <RoomBundle> del bloque <Result> en el mensaje de Transaction.

Los paquetes de habitaciones en tus feeds de datos se consideran un conjunto, que puede incluir desde 0 hasta decenas de ellos. Cuando envías paquetes de habitaciones a Google, envías el conjunto completo y actual. No cambias los valores de un paquete de habitaciones individual para marcar como no disponible uno que estaba disponible anteriormente. El conjunto de paquetes que se encuentre en el mensaje Transaction más reciente reemplazará el conjunto actual.

Por ejemplo, hay paquetes A, B, C y D. Primero, envías un mensaje que define el conjunto de paquetes de habitaciones A, B, C y D. Más adelante, si se agota el paquete B, vuelves a enviar todo el conjunto solo con los paquetes A, C y D. Si se agotaron todos los paquetes de habitaciones, envía un conjunto vacío de paquetes de habitaciones.

Ajustes de precios

Para cambiar el precio de un paquete de habitaciones, establece el nuevo <Baserate> en el elemento <Result>.

Cada vez que actualices el bloque <Result> de una habitación o un itinerario en tus mensajes de Transaction, debes incluir un conjunto completo de paquetes de habitaciones disponibles para cada <Result>. Google reemplaza el conjunto existente de paquetes de sala por el nuevo. Si no incluyes ningún paquete de habitaciones en <Result>, Google quitará todos los paquetes de habitaciones para esa habitación o itinerario.

Actualizaciones de metadatos

Actualizas los metadatos del paquete de habitaciones con una respuesta a un <Query> de Google.

Respondes a un mensaje de Query con un mensaje de Transaction que define los metadatos de la habitación y el paquete para los hoteles especificados. Para obtener más información, consulta Mensajes de consulta.