As tarifas condicionais são um tipo de regra de tarifação que permite oferecer preços diferentes para itinerários com base em critérios como o dispositivo ou o país do usuário ou se ele fez login no Google.
Quando você tem mais de uma tarifa pública ou tarifa condicional para um itinerário ou categoria de quarto, o usuário verá a tarifa mais baixa. O Google sempre escolhe a tarifa qualificada mais baixa para o usuário.
Visão geral
As tarifas condicionais ficam visíveis nos slots de preços padrão e são mostradas apenas aos usuários com pesquisas que atendem aos critérios da tarifa condicional associada. Esses critérios podem ser baseados no seguinte:
- Dispositivo do usuário final
- País do usuário final
- Preferência de idioma do usuário final
- Subconjunto com amostragem reduzida de todos os usuários
- Se o usuário final fez login
Para ativar as tarifas condicionais, modifique o seguinte:
Arquivo XML de regras de tarifação: defina as condições em que as tarifas condicionais são aplicadas.
Feed de preços: use o
<Rate>elemento em uma mensagem de transação para definir as tarifas.Arquivo da página de destino: adicione valores específicos da regra de tarifação aos seus links diretos.
Tarifas condicionais específicas do dispositivo
As tarifas específicas do dispositivo são diárias de hotéis que só ficam visíveis e podem ser reservadas por usuários em um dispositivo específico, como um smartphone, tablet ou computador. As tarifas são fornecidas pelos parceiros do Google, e os usuários finais podem ver e reservar as mesmas tarifas específicas do dispositivo no site do parceiro.

Tarifas condicionais específicas do país
As diárias específicas do país são preços de hotéis que só ficam visíveis e podem ser reservados por usuários que estão pesquisando hotéis em um país específico. O Google determina o país usando o endereço IP do usuário final. As tarifas são fornecidas pelos parceiros do Google, e os usuários finais podem ver e reservar as mesmas tarifas específicas do país no site do parceiro.
Tarifas condicionais específicas do idioma
As tarifas específicas do idioma só ficam visíveis para usuários que estão pesquisando hotéis usando uma configuração de idioma específica no Google. As condições específicas do idioma
são definidas usando o elemento <LanguageCode>.
O idioma não é especificado em consultas com contexto
mensagens de solicitação. Portanto, se você especificar <LanguageCode> nas regras de tarifação, então
a resposta com contexto vai incluir todas as tarifas específicas do idioma relevantes.
Tarifas condicionais com amostragem reduzida
As tarifas condicionais com amostragem reduzida só ficam visíveis para um subconjunto aleatório de todos os usuários qualificados. A taxa de amostragem é definida usando o <MaxUsersPercent>
elemento e calculada usando o seguinte:
MaxUsersPercent = (number of users selected to view rate)/(total eligible users)
Tarifas condicionais de login
As tarifas de login só ficam visíveis para usuários que fizeram login com uma Conta do Google. Os parceiros do Google fornecem as tarifas, e os usuários podem ver e reservar os preços no site do parceiro. As tarifas de login são definidas usando o
<UserSignedIn> elemento.
Como o Google sempre seleciona a tarifa qualificada mais baixa, se uma tarifa condicional
for maior que o preço definido no nível <Result>, a tarifa condicional
nunca será selecionada. Para evitar isso, remova a
tarifa no <Result>
nível e condicione todas as tarifas. Como alternativa, pergunte ao seu gerente técnico de contas
sobre o uso de uma regra de tarifação padrão para preços definidos no nível <Result>.
Criar um arquivo XML de regras de tarifação
As regras de tarifação para tarifas condicionais são definidas usando um arquivo XML de regras de tarifação. Para mais informações, consulte a Referência XML de regras de tarifação.
Atualizar o feed de preços
As tarifas condicionais são definidas usando o elemento em uma mensagem de transação.
O elemento <Rate> também pode ser usado como vários elementos filhos de <Rates>
nos elementos <RoomBundle> ou <Result>. Para usá-lo como uma tarifa condicional, defina o valor do atributo rate_rule_id para corresponder ao ID da regra de tarifação definido no arquivo XML de regras de tarifação.
Se você não tiver uma tarifa pública padrão de taxa de ocupação dupla, defina o <Baserate>
elemento filho da mensagem <Result> como -1. Nesse caso, todas as condicionais
<Rates> enviadas ao Google serão consideradas válidas.
Exemplos
Base + condicional
O exemplo a seguir mostra uma mensagem de transação que contém uma tarifa base e uma tarifa condicional:
<?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
O exemplo a seguir mostra uma mensagem de transação que contém uma única
tarifa em um <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
O exemplo a seguir mostra uma mensagem de transação que contém várias
tarifas em um <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>
Sem ocupação dupla pública
O exemplo a seguir mostra uma mensagem de transação que contém tarifa condicional sem taxa pública de ocupação dupla:
<?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>
Atualizar o arquivo da página de destino
Para garantir que os usuários finais qualificados possam reservar o preço com desconto usando um link direto, modifique o arquivo da página de destino. Também pode ser necessária uma implementação adicional no site de reservas para mostrar e atender corretamente às tarifas com desconto.
Esperamos que os parceiros honrem o preço mostrado no link direto da tarifa condicional.
Em um link direto dinâmico, você pode incluir a regra de tarifação pelo nome, o
id atributo do <RateRule> elemento, com a RATE-RULE-ID variável.
O exemplo a seguir adiciona o ID da regra de tarifação:
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)
O arquivo da página de destino também oferece suporte à diretiva IF-RATE-RULE-ID, que permite definir condicionalmente partes do URL, com base na existência da regra de tarifação:
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)
Este exemplo escolhe entre duas páginas de destino, dependendo se o ID da regra de tarifação está definido.
Para mais informações, consulte Como usar variáveis e condições.