Offres de chambres

Les offres de chambres vous permettent de définir plusieurs types de chambres pour un même établissement, ou de combiner un séjour dans une chambre avec des caractéristiques tarifaires (services supplémentaires proposés avec un tarif et des conditions de vente) pour vos utilisateurs en plus des tarifs standards.

Concepts clés et processus

Avec les offres de chambres, vous pouvez proposer des combinaisons supplémentaires alliant types de chambres et différentes formules de services.

Vous trouverez dans l'image suivante des exemples d'offres de chambres :

Dans cet exemple, la première offre correspond probablement à la chambre de base, avec une remise pour un occupant adulte seul. La deuxième correspond à un autre type de chambre, pouvant accueillir jusqu'à trois adultes. La troisième correspond à un type de chambre encore différent dans le même établissement. Enfin, la quatrième est une formule "premium" de la chambre de base, qui peut inclure des services comme le petit-déjeuner gratuit ou un départ tardif.

Les images suivantes illustrent des exemples de caractéristiques tarifaires :

L'affichage des offres de chambres et des caractéristiques tarifaires dans les résultats de recherche suit le même processus de sélection que les tarifs des chambres standards.

Définir des offres de chambres

Vous définissez les offres de chambres et les caractéristiques tarifaires dans les messages Transaction. L'élément racine d'un message Transaction est <Transaction>.

La structure de ce message dépend de l'opération que vous souhaitez effectuer : définir les métadonnées de l'offre de chambres ou de la caractéristique tarifaire, ou mettre à jour les tarifs/disponibilités d'une offre de chambres.

Métadonnées
Définissez les métadonnées d'offre de chambres et de caractéristique tarifaire avec <PackageData> dans un élément <PropertyDataSet>. Pour en savoir plus, consultez la section Définir des métadonnées de chambres et de formules. Les offres de chambres utilisent les éléments <RoomData> existants pour la description des chambres physiques.
Prix et disponibilités
Définissez les prix et les disponibilités d'offre de chambres avec l'élément <RoomBundle> dans un élément <Result> pour chaque combinaison formule/séjour. Pour en savoir plus, consultez la section Définir les tarifs et les disponibilités.

Métadonnées d'offres de chambres

Lorsque vous définissez des offres de chambres et des caractéristiques tarifaires, vous indiquez généralement à l'avance la description, les services supplémentaires inclus dans le tarif et d'autres renseignements. Toutes ces informations sont appelées les métadonnées d'offre de chambres. Vous faites ensuite référence à ces métadonnées dans les messages de mise à jour de vos prix, mais sans les inclure.

Lorsque vous définissez des offres de chambres, utilisez les éléments <RoomData> existants pour les descriptions des chambres physiques, et des éléments <PackageData> pour les conditions et caractéristiques tarifaires qui ne font pas partie de la description des chambres physiques.

L'utilisation des éléments <RoomData> et <PackageData> peut réduire considérablement la taille de votre liste d'hôtels et de votre flux Prix de l'hôtel, car elle réduit la quantité de données répétitives envoyées dans les messages Transaction.

Par exemple, des données comme le nom et la description d'une chambre sont généralement répétées pour tous les séjours. Vous pouvez utiliser les éléments <RoomData> et <PackageData> pour définir ce type de données une seule fois. Les données d'offre de chambres spécifiques au séjour sont ensuite fusionnées avec les définitions de chambres et de formules stockées lors de l'affichage pour l'utilisateur final.

Google met en correspondance vos métadonnées avec les données spécifiques au séjour afin d'afficher le contenu de vos annonces. L'association des noms et descriptions des éléments <RoomData> et <PackageData> fait l'objet d'un traitement spécial, qui permet de décrire la chambre physique dans <RoomData>, et d'indiquer les caractéristiques tarifaires et les détails des formules dans <PackageData>.

Si vous définissez à la fois des données de chambre et des données de formule pour une même chambre ou offre de chambres, Google affiche ces deux types de données dans votre annonce, en les séparant par un trait d'union.

Priorité des données

Les données sur les offres de chambres sont recueillies auprès de toutes les sources disponibles. Elles sont associées selon des règles de priorité afin d'afficher les données finales pour l'hôtel, le séjour et l'offre de chambres sélectionnés. Les données respectent l'ordre de priorité croissant suivant :

  1. (Priorité la plus faible) Données partenaire
  2. Données établissement
  3. <RoomData>, où <RoomID> correspond à <RoomID> dans le bloc <RoomBundle>
  4. <PackageData>, où <PackageID> correspond à <PackageID> dans le bloc <RoomBundle>
  5. (Priorité la plus élevée) <RoomBundle>

Définir les tarifs et les disponibilités

