Los paquetes de habitaciones te permiten definir varios tipos de habitaciones para una sola propiedad o combinar el itinerario de una habitación con características de tarifas (servicios adicionales que incluyen una tarifa y condiciones de venta) para los usuarios más allá del 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 dispositivos de escritorio y dispositivos móviles:
Paquetes de habitaciones con imágenes
Este ejemplo es la versión para dispositivos móviles de los paquetes de Room, que consta de todos los diferentes tipos de habitaciones 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 cama.
Calificar 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 habitaciones
Puedes definir 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 transacción depende de lo que estés haciendo: definir los metadatos sobre el paquete de habitaciones o la función de tarifas, o actualizar los precios o la disponibilidad del paquete de habitaciones.
- Metadatos
- Define los metadatos de la función de paquete de habitaciones y de la tarifa 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 habitaciones usan elementos<RoomData>
existentes para las descripciones de habitaciones físicas. - Precios y disponibilidad
- Define los precios y la disponibilidad de los paquetes 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 base, los impuestos y otras tarifas de la habitación son obligatorios en <Result>
cuando no se utilizan con paquetes de habitación. Además, se pueden quitar cuando se utilizan con estos paquetes. Si quieres implementar paquetes de habitaciones con una cuenta activa, sigue estos pasos:
Incluye la tarifa, los impuestos y otras tarifas de la habitación base en
<Result>
y agrega un paquete de habitaciones que coincida con el paquete de habitaciones base.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.Después de lanzar el paquete de habitaciones, quita la tarifa, los impuestos y otras tarifas de la habitación base.
Metadatos del paquete de habitación
Cuando defines los paquetes de habitaciones y las funciones de las tarifas, por lo general, defines 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 los metadatos del paquete de habitación. Luego, puedes hacer referencia a estos metadatos en tus actualizaciones de precios, pero no los incluyas en los mensajes de actualización de precios.
Cuando definas paquetes de habitaciones, usa los elementos <RoomData>
existentes para las descripciones de las habitaciones físicas y los elementos <PackageData>
para las funciones y los términos de las tarifas 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 el 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 se suelen repetir para cada itinerario. Puedes usar los elementos <RoomData>
y <PackageData>
para definir este tipo de datos una vez. Luego, los datos del paquete de habitaciones específicos de itinerarios se combinan con las definiciones almacenadas de la habitación y el paquete para mostrárselos al usuario final.
Google busca coincidencias entre tus metadatos y tus datos específicos del itinerario para renderizar el contenido de tus anuncios. Se realiza 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 funciones de calificación y los detalles del paquete estén en <PackageData>
.
Si defines los datos de la habitación y los datos del paquete para una sola habitación o un paquete de habitaciones, Google los incluirá en el resultado del anuncio, separados por un guion.
Lineamientos relacionados con las fotos
Cuando envíes fotos de la habitación, sigue estos lineamientos para asegurarte de que se muestren a los usuarios:
Envía fotos de cada tipo de habitación, incluidas las de habitaciones accesibles (por ejemplo, habitaciones accesibles designadas con varios accesorios de baño, como ducha integrada).
Incluye al menos cuatro fotos de la habitación y al menos una foto del baño.
Las fotos deben ser de la habitación en sí, no de la propiedad. Las fotos más importantes son de la cama, la habitación completa, 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 las distintas características de la habitación.
Evita tomar fotos de personas y propiedades, por ejemplo, de comodidades exteriores o de propiedades, turismo o turismo, y comida.
Evita los primeros planos de objetos, como los de cristalería.
Evita el desarrollo de la marca y las marcas, aunque se pueden incluir artículos de tocador etiquetados o de marca en una foto que capture todo el área del baño. Las fotos no deben incluir grandes bloques de texto, logotipos ni marcas de agua.
Proporciona fotos estándar horizontales (horizontales) con un campo visual amplio. Evita las fotos distorsionadas y 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.
Prioridad de los datos
Los datos de los paquetes 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:
- Datos del socio (más bajos)
- Datos de la propiedad
<RoomData>
, en el que<RoomID>
coincide con<RoomID>
en el bloque<RoomBundle>
<PackageData>
, en el que<PackageID>
coincide con<PackageID>
en el bloque<RoomBundle>
- (más alta)
<RoomBundle>
Define los precios y la disponibilidad
Para definir los precios y la disponibilidad de los paquetes de habitaciones, 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>
. A continuación, se muestra un 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 habitación y del paquete con <RoomID>
y <PackageID>
.
Para cada <Result>
, el conjunto contenido 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 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 de tu página de destino dinámica (anteriormente, punto de venta). Para obtener más detalles, consulta Cómo usar 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 publicada, quita <Baserate>
después de que se habilite 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 habitaciones y paquetes
Para definir los metadatos del paquete de habitación, usa los elementos <PackageData>
y <RoomData>
dentro del elemento <PropertyDataSet>
de un mensaje de transacción.
Los metadatos de las habitaciones y los paquetes se definen en un mensaje de transacción que es independiente 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, comodidades y otros datos sobre cada habitación o paquete de cada itinerario.
Google almacena los metadatos por ti y los inserta en tus anuncios cuando se muestran. Puedes actualizar los metadatos de la sala y el paquete en cualquier momento con un nuevo mensaje de transacción.
En el mensaje de transacción, estableces un ID de paquete y un ID de habitación en cada bloque al que luego harás referencia en tus bloques <Result>
de actualizaciones de precios.
Si cambian los datos de la habitación y el paquete (por ejemplo, si agregas un tipo de habitación nuevo en una propiedad, envía un nuevo mensaje de transacción 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 volver a incluir toda esa información. 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 itinerarios y habitaciones cambian con mucha más frecuencia que las descripciones de habitaciones o 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, se pueden eliminar errores, como descripciones de habitaciones que no coinciden, usando metadatos en lugar de definir datos intercalados.
A continuación, se muestra el método recomendado y más eficiente para definir metadatos y 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 la ocupación y la 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. 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 puede alojar físicamente 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 estableces el precio de un paquete para dos huéspedes. Establece el valor de la capacidad de un paquete con el elemento secundario
<Capacity>
del elemento<RoomData>
.
Cuando se establece el precio de un paquete de habitación, se debe proporcionar el precio correspondiente a la cantidad de huéspedes a los que está destinado 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 de alojamientos con habitaciones compartidas, por ejemplo, un hostal. A modo de ejemplo, para establecer un precio por persona para una habitación compartida que tiene 8 camas, debes establecer la ocupación en 1
y la capacidad en 8
, y así identificarla en el nombre <RoomData>
. Consulta este ejemplo.
Actualiza los paquetes de habitaciones
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 uno existente.
Eliminación del paquete de habitaciones
Los paquetes de habitaciones son diferentes de los precios de los hoteles en la forma en que los quitas.
Para quitar una combinación de habitación o itinerario del inventario, debes establecer el <Baserate>
del elemento <Result>
en -1
. Para quitar un paquete de habitaciones para una habitación o un itinerario determinados, quita el elemento <RoomBundle>
del bloque <Result>
en el mensaje de transacción.
Los paquetes de habitaciones en tus feeds de datos se consideran un conjunto, que puede variar de 0 a decenas. Cuando envías paquetes de habitaciones a Google, envías el conjunto completo y actual. No debes cambiar los valores de un paquete de habitaciones individual para marcar uno que estaba disponible como no disponible. Cualquier conjunto de paquetes que se encuentre en el mensaje de transacción más reciente reemplazará al 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, vuelve a enviar el conjunto completo 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 actualizas el bloque <Result>
de una habitación o un itinerario en tus mensajes de transacción, debes incluir un conjunto completo de paquetes de habitaciones disponibles para cada <Result>
. Google reemplaza el conjunto existente de paquetes de Room 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 Room con una respuesta a un <Query>
de Google.
Respondes un mensaje de consulta con un mensaje de transacción que define los metadatos de la habitación y el paquete de los hoteles especificados. Para obtener más información, consulta Consulta de mensajes.