Специальные цены – это тип правил ценообразования, который позволяет предлагать разные цены на маршруты в зависимости от таких критериев, как устройство пользователя, страна или вход в аккаунт Google.
Если для маршрута или пакета услуг доступно несколько общедоступных или специальных цен, пользователь увидит самую низкую из них. Google всегда выбирает самую низкую цену, доступную пользователю.
Обзор
Специальные цены показываются в стандартных слотах для цен и только тем пользователям, чьи поисковые запросы соответствуют критериям для этих цен. Критерии могут быть основаны на следующих факторах:
- Устройство конечного пользователя
- Страна конечного пользователя
- Языковые настройки конечных пользователей
- Выборка из всех пользователей
- Выполнил ли конечный пользователь вход в аккаунт
Чтобы включить специальные цены, измените следующее:
XML-файл с правилами тарифов. Определяет условия, при которых применяются специальные цены.
Фид с ценами. Чтобы задать тарифы, используйте элемент
<Rate>в сообщении-транзакции.Файл целевой страницы. Добавьте в ссылки на контент значения, относящиеся к правилам тарифов.
Специальные цены для определенных устройств
Тарифы для определенных устройств – это цены на номера в гостиницах, которые видны только пользователям определенных устройств, например мобильных телефонов, планшетов или компьютеров. Цены предоставляются партнерами Google, и конечные пользователи могут видеть и бронировать номера по тем же ценам для определенных устройств на сайте партнера.

Специальные цены для отдельных стран
Тарифы для определенных стран – это цены на гостиничные номера, которые видны только пользователям, ищущим гостиницы в определенной стране. Google определяет страну по IP-адресу конечного пользователя. Цены предоставляются партнерами Google, и конечные пользователи могут видеть и бронировать номера по тем же ценам на сайте партнера для определенной страны.
Специальные цены для пользователей, говорящих на определенном языке
Тарифы для определенных языков видны только пользователям, которые ищут гостиницы, используя определенные языковые настройки в Google. Условия для отдельных языков задаются с помощью элемента <LanguageCode>.
Язык не указан в сообщениях запросов With Context queries. Если в правилах тарифов указано значение <LanguageCode>, то в ответе With Context должны быть все тарифы на соответствующих языках.
Специальные цены с уменьшенной частотой дискретизации
Специальные цены с уменьшенной частотой показа видны только случайной подгруппе всех соответствующих требованиям пользователей. Частота дискретизации определяется с помощью элемента <MaxUsersPercent> и рассчитывается следующим образом:
MaxUsersPercent = (number of users selected to view rate)/(total eligible users)
Специальные цены для пользователей, вошедших в аккаунт
Цены для вошедших в аккаунт видны только пользователям, которые вошли в аккаунт Google. Цены предоставляются партнерами Google, и пользователи могут просматривать их и бронировать номера на сайтах партнеров. Цены для вошедших в аккаунт пользователей задаются с помощью элемента <UserSignedIn>.
Поскольку Google всегда выбирает самую низкую цену, если специальная цена выше цены, установленной на уровне <Result>, то специальная цена никогда не будет выбрана. Чтобы избежать этого, удалите тариф на уровне <Result> и задайте условия для всех тарифов. Вы также можете обратиться к техническому менеджеру аккаунта и попросить его использовать правило цены по умолчанию для цен, заданных на уровне <Result>.
Как создать XML-файл с правилами тарифов
Правила для специальных цен задаются в XML-файле. Подробную информацию вы найдете в справочнике по XML-файлам с правилами тарифов.
Обновите фид с ценами
Специальные цены задаются с помощью элемента в сообщении-транзакции.
Элемент <Rate> также можно использовать в качестве нескольких дочерних элементов <Rates> в элементах <RoomBundle> или <Result>. Чтобы использовать ее в качестве специальной цены, необходимо задать значение атрибута rate_rule_id, соответствующее идентификатору правила, который вы определили в XML-файле правил.
Если у вас нет стандартной цены за двухместное размещение, задайте для дочернего элемента <Baserate> сообщения <Result> значение -1. Любые условные <Rates>, отправленные в Google в этом случае, будут считаться действительными.
Примеры
Базовые и дополнительные
В примере ниже показано сообщение-транзакция, содержащее базовую и специальную цены.
<?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
В примере ниже показано сообщение-транзакция, которое содержит одну цену в элементе <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
В примере ниже показано сообщение-транзакция, содержащее несколько тарифов в одном элементе <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>
Нет общедоступных двухместных номеров
В примере ниже показано сообщение-транзакция, которое содержит специальную цену без общедоступной цены за двухместное размещение.
<?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>
Обновите файл целевой страницы
Чтобы конечные пользователи, соответствующие требованиям, могли забронировать номер по сниженной цене, перейдя по ссылке на контент, измените файл целевой страницы. Чтобы цены со скидкой показывались и применялись правильно, может потребоваться дополнительная настройка сайта бронирования.
Мы ожидаем, что партнеры будут соблюдать цену, указанную в ссылке на контент со специальной ценой.
В динамическую ссылку на контент можно включить правило тарифа по его названию, атрибут id элемента <RateRule> с переменной RATE-RULE-ID.
В примере ниже добавляется идентификатор правила назначения цен:
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)
Файл целевой страницы также поддерживает директиву IF-RATE-RULE-ID, которая позволяет условно определять части URL в зависимости от того, существует ли правило тарифа:
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)
В этом примере выбор между двумя целевыми страницами зависит от того, задан ли идентификатор правила тарифа.
Подробнее об использовании переменных и условий…