Stawki warunkowe

Ceny warunkowe to typ reguły dotyczącej cen, która umożliwia oferowanie różnych stawek na plany podróży w zależności od takich kryteriów jak urządzenie użytkownika, kraj lub to, czy użytkownik jest zalogowany w Google.

Jeśli w planie podróży lub pakiecie pokoi masz więcej niż jedną cenę publiczną lub warunkową, użytkownik zobaczy najniższą stawkę. Google zawsze wybiera najniższą stawkę dla użytkownika.

Przegląd

Ceny warunkowe są widoczne w standardowych przedziałach cenowych i wyświetlają się tylko użytkownikom, których wyszukiwania spełniają kryteria powiązanej ceny warunkowej. Kryteria te mogą być oparte na:

Aby włączyć ceny warunkowe, zmodyfikuj te elementy:

Ceny warunkowe zależnie od urządzenia

Stawki za konkretne urządzenia to stawki hotelowe, które są widoczne i możliwe do zarezerwowania tylko przez użytkowników korzystających z określonego urządzenia, takiego jak telefon komórkowy, tablet czy komputer. Stawki są podawane przez partnerów Google, a użytkownicy mogą sprawdzić i zarezerwować te same stawki za poszczególne urządzenia w witrynie partnera.

fenced_rates

Ceny warunkowe w poszczególnych krajach

Stawki krajowe to stawki hotelowe, które są widoczne i możliwe do zarezerwowania tylko przez użytkowników szukających hoteli w określonym kraju. Google określa kraj na podstawie adresu IP użytkownika. Stawki są podawane przez partnerów Google, a użytkownicy mogą sprawdzić i zarezerwować te same stawki obowiązujące w danym kraju w witrynie partnera.

Ceny warunkowe w poszczególnych językach

Stawki w poszczególnych językach są widoczne tylko dla użytkowników, którzy szukają hoteli, gdy mają włączone określone ustawienie języka w Google. Warunki w poszczególnych językach definiuje się za pomocą elementu <LanguageCode>.

Niespróbkowane ceny warunkowe

Niespróbkowane stawki warunkowe są widoczne tylko dla losowego podzbioru wszystkich kwalifikujących się użytkowników. Częstotliwość próbkowania jest określana za pomocą elementu <MaxUsersPercent> i obliczana w ten sposób:

MaxUsersPercent = (number of users selected to view rate)/(total eligible users)

Ceny warunkowe po zalogowaniu

Wskaźniki zalogowanych użytkowników są widoczne tylko dla użytkowników, którzy zalogowali się za pomocą konta Google. Stawki podają partnerzy Google, a użytkownicy mogą je przeglądać i rezerwować na stronie partnera. Współczynniki zalogowanych użytkowników określa się za pomocą elementu <UserSignedIn>.

Google zawsze wybiera najniższą kwalifikującą się stawkę, więc jeśli cena warunkowa jest wyższa niż cena ustawiona na poziomie <Result>, cena warunkowa nigdy nie zostanie wybrana. Aby tego uniknąć, usuń stawkę na poziomie <Result> i określ wszystkie stawki. Możesz też poprosić Technicznego menedżera konta o użycie domyślnej reguły dotyczącej ceny dla cen ustawionych na poziomie <Result>.

Utwórz plik XML z regułami dotyczącymi cen

Reguły dotyczące cen dla cen warunkowych są zdefiniowane w pliku XML reguł dotyczących cen. Więcej informacji znajdziesz w dokumentacji kodu XML reguł dotyczących stawek.

Aktualizowanie pliku danych z cenami

Stawki warunkowe są ustawiane za pomocą elementu wiadomości transakcji.

Elementu <Rate> można też używać jako wielu elementów podrzędnych <Rates> wewnątrz elementów <RoomBundle> lub <Result>. Aby użyć jej jako stawki warunkowej, musisz ustawić wartość atrybutu rate_rule_id tak, aby była zgodna z identyfikatorem reguły dotyczącej ceny określonym w pliku XML z regułami dotyczącymi cen.

Jeśli nie masz domyślnej stawki za podwójne obłożenie publiczne, ustaw element podrzędny <Baserate> wiadomości <Result> na -1. Wszystkie warunkowe <Rates> przesłane w tym przypadku do Google są uznawane za prawidłowe.

Przykłady

Podstawa + warunkowa

Poniższy przykład pokazuje komunikat o transakcji, który zawiera stawkę podstawową i stawkę warunkową:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <Baserate currency="USD">200.00</Baserate>
    <Tax currency="USD">20.00</Tax>
    <OtherFees currency="USD">1.00</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates -->
      <Rate rate_rule_id="mobile">
        <!-- Override base rate and taxes for conditional rates -->
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <!-- NOTE: OtherFees is inherited from the above setting -->
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

RoomBundle pojedyncze

