Zimmerpakete

Mithilfe von Zimmerpaketen können Sie mehrere Zimmertypen für ein Hotel definieren oder einen Reiseplan für ein Zimmer mit Preismerkmalen – zusätzliche Services, die in einem Preis und Konditionen enthalten sind –kombinieren, die über das hinausgehen, was der Standardpreis beinhaltet.

Schlüsselkonzepte und Workflow

Mit Zimmerpaketen können Sie zusätzliche Kombinationen physischer Zimmertypen mit unterschiedlichen Servicepaketen anbieten.

Die folgende Abbildung zeigt Beispiele für Zimmerpakete:

In diesem Beispiel ist das erste Paket wahrscheinlich das Basiszimmer, mit einem Rabatt für nur einen Erwachsenen. Das zweite Zimmer ist ein anderer Zimmertyp, der für bis zu 3 Erwachsene verfügbar ist. Das dritte ist ein weiterer Zimmertyp innerhalb derselben Unterkunft. Das vierte ist ein „Premium“-Paket des Basiszimmers, das beispielsweise ein kostenloses Frühstück oder einen späteren Check-out beinhaltet.

Die folgenden Bilder zeigen Beispiele für Preismerkmale:

Die Anzeige von Zimmerpaketen und Preismerkmalen in Suchergebnissen unterliegt demselben Auswahlverfahren, das bei Standard-Zimmerpreisen angewendet wird.

Zimmerpakete definieren

Zimmerpakete und Preismerkmale werden in Transaktionsnachrichten definiert. Das Stammelement einer Transaktionsnachricht ist <Transaction>.

Die Struktur der Transaktionsnachricht hängt davon ab, ob Sie die Metadaten für das Zimmerpaket oder Preismerkmal definieren oder die Preise bzw. die Verfügbarkeit des Zimmerpakets aktualisieren.

Metadaten
Definieren Sie Zimmerpaket- und Preismerkmalmetadaten mit <PackageData> in einem <PropertyDataSet>-Element. Weitere Informationen finden Sie unter Definieren von Zimmer- und Paketmetadaten. Bei Zimmerpaketen werden vorhandene <RoomData>-Elemente für Beschreibungen des physischen Zimmers verwendet.
Preise und Verfügbarkeit
Definieren Sie Zimmerpaketpreise und -verfügbarkeit mit dem <RoomBundle>-Element in einem <Result> für jede Kombination aus Paket und Reiseplan. Weitere Informationen finden Sie unter Preise und Verfügbarkeit festlegen.

Zimmerpaketmetadaten

Wenn Sie Zimmerpakete und Preismerkmale definieren, legen Sie in der Regel die Beschreibung, zusätzliche Services, die Teil des Preises sind, und andere Informationen zum Zimmerpaket im Voraus fest. Diese Informationen werden als Zimmerpaketmetadaten bezeichnet. Auf diese Metadaten verweisen Sie später in Ihren Preisaktualisierungen, beziehen sie aber nicht in die Preisaktualisierungsnachrichten ein.

Verwenden Sie beim Definieren von Zimmerpaketen vorhandene <RoomData>-Elemente für die physischen Zimmerbeschreibungen und <PackageData>-Elemente für die Preismerkmale und Konditionen, die nicht Teil der physischen Zimmerbeschreibung sind.

Sie können mit den Elementen <RoomData> und <PackageData> die Größe Ihrer Hotelliste und des Hotellistenfeeds erheblich verringern, da in Transaktionsnachrichten weniger sich wiederholende Daten gesendet werden.

Daten wie der Zimmername und die Beschreibung wiederholen sich beispielsweise in der Regel für jeden Reiseplan. Mit den Elementen <RoomData> und <PackageData> definieren Sie diese Art von Daten nur einmal. Die reiseplanspezifischen Zimmerpaketdaten werden anschließend mit den gespeicherten Zimmer- und Paketdefinitionen zusammengeführt, um sie dem Endnutzer anzuzeigen.

Google gleicht Ihre Metadaten mit Ihren reiseplanspezifischen Daten ab, um den Inhalt Ihrer Anzeigen zu rendern. Es gibt ein spezielles Verfahren, um Namen und Beschreibungen der Elemente <RoomData> und <PackageData> zu kombinieren. Auf diese Weise können das physische Zimmer in <RoomData> und die Preismerkmale in <PackageData> beschrieben werden.

Wenn Sie sowohl die Zimmerdaten als auch die Paketdaten für ein Zimmer oder Zimmerpaket definieren, bezieht Google beides in die Anzeigenausgabe ein (getrennt durch einen Gedankenstrich).

Datenpriorität

