Ceny warunkowe to rodzaj reguły dotyczącej ceny, która umożliwia oferowanie różnych cen w zależności od takich kryteriów jak urządzenie użytkownika, kraj czy to, czy użytkownik jest zalogowany w Google.
Jeśli masz więcej niż 1 cenę publiczną lub cenę warunkową dla danej trasy lub pakietu z pokojem, użytkownik zobaczy najniższą cenę. Google zawsze wybiera najniższą kwalifikującą się cenę dla użytkownika.
Przegląd
Ceny warunkowe są widoczne w standardowych miejscach na ceny i wyświetlają się tylko użytkownikom, których wyszukiwania spełniają kryteria powiązanej ceny warunkowej. Kryteria te mogą być oparte na:
- urządzeniu użytkownika,
- kraju użytkownika,
- preferencjach językowych użytkownika,
- podzbiorze wszystkich użytkowników,
- tym, czy użytkownik jest zalogowany.
Aby włączyć ceny warunkowe, zmień te ustawienia:
Plik XML reguł dotyczących cen: określ warunki, w których mają być stosowane ceny warunkowe.
Plik danych o cenach: użyj elementu
<Rate>w wiadomości transakcyjnej, aby ustawić ceny.Plik strony docelowej: dodaj do precyzyjnych linków wartości specyficzne dla reguły dotyczącej ceny.
Ceny warunkowe dla konkretnych urządzeń
Ceny dla konkretnych urządzeń to stawki hotelowe, 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. Ceny są udostępniane przez partnerów Google, a użytkownicy mogą je zobaczyć i zarezerwować w witrynie partnera.

Ceny warunkowe dla konkretnych krajów
Ceny dla konkretnych krajów to stawki hotelowe, które są widoczne i dostępne do rezerwacji tylko dla użytkowników wyszukujących hotele w określonym kraju. Google określa kraj na podstawie adresu IP użytkownika. Ceny są udostępniane przez partnerów Google, a użytkownicy mogą je zobaczyć i zarezerwować w witrynie partnera w danym kraju.
Ceny warunkowe dla konkretnych języków
Ceny dla konkretnych języków są widoczne tylko dla użytkowników, którzy wyszukują hotele, korzystając z określonego ustawienia języka w Google. Warunki dla konkretnych języków
są definiowane za pomocą elementu <LanguageCode>.
W zapytaniach With Context język nie jest określony w wiadomościach z prośbą o odpowiedź. Jeśli więc w regułach dotyczących cen określisz element <LanguageCode>, to
odpowiedź With Context powinna zawierać wszystkie odpowiednie ceny dla konkretnych języków.
Ceny warunkowe dla podzbioru użytkowników
Ceny warunkowe dla podzbioru użytkowników są widoczne tylko dla losowego podzbioru wszystkich kwalifikujących się użytkowników. Współczynnik próbkowania jest definiowany za pomocą elementu <MaxUsersPercent>
i obliczany w ten sposób:
MaxUsersPercent = (number of users selected to view rate)/(total eligible users)
Ceny warunkowe dla zalogowanych użytkowników
Ceny dla zalogowanych użytkowników są widoczne tylko dla użytkowników, którzy zalogowali się na konto Google. Ceny są udostępniane przez partnerów Google, a użytkownicy mogą je zobaczyć i zarezerwować w witrynie partnera. Ceny dla zalogowanych użytkowników są definiowane za pomocą elementu
<UserSignedIn>.
Ponieważ Google zawsze wybiera najniższą kwalifikującą się cenę, jeśli cena warunkowa
jest wyższa niż cena ustawiona na poziomie <Result>, cena warunkowa
zostanie nigdy wybrana. Aby tego uniknąć, usuń
cenę na poziomie <Result>
i zastosuj warunki do wszystkich cen. Możesz też zapytać swojego opiekuna klienta
o możliwość użycia domyślnej reguły dotyczącej ceny w przypadku cen ustawionych na poziomie <Result>.
Tworzenie pliku XML reguł dotyczących cen
Reguły dotyczące cen warunkowych są definiowane za pomocą pliku XML reguł dotyczących cen. Więcej informacji znajdziesz w artykule XML reguł dotyczących cen.
Aktualizowanie pliku danych o cenach
Ceny warunkowe są ustawiane za pomocą elementu w wiadomości transakcyjnej.
Elementu <Rate> można też używać jako wielu elementów podrzędnych elementu <Rates>
w elementach <RoomBundle> lub <Result>. Aby użyć go jako ceny warunkowej, musisz ustawić wartość atrybutu rate_rule_id tak, aby odpowiadała identyfikatorowi reguły dotyczącej ceny zdefiniowanemu w pliku XML reguł dotyczących cen.
Jeśli nie masz domyślnej publicznej ceny za pokój dwuosobowy, ustaw element podrzędny <Baserate> wiadomości <Result> na -1. W takim przypadku wszystkie ceny warunkowe
<Rates> wysyłane do Google będą uznawane za prawidłowe.
Przykłady
Cena podstawowa + cena warunkowa
Ten przykład przedstawia wiadomość transakcyjną, która zawiera stawkę podstawową i cenę 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>
Pakiet pokoi – cena pojedyncza
Ten przykład przedstawia wiadomość transakcyjną, która zawiera jedną cenę w elemencie <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>
Pakiet pokoi – wiele cen
Ten przykład przedstawia wiadomość transakcyjną, która zawiera wiele cen w elemencie <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 ceny publicznej za pokój dwuosobowy
Ten przykład przedstawia wiadomość transakcyjną, która zawiera cenę warunkową bez publicznego poziomu obłożenia dla dwóch osób:
<?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ć pokój w obniżonej cenie za pomocą precyzyjnego linku, zmodyfikuj plik strony docelowej. W witrynie rezerwacyjnej może być też konieczne wprowadzenie dodatkowych zmian, aby prawidłowo wyświetlać i realizować ceny z rabatem.
Oczekujemy, że partnerzy będą honorować cenę wyświetlaną w precyzyjnym linku do ceny warunkowej.
W dynamicznym precyzyjnym linku możesz uwzględnić regułę dotyczącą ceny według jej nazwy, atrybutu
id elementu <RateRule> i zmiennej RATE-RULE-ID.
Ten przykład dodaje 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)¤cy=(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 na podstawie tego, czy reguła dotycząca ceny istnieje:
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)¤cy=(USER-CURRENCY)
Ten przykład wybiera jedną z 2 stron docelowych w zależności od tego, czy identyfikator reguły dotyczącej ceny jest ustawiony.
Więcej informacji znajdziesz w artykule Używanie zmiennych i warunków.