Poniższy przykład pokazuje wiadomość Transakcja, która zawiera pojedynczą stawkę poniżej <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>

    <Baserate currency="USD">300.00</Baserate>
    <Tax currency="USD">30.00</Tax>
    <OtherFees currency="USD">2.00</OtherFees>

    <RoomBundle>
      <RoomID>single</RoomID>
      <Baserate currency="USD">300.00</Baserate>
      <Tax currency="USD">30.00</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
    </RoomBundle>

    <RoomBundle>
      <RoomID>3</RoomID>  <!-- Links to data in metadata -->
      <RatePlanID>basic</RatePlanID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <ChargeCurrency>web</ChargeCurrency>
      <BreakfastIncluded>1</BreakfastIncluded>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">269.00</Baserate>
          <Tax currency="USD">2.69</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
        </Rates>
      </Rates>

    </RoomBundle>
  </Result>
</Transaction>

RoomBundle – wiele

Poniższy przykład pokazuje komunikat transakcji, który zawiera wiele stawek w ramach zasady <RoomBundle>:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>2</Nights>
    <!-- When Google receives new room bundle information for an itinerary, all
    previous room bundle pricing is dropped from Google's cache. Thus, if you
    want to delete a specific room bundle from Google's cache, you may do so
    by simply not providing that specific room bundle in subsequent transaction
    messages. -->
    <RoomBundle>
     ...
      <!-- RoomID is required, PackageID is recommended. -->
      <RoomID>5</RoomID>
      <PackageID>ABC</PackageID>
      <!-- Baserate is required. -->
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</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>5-ABC</RatePlanID>

      <!-- Occupancy is mandatory for RoomBundle elements. -->
      <!-- Elements below will get inherited to nested rate elements. -->
      <Occupancy>2</Occupancy>
      <OccupancyDetails>
        <NumAdults>2</NumAdults>
      </OccupancyDetails>
      <InternetIncluded>1</InternetIncluded>


      <!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <!-- Neither rate overrides Custom2. -->
      <Custom2>ratebasic</Custom2>

      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides ChargeCurrency from roombundle. -->
          <ChargeCurrency>hotel</ChargeCurrency>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode321</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <!-- The value below overrides Custom1 from roombundle. -->
          <Custom1>ratecode432</Custom1>
          <!-- Custom2 is inherited from roombundle. -->
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

Brak publicznego dwuosobowego pokoju

Poniższy przykład pokazuje wiadomość transakcji, która zawiera cenę warunkową bez ceny za 2 publiczne obłożenie:

<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">

  <Result>
    <Property>1234</Property>
    <Checkin>2023-04-10</Checkin>
    <Nights>1</Nights>

    <!-- <Unavailable/> should not be specified when available nested rates
    exist. -->
    <Baserate currency="USD">-1</Baserate>
    <Tax currency="USD">0</Tax>
    <OtherFees currency="USD">0</OtherFees>

    <Rates>
      <!-- The rate_rule_id is required when using conditional rates. -->
      <Rate rate_rule_id="mobile">
        <Baserate currency="USD">180.00</Baserate>
        <Tax currency="USD">18.00</Tax>
        <OtherFees currency="USD">1.00</OtherFees>
        <Custom1>ratecode123</Custom1>
      </Rate>
    </Rates>

  </Result>
</Transaction>

Zaktualizuj plik strony docelowej

Aby kwalifikujący się użytkownicy mogli rezerwować obniżoną cenę za pomocą precyzyjnego linku, zmodyfikuj plik strony docelowej. Może być też konieczne dodatkowe wdrożenie na stronie rezerwacji, aby prawidłowo wyświetlać i stosować obniżone stawki.

Oczekujemy, że partnerzy będą przestrzegać ceny wyświetlanej po zastosowaniu stawki warunkowej za pomocą precyzyjnego linku.

W dynamicznym precyzyjnym linku możesz uwzględnić regułę dotyczącą ceny, podając jej nazwę, atrybut id elementu <RateRule> ze zmienną RATE-RULE-ID.

W przykładzie poniżej dodano identyfikator reguły dotyczącej ceny:

https://bookingsite.com/landing.do?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)&currency=(USER-CURRENCY)&prid=(RATE-RULE-ID)

Plik strony docelowej obsługuje też dyrektywę IF-RATE-RULE-ID, która umożliwia warunkowe definiowanie części adresu URL w zależności od tego, czy istnieje reguła dotycząca ceny:

https://bookingsite.com/(IF-RATE-RULE-ID)privatelanding.do(RATE-RULE-ID)(ELSE)landing.do(ENDIF)?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)&currency=(USER-CURRENCY)

Ten przykład umożliwia wybór między 2 stronami docelowymi w zależności od tego, czy skonfigurowano identyfikator reguły dotyczącej stawek.

Więcej informacji znajdziesz w artykule Korzystanie ze zmiennych i warunków.