Zimmerpaketdaten werden von allen Quellen gesammelt und unter Anwendung von Prioritätsregeln kombiniert, um die endgültigen Daten für ein bestimmtes Hotel, einen Reiseplan und ein Zimmerpaket zu erstellen. Es wird die folgende Reihenfolge verwendet, von der niedrigsten zur höchsten Priorität:

  1. (Niedrigste) Partnerdaten
  2. Unterkunftsdaten
  3. <RoomData>, wobei die <RoomID> mit der <RoomID> im Block <RoomBundle> übereinstimmt
  4. <PackageData>, wobei die <PackageID> mit der <PackageID> im Block <RoomBundle> übereinstimmt
  5. (Höchstes) <RoomBundle>

Preise und Verfügbarkeit festlegen

Zum Definieren der Preise und Verfügbarkeit für Zimmerpakete verwenden Sie das Element <RoomBundle> in einer Transaktionsnachricht für jede Kombination aus Paket und Reiseplan. Das Element <RoomBundle> sollte sich innerhalb des Elements <Result> befinden. Im Folgenden sehen Sie Beispielcode für zwei <RoomBundle>-Elemente. Die beiden <RoomBundle>-Elemente verweisen auf Zimmer- und Paketmetadaten mit <RoomID> und <PackageID>.

Wenn Sie Zimmerpakete verwenden, müssen Sie ein Paket angeben, das mit dem Grundpreis, den Steuern und den Gebühren des Zimmers (angegeben im untergeordneten Element <Baserate> von <RoomBundle>) übereinstimmt.

Der enthaltene Satz mit Zimmerpaketen überschreibt für jedes Element <Result> den vorhandenen Satz für diese Kombination aus Hotel und Reiseplan. Wenn Sie im Element <Result> keine Zimmerpakete oder Preismerkmale definieren, werden alle Zimmerpakete entfernt und in den Suchergebnissen wird nur das Basiszimmer für diese Kombination aus Hotel und Reiseplan angezeigt.

Achten Sie darauf, Elemente wie <Name> zu verwenden, um Ihre Zimmerpakete für potenzielle Kunden attraktiver zu gestalten. Achten Sie dabei darauf, dass sie mit der Landingpage des Hotels übereinstimmen. In diesem Beispiel würden Sie Namen und andere beschreibende Informationen in den Metadaten definieren.

<RatePlanID> ist optional und stellt die eindeutige Kennung für eine Zimmer- und Paketkombination dar. Wir empfehlen Ihnen dringend, RatePlanID als Variable zu verwenden, wenn Sie Ihre dynamische Landingpage-URL (früher Point of Sale) erstellen. Weitere Informationen finden Sie unter Variablen und Bedingungen verwenden.
<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>

Zimmer- und Paketmetadaten definieren

Zum Definieren von Zimmerpaketmetadaten verwenden Sie die Elemente <PackageData> und <RoomData> innerhalb des Elements <PropertyDataSet> einer Transaktionsnachricht.

Sie definieren Zimmer- und Paketmetadaten in einer Transaktionsnachricht, die von den Preis- und Verfügbarkeitsdaten getrennt ist. Indem Sie die Metadaten vorab definieren, müssen Sie in Ihren Preisaktualisierungen keine sich wiederholenden Informationen wie Beschreibungen, Foto-URLs, Ausstattungen und sonstige Daten zu den einzelnen Zimmern/Paketen in den einzelnen Reiseplänen angeben.

Google speichert die Metadaten und fügt sie in Ihre Anzeigen ein, wenn diese eingeblendet werden. Sie können die Zimmer- und Paketmetadaten jederzeit mit einer neuen Transaktionsnachricht aktualisieren.

In der Transaktionsnachricht legen Sie für jeden Block eine Paket-ID und eine Zimmer-ID fest, auf die Sie später bei Preisaktualisierungen in den <Result>-Blöcken verweisen.

Wenn sich die Zimmer- und Paketdaten ändern, z. B. wenn Sie einen neuen Zimmertyp für ein Hotel hinzufügen, senden Sie eine neue Transaktionsnachricht mit den aktualisierten Zimmer- und Paketdaten. Google ersetzt die zu einem Zimmer oder Paket vorhandenen Metadaten durch die neuen Daten.

Es wird empfohlen, bei der Ersteinrichtung Metadaten zu definieren. Wenn Sie die Metadaten vorab definiert haben, verweisen Sie in Ihren Preisaktualisierungen einfach auf die Werte für <RoomID> und <PackageID>, anstatt alle Informationen noch einmal anzugeben. Google weist anhand der IDs die gespeicherten Metadaten den Zimmern und Zimmerpaketen zu. Dadurch verringern Sie die Größe Ihrer Transaktionsnachrichten erheblich.

Weil sich die Preise für Zimmer/Reisekombinationen viel häufiger ändern als die Zimmer- oder Paketbeschreibungen, ist die Nutzung von Transaktionsnachrichten wesentlich effizienter, wenn Metadaten einmalig definiert werden und dann darauf verwiesen wird. Indem Sie anstelle von inline definierten Daten Metadaten verwenden, können Sie außerdem Fehler wie abweichende Zimmerbeschreibungen vermeiden.

