Ceny warunkowe

Ceny warunkowe to rodzaj reguły cenowej, która umożliwia oferowanie różnych cen za trasy na podstawie kryteriów takich jak urządzenie użytkownika, kraj czy to, czy użytkownik zalogował się w Google.

Jeśli masz więcej niż jedną stawkę publikowaną lub warunkową dla planu podróży lub pakietu pokoi, użytkownik zobaczy najniższą stawkę. Google zawsze wybiera najniższą kwalifikującą się stawkę dla użytkownika.

Przegląd

Stawki warunkowe są widoczne w standardowych miejscach na ceny i są wyświetlane tylko użytkownikom, których wyszukiwania spełniają kryteria powiązanej stawki warunkowej. Kryteria te mogą być oparte na tych czynnikach:

Aby włączyć stawki warunkowe, zmień te ustawienia:

Ceny warunkowe na konkretnych urządzeniach

Stawki dla konkretnych urządzeń to stawki za hotel, które są widoczne i dostępne do rezerwacji tylko dla użytkowników korzystających z określonego urządzenia, np. telefonu komórkowego, tabletu lub komputera. Stawki są podawane przez partnerów Google, a użytkownicy mogą zobaczyć i zarezerwować te same stawki dotyczące konkretnego urządzenia w witrynie partnera.

fenced_rates

Ceny warunkowe w poszczególnych krajach

Stawki dla konkretnego kraju to stawki hotelowe, które są widoczne i dostępne do zarezerwowania tylko dla użytkowników wyszukujących hotele w określonym kraju. Google określa kraj na podstawie adresu IP użytkownika. Stawki są udostępniane przez partnerów Google, a użytkownicy mogą je wyświetlać i rezerwować w witrynie partnera w danym kraju.

Ceny warunkowe w określonym języku

Ceny w określonym języku są widoczne tylko dla użytkowników, którzy wyszukują hotele, korzystając z określonego ustawienia języka w Google. Warunki dotyczące konkretnego języka są definiowane za pomocą elementu <LanguageCode>.

W wiadomościach z żądaniami z kontekstem nie jest określony język. Jeśli w regułach stawek określisz <LanguageCode>, odpowiedź z kontekstem powinna zawierać wszystkie odpowiednie stawki w danym języku.

Ceny warunkowe po zmniejszeniu częstotliwości próbkowania

Obniżone stawki warunkowe są widoczne tylko dla losowo wybranego podzbioru wszystkich kwalifikujących się użytkowników. Częstotliwość próbkowania jest definiowana za pomocą elementu <MaxUsersPercent> i obliczana w ten sposób:

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

Ceny warunkowe dla zalogowanych użytkowników

Współczynniki zalogowanych użytkowników są widoczne tylko dla użytkowników, którzy zalogowali się za pomocą konta Google. Stawki są podawane przez partnerów Google, a użytkownicy mogą je wyświetlać i rezerwować w witrynie partnera. Ceny po zalogowaniu są definiowane za pomocą elementu <UserSignedIn>.

Google zawsze wybiera najniższą kwalifikującą się cenę, 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 ustal warunki wszystkich stawek. Możesz też zapytać swojego menedżera ds. technicznych o możliwość używania domyślnej reguły stawki w przypadku cen ustawionych na poziomie <Result>.

Tworzenie pliku XML z regułami stawek

Reguły stawek dla stawek warunkowych są definiowane za pomocą pliku XML reguł stawek. Więcej informacji znajdziesz w dokumentacji XML reguł stawek.

Aktualizowanie pliku danych o cenach

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

Element <Rate> może być też używany jako wiele elementów podrzędnych elementu <Rates> w elementach <RoomBundle> lub <Result>. Aby użyć go jako stawki warunkowej, musisz ustawić wartość atrybutu rate_rule_id tak, aby odpowiadała identyfikatorowi reguły stawki zdefiniowanemu w pliku XML reguł stawek.

Jeśli nie masz domyślnej publicznej ceny za pokój dwuosobowy, ustaw element podrzędny <Baserate>elementu <Result> na -1. W tym przypadku wszystkie wysłane do Google warunkowe <Rates> będą uznawane za prawidłowe.

Przykłady

Podstawowe + warunkowe

Poniższy przykład pokazuje wiadomość o transakcji, która 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>
      </Rate>
    </Rates>

  </Result>
</Transaction>

RoomBundle single

Poniższy przykład przedstawia wiadomość o transakcji, która zawiera jedną stawkę w ramach elementu <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 multiple

Poniższy przykład przedstawia wiadomość o transakcji, która zawiera wiele stawek w ramach elementu <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 and it should be within 50 characters in length for optimal
      performance. 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>

      <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>
        </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>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>

Brak możliwości zakwaterowania 2 osób w pokoju

Poniższy przykład pokazuje wiadomość o transakcji, która zawiera cenę warunkową bez publicznej ceny za pokój dwuosobowy:

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

Aktualizowanie pliku strony docelowej

Aby mieć pewność, że kwalifikujący się użytkownicy będą mogli zarezerwować usługę w obniżonej cenie za pomocą precyzyjnego linku, zmień plik strony docelowej. Aby prawidłowo wyświetlać i realizować obniżone ceny, w witrynie rezerwacji może być też konieczne dodatkowe wdrożenie.

Oczekujemy, że partnerzy będą honorować cenę wyświetlaną w linku do strony z ceną warunkową.

W dynamicznym linku do konkretnej strony możesz uwzględnić regułę stawki według jej nazwy, atrybutu id elementu <RateRule> ze zmienną RATE-RULE-ID.

W tym przykładzie dodajemy 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 pozwala warunkowo definiować części adresu URL w zależności od tego, czy istnieje reguła stawki:

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)

W tym przykładzie wybierane są 2 strony docelowe w zależności od tego, czy identyfikator reguły stawki jest ustawiony.

Więcej informacji znajdziesz w artykule Używanie zmiennych i warunków.