Pour définir les prix et les disponibilités d'une offre de chambres, utilisez un élément <RoomBundle> dans un message Transaction pour chaque combinaison formule/séjour. L'élément <RoomBundle> doit se trouver dans l'élément <Result>. Un exemple de code pour deux éléments <RoomBundle> est présenté ci-dessous. Notez que, dans cet exemple, les deux éléments <RoomBundle> font référence aux métadonnées de chambre et de formule à l'aide de <RoomID> et de <PackageID>.

Lorsque vous utilisez des offres de chambres, vous devez en inclure une qui correspond au tarif de base, aux taxes et aux frais associés à la chambre (spécifiés dans l'élément enfant <Baserate> de <RoomBundle>).

Pour chaque élément <Result>, l'ensemble d'offres de chambres inclus remplace l'ensemble existant pour cette combinaison établissement/séjour. Si vous ne définissez aucune offre de chambres ou caractéristique tarifaire dans l'élément <Result>, toutes les offres de chambres sont supprimées, et seule la chambre de base pour cet hôtel/ce séjour s'affiche dans les résultats de recherche.

Veillez à utiliser des éléments tels que <Name> afin que vos offres de chambres soient plus attrayantes pour les clients potentiels, et assurez-vous qu'elles correspondent à la page de destination de l'hôtel. Dans cet exemple, vous allez définir des noms et d'autres informations descriptives dans les métadonnées.

<RatePlanID> est une valeur facultative qui représente l'identifiant unique d'une combinaison chambre/formule. Nous vous recommandons vivement d'utiliser RatePlanID comme variable pour créer votre URL de page de destination (anciennement point de vente) dynamique. Pour plus d'informations, consultez la page Utiliser des variables et des conditions.
<Result>
  <!-- Note: By default, the top level result price should be the cheapest
       price available for a minimum of 2 occupants. -->
  <Property>180054</Property>
  <Checkin>2017-10-07</Checkin>
  <Nights>2</Nights>
  <!-- The Baserate, Tax, and OtherFees elements below are optional. If
  provided, these elements much match at least one room bundle pricing
  below -->
  <Baserate currency="USD">199.99</Baserate>
  <Tax currency="USD">25.12</Tax>
  <OtherFees currency="USD">2.00</OtherFees>
  <Occupancy>2</Occupancy>
  <OccupancyDetails>
    <NumAdults>2</NumAdults>
  </OccupancyDetails>

  <!-- Base Room Bundle -->
  <RoomBundle>
    <RoomID>060773</RoomID>
    <PackageID>P54321</PackageID>
    <!-- Price for 2 ("occupancy") is repeated and matches the Baserate and
         attributes provided above -->
    <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>

Définir des métadonnées de chambres et de formules

Pour définir des métadonnées d'offres de chambres, utilisez les éléments <PackageData> et <RoomData> dans l'élément <PropertyDataSet> d'un message Transaction.

Définissez les métadonnées de chambres et de formules dans un message Transaction distinct des données sur les tarifs et les disponibilités. Si vous fournissez ces données à l'avance, vos messages de mise à jour des prix n'ont pas besoin d'inclure des informations répétitives comme les descriptions, les URL de photos, les services proposés et d'autres données concernant chaque combinaison chambre/formule pour tous les séjours.

Google stocke les métadonnées pour vous et les insère dans vos annonces lors de leur diffusion. Vous pouvez modifier les métadonnées de vos chambres et de vos formules à tout moment en envoyant un nouveau message Transaction.

Dans le message Transaction, vous définissez un ID de formule et un ID de chambre sur chaque bloc que vous référencez ensuite dans les blocs <Result> de vos mises à jour de prix.

Si vous devez modifier les données de chambre et de formule (par exemple, si vous proposez un nouveau type de chambre dans un établissement), envoyez un nouveau message Transaction contenant les données de chambre et de formule modifiées. Google remplace alors les métadonnées existantes pour une chambre ou une formule par les nouvelles données transmises.

Google vous recommande de définir vos métadonnées lors de la configuration initiale. Après avoir prédéfini les métadonnées, il vous suffit de référencer les valeurs <RoomID> et <PackageID> dans vos mises à jour de tarifs au lieu d'inclure de nouveau toutes ces informations. Google utilise ces ID pour faire correspondre les chambres et les offres de chambres avec les métadonnées stockées. Cela peut réduire considérablement la taille globale de vos messages Transaction.

Étant donné que les prix pour les combinaisons chambre/séjour changent beaucoup plus fréquemment que les descriptions des chambres ou des formules, le fait de définir une seule fois les métadonnées et d'y faire référence ensuite est une utilisation bien plus efficace des messages Transaction. De plus, vous pouvez éviter des erreurs comme la non-correspondance des descriptions de chambres en utilisant des métadonnées plutôt qu'en définissant les données de façon intégrée.

La méthode recommandée (et la plus efficace) consistant à définir séparément les métadonnées et les tarifs est illustrée ci-dessous :

<!-- 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>
    <!-- Note: By default, the top level result price should be the cheapest
         price available for a minimum of 2 occupants. -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- The Baserate, Tax, and OtherFees elements below are optional. If
    provided, these elements much match at least one room bundle pricing
    below -->
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <Occupancy>2</Occupancy>
    <OccupancyDetails>
      <NumAdults>2</NumAdults>
    </OccupancyDetails>

    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <!-- Price for 2 ("occupancy") is repeated and matches the Baserate and
           attributes provided above -->
      <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>

Différence entre occupation et capacité

Lors de la définition d'offres de chambres, vous devez comprendre la différence entre l'occupation et la capacité :

  • L'occupation correspond au nombre de personnes pour lequel une offre de chambres est prévue. Par exemple, la "Formule Lune de miel" propose une occupation pour deux personnes. Vous définissez la valeur d'occupation d'une formule à l'aide de l'élément enfant <Occupancy> de l'élément <PackageData> ou <RoomBundle>.
  • La capacité correspond au nombre maximal de personnes que peut accueillir une chambre. La capacité d'accueil d'une chambre est toujours supérieure ou égale à l'occupation. Par exemple, la "Suite Lune de miel" de votre hôtel possède une capacité d'accueil de six personnes, mais vous présentez le tarif d'une offre pour deux personnes. Vous définissez la valeur de capacité d'une formule à l'aide de l'élément enfant <Capacity> de l'élément <RoomData>.

Lorsque vous fixez le prix d'une offre de chambres, vous devez le fixer pour le nombre de personnes visé par l'offre (valeur spécifiée dans l'élément <Occupancy> de l'offre). Si la valeur de l'élément <Occupancy> est "2", le prix de cette offre doit être pour deux personnes. Vous ne pouvez pas définir <Occupancy> pour quatre personnes et fixer le prix de l'offre pour deux personnes.

Tarifs des chambres communes

Vous utilisez également l'occupation et la capacité dans les offres de chambres pour définir les prix des chambres partagées (comme en auberge de jeunesse). Par exemple, pour définir le prix par personne dans un dortoir composé de huit lits, vous devez définir l'occupation sur 1 et la capacité sur 8, puis identifier le concept dans le nom <RoomData>. Reportez-vous à l'exemple.

Modifier des offres de chambres

Cette section explique comment supprimer une offre de chambres qui n'est plus disponible et mettre à jour le prix d'une offre de chambres existante.

Supprimer une offre de chambres

Vous devez procéder différemment pour supprimer les offres de chambres et les prix de l'hôtel.

Pour supprimer une combinaison chambre/séjour de l'inventaire, vous devez définir la valeur <Baserate> de l'élément <Result> sur -1. Pour supprimer une offre de chambres pour une combinaison chambre/séjour donnée, supprimez l'élément <RoomBundle> du bloc <Result> dans le message Transaction.

Dans les flux de données, les offres de chambres sont considérées comme un ensemble d'éléments (au nombre de zéro comme des dizaines). Lorsque vous envoyez des offres de chambres à Google, vous envoyez l'ensemble actuel complet. Vous ne remplacez pas les valeurs d'une offre de chambres individuelle pour que l'une des offres disponibles précédemment devienne indisponible. L'ensemble des offres figurant dans le message Transaction le plus récent remplace l'ensemble actuel.

Par exemple, vous proposez les offres A, B, C et D. Vous envoyez d'abord un message qui définit l'ensemble d'offres de chambres A, B, C et D. Par la suite, si l'offre B n'est plus disponible, vous devez renvoyer l'ensemble complet avec uniquement les offres A, C et D. Si toutes les offres de chambres sont épuisées, envoyez un ensemble vide d'offres.

Modifier les prix des offres de chambres

Pour modifier le prix d'une offre de chambres, définissez la nouvelle valeur <Baserate> dans l'élément <Result>.

Chaque fois que vous mettez à jour le bloc <Result> d'une chambre ou d'un séjour dans vos messages Transaction, vous devez inclure l'ensemble complet d'offres de chambres disponibles pour chaque bloc <Result>. Google remplace l'ensemble d'offres de chambres existant par le nouvel ensemble. Si vous n'indiquez aucune offre de chambres dans le bloc <Result>, Google supprime toutes les offres de chambres pour cette chambre ou ce séjour.

Mettre à jour les métadonnées d'offre de chambres

Pour mettre à jour les métadonnées d'offre de chambres, répondez à un message <Query> de Google.

Vous répondez à un message Query avec un message Transaction qui définit les métadonnées de chambre et de formule pour les hôtels spécifiés. Pour en savoir plus, consultez la section Messages Query.