Die empfohlene und effizienteste Methode zum separaten Definieren von Metadaten und Preisen ist unten dargestellt:

<!-- 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>

Belegung und Kapazität vergleichen

Beim Definieren von Zimmerpaketen müssen Sie zwischen Belegung und Kapazität unterscheiden:

  • Belegung definiert die Anzahl der Gäste, für die ein Zimmerpaket gelten soll. Für das „Flitterwochenpaket“ gilt beispielsweise eine Belegung von 2 Personen. Den Belegungswert für ein Paket legen Sie mit dem untergeordneten Element <Occupancy> der Elemente <PackageData> oder <RoomBundle> fest.
  • Kapazität definiert die maximale Anzahl von Personen, die ein Zimmer physisch belegen können. Die Kapazität eines Zimmers entspricht immer mindestens der Belegung oder ist höher. Die „Flitterwochen-Suite“ in Ihrem Hotel hat beispielsweise eine maximale Kapazität von 6 Personen, aber Sie legen einen Paketpreis für 2 Gäste fest. Den Kapazitätswert für ein Paket legen Sie mit dem untergeordneten Element <Capacity> des Elements <RoomData> fest.

Bei der Preisangabe für ein Zimmerpaket müssen Sie den Preis für die Anzahl der Gäste angeben, für die das Paket gedacht ist (die im Element <Occupancy> des Pakets angegebene Anzahl). Wenn <Occupancy> auf 2 gesetzt ist, dann muss der Preis in diesem Paket für 2 Personen sein. Sie können <Occupancy> nicht auf 4 Gäste setzen und den Paketpreis für 2 Gäste angeben.

Preise für Mehrbettzimmer festlegen

Sie können über die Belegung und Kapazität in Zimmerpaketen die Preise für Mehrbettzimmer (z. B. Jugendherberge) festlegen. Um beispielsweise einen Preis pro Person für ein Mehrbettzimmer mit 8 Betten festzulegen, setzen Sie Belegung auf 1 und Kapazität auf 8 und kennzeichnen dies entsprechend im <RoomData>-Namen. Siehe Beispiel.

Zimmerpakete aktualisieren

In diesem Abschnitt wird beschrieben, wie Sie ein nicht mehr verfügbares Zimmerpaket entfernen und den Preis eines vorhandenen Zimmerpakets aktualisieren.

Zimmerpaket entfernen

Zimmerpreise werden anders als Hotelpreise entfernt.

Um eine Zimmer/Reiseplan-Kombination aus einem Reiseplan zu entfernen, setzen Sie den <Baserate> im Element <Result> auf -1. Um ein Zimmerpaket für eine bestimmten Zimmer/Reiseplan-Kombination zu entfernen, löschen Sie in der Transaktionsnachricht im Block <Result> das Element <RoomBundle>.

Zimmerpakete in Ihren Datenfeeds werden als Sätze betrachtet, die zwischen 0 und Dutzende davon liegen. Wenn Sie Zimmerpakete an Google senden, senden Sie den aktuellen, vollständigen Satz. Sie ändern die Werte eines einzelnen Zimmerpakets nicht, um ein zuvor verfügbares Zimmer als nicht verfügbar zu kennzeichnen. Der aktuelle Satz wird durch den Paketsatz, der in der neuesten Transaktionsnachricht ist, ersetzt.

Es gibt z. B. die Pakete A, B, C und D. Zuerst senden Sie eine Nachricht, in der der Satz der Zimmerpakete A, B, C und D definiert ist. Wenn Paket B später ausverkauft ist, senden Sie den gesamten Satz mit den Paketen A, C und D noch einmal. Wenn alle Zimmerpakete ausverkauft sind, können Sie einen leeren Satz von Zimmerpaketen senden.

Zimmerpaketpreise ändern

Zum Ändern des Preises eines Zimmerpakets legen Sie im Element <Result> den neuen <Baserate> fest.

Bei jeder Aktualisierung des Blocks <Result> einer Zimmer/Reiseplan-Kombination in Ihren Transaktionsnachrichten müssen Sie für jeden Block <Result> einen vollständigen Satz verfügbarer Zimmerpakete angeben. Google ersetzt den vorhandenen Satz von Zimmerpaketen durch den neuen Satz. Wenn Sie im Block <Result> keine Zimmerpakete angeben, entfernt Google alle Zimmerpakete für diese Zimmer/Reiseplan-Kombination.

Zimmerpaketmetadaten aktualisieren

Sie aktualisieren die Zimmerpaketmetadaten mit einer Antwort auf eine <Query> von Google.

Sie reagieren auf eine Anfragenachricht mit einer Transaktionsnachricht, in der die Zimmer- und Paketmetadaten für die angegebenen Hotels enthalten sind. Weitere Informationen finden Sie unter Anfragenachrichten.