Ceny warunkowe to rodzaj reguły dotyczącej cen, która pozwala oferować różne ceny za plany podróży na podstawie takich kryteriów jak urządzenie użytkownika, kraj czy to, czy użytkownik jest zalogowany w Google.
Jeśli masz więcej niż jedną stawkę publiczną lub warunkową dla planu podróży lub pakietu pokoi, użytkownik zobaczy najniższą stawkę. Google zawsze wybiera najniższą stawkę dla użytkownika.
Omówienie
Stawki warunkowe są widoczne w standardowych slotach cenowych i są wyświetlane tylko użytkownikom, których wyszukiwania spełniają kryteria powiązanej stawki warunkowej. Te kryteria mogą być oparte na:
- Urządzenie użytkownika
- Kraj użytkownika
- Ustawienia języka użytkownika
- Przedstawiony w mniejszym zakresie podzbiór wszystkich użytkowników
- Czy użytkownik jest zalogowany
Aby włączyć ceny warunkowe, zmień te ustawienia:
Plik XML reguł cenowych: definiuje warunki, w których mają być stosowane ceny warunkowe.
Plik danych z cenami: aby ustawić stawki, użyj elementu
<Rate>
w wiadomości o transakcji.Plik strony docelowej: możesz dodać do precyzyjnych linków wartości określone w regułach.
Ceny warunkowe dla poszczególnych urządzeń
Stawki dla konkretnego urządzenia to ceny hoteli, które są widoczne i można je zarezerwować tylko na określonym urządzeniu, takim jak telefon komórkowy, tablet lub komputer. Ceny są podawane przez partnerów Google, a użytkownicy mogą je zobaczyć i zarezerwować w witrynie partnera.
Ceny warunkowe w poszczególnych krajach
Stawki dla poszczególnych krajów to stawki hoteli, które są widoczne i dostępne do zarezerwowania tylko dla użytkowników, którzy szukają hoteli w konkretnym kraju. Google określa kraj na podstawie adresu IP użytkownika. Ceny są podawane przez partnerów Google, a użytkownicy mogą zobaczyć i zarezerwować te same ceny w kraju w witrynie partnera.
Ceny warunkowe w określonym języku
Ceny w danym języku są widoczne tylko dla użytkowników, którzy szukają hoteli, korzystając z określonego ustawienia języka w Google. Warunki dotyczące języka są definiowane za pomocą elementu <LanguageCode>
.
Język nie jest określony w wiadomościach z prośbami o wykonanie zapytań z kontekstem. Jeśli w regułach cenowych podasz wartość <LanguageCode>
, odpowiedź z kontekstem powinna zawierać wszystkie ceny w odpowiednich językach.
Ceny warunkowe pomniejszone
Zredukowane warunkowe stawki są widoczne tylko dla losowego podzbioru kwalifikujących się użytkowników. Częstotliwość próbkowania jest definiowana za pomocą elementu <MaxUsersPercent>
i obliczana według tego wzoru:
MaxUsersPercent = (number of users selected to view rate)/(total eligible users)
Ceny warunkowe po zalogowaniu
Wskaźniki logowania są widoczne tylko dla użytkowników, którzy zalogowali się na swoje konto Google. Stawki ustalają partnerzy Google, a użytkownicy mogą je przeglądać i rezerwować w witrynie partnera. Stawki dla zalogowanych użytkowników są definiowane za pomocą elementu <UserSignedIn>
.
Google zawsze wybiera najniższą stawkę, więc jeśli stawka warunkowa jest wyższa niż cena ustawiona na poziomie <Result>
, nigdy nie zostanie wybrana. Aby tego uniknąć, usuń stawkę na poziomie <Result>
i skonfiguruj wszystkie stawki. Możesz też poprosić menedżera technicznego konta o użycie domyślnej reguły ceny dla cen ustawionych na poziomie <Result>
.
Tworzenie pliku XML z regułami dotyczącymi cen
Reguły cen dla cen warunkowych są definiowane za pomocą pliku XML reguł cenowych. Więcej informacji znajdziesz w dokumentacji XML reguł dotyczących stawek.
Aktualizowanie pliku danych o cenach
Stawki warunkowe są ustawiane za pomocą elementu w wiadomości o transakcji.
Element <Rate>
może też być używany jako wiele elementów podrzędnych elementu <Rates>
w elementach <RoomBundle>
lub <Result>
. Aby używać go jako stawki warunkowej, musisz ustawić wartość atrybutu rate_rule_id
tak, aby odpowiadała identyfikatorowi reguły dotyczącej stawek zdefiniowanemu w pliku XML reguł dotyczących stawek.
Jeśli nie masz domyślnej stawki za podwójne zakwaterowanie, ustaw element podrzędny <Baserate>
wiadomości <Result>
na -1
. W takim przypadku wszystkie warunki <Rates>
wysyłane do Google będą uznawane za prawidłowe.
Przykłady
Podstawowy + warunek
Ten przykład pokazuje wiadomość Transaction, 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>
<!-- NOTE: OtherFees is inherited from the above setting -->
<Custom1>ratecode123</Custom1>
</Rate>
</Rates>
</Result>
</Transaction>
RoomBundle single
Ten przykład pokazuje wiadomość Transaction, która zawiera jedną stawkę w ramach <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
Ten przykład pokazuje wiadomość o transakcji zawierającą kilka stawek w ramach <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 podwójnego łóżka w pokoju z łazienką
Ten przykład pokazuje komunikat o transakcji zawierający cenę warunkową bez ceny publicznej za podwójne zakwaterowanie:
<?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>
Aktualizacja pliku strony docelowej
Aby umożliwić uprawnionym użytkownikom rezerwowanie zniżki za pomocą precyzyjnego linku, zmodyfikuj plik strony docelowej. Aby prawidłowo wyświetlać i przetwarzać zniżki, konieczne może być również dodatkowe wdrożenie w witrynie rezerwacji.
Oczekujemy, że partnerzy będą honorować cenę widoczną w linku do ceny warunkowej.
W dynamicznym linku do strony szczegółowej możesz uwzględnić regułę dotyczącą stawki, podając jej nazwę lub atrybut id
elementu <RateRule>
za pomocą zmiennej 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)¤cy=(USER-CURRENCY)&prid=(RATE-RULE-ID)
Plik LandingPage obsługuje też dyrektywę IF-RATE-RULE-ID
, która umożliwia warunkowe definiowanie części adresu URL na podstawie tego, czy istnieje reguła dotycząca 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)¤cy=(USER-CURRENCY)
W tym przykładzie wybierane są 2 strony docelowe, w zależności od tego, czy ustawiony jest identyfikator reguły oceny.
Więcej informacji znajdziesz w artykule Używanie zmiennych i warunków.