Pular para o conteúdo

Integração do Pixel Sojern

Se estiver a executar campanhas publicitárias através do Sojern, pode ligar a sua conta Sojern ao Wink introduzindo o seu ID do Contentor GTM Sojern no portal Wink. Uma vez ligado, o pixel de rastreamento do Sojern dispara automaticamente para a sua propriedade — cobrindo toda a jornada do hóspede desde a pesquisa até à reserva concluída.


  1. Obtenha o Seu ID do Contentor GTM do Sojern

    Contacte o seu gestor de conta Sojern e solicite o seu ID do Contentor GTM. Este segue o formato GTM-XXXXXXX. Isto é diferente do seu ID do Pixel Sojern — certifique-se de pedir especificamente o ID do Contentor GTM.

  2. Introduza-o no Portal Wink

    Inicie sessão em my.wink.travel, selecione a sua conta e vá ao separador Personalizações. Cole o seu ID do Contentor GTM Sojern no campo Sojern e guarde. A sua integração está agora ativa.

  3. Confirme com o Seu Gestor de Conta Sojern

    Informe o seu gestor de conta Sojern que a integração está ativa. Eles podem verificar do lado deles se o pixel está a disparar corretamente em wink.travel para a sua propriedade e se os dados estão a fluir para a sua conta Sojern.


Para transparência, aqui está o que o Wink configura para fazer esta integração funcionar:

  • Um campo para o ID do Contentor GTM Sojern está disponível no separador Personalizações do seu portal Wink. Quando introduz o seu ID do Contentor, o Wink valida o formato e armazena-o de forma segura associado à sua propriedade.
  • Em cada página onde a sua propriedade está ativa no Wink, o seu ID do Contentor GTM Sojern é inserido na página e o sistema de gestão de tags do Wink carrega dinamicamente o seu contentor Sojern juntamente com o seu próprio. Isto acontece automaticamente — não são necessários passos manuais da equipa Wink por propriedade.
  • O seu contentor Sojern é carregado de forma assíncrona, o que significa que não afeta o desempenho do carregamento da página para os seus hóspedes.
  • O rastreamento próprio do Wink e o seu pixel Sojern funcionam em paralelo, lendo a partir dos mesmos dados de eventos partilhados. Cada evento de reserva que o Wink rastreia está simultaneamente disponível para o seu contentor Sojern.
  • Quando a sua propriedade não está a ser visualizada — por exemplo, quando um hóspede está a navegar por outro hotel no Wink — o seu contentor Sojern não é carregado. Isto garante que o Sojern só recebe dados relevantes para a sua propriedade.

O Wink envia eventos compatíveis com GA4 para o dataLayer ao longo de toda a jornada do hóspede. O seu contentor GTM lê a partir deste mesmo dataLayer partilhado, pelo que qualquer trigger ou variável que configure tem acesso a todas as propriedades descritas abaixo.

Cada evento segue a estrutura padrão GA4 Enhanced Ecommerce: uma string event ao nível superior e um objeto ecommerce. Antes de cada push, o Wink limpa o payload ecommerce anterior para evitar que dados antigos interfiram nos novos triggers.


Estes eventos disparam automaticamente à medida que um hóspede avança no funil de reserva. Configure os seus triggers GTM como triggers de Evento Personalizado que correspondam aos nomes dos eventos abaixo.

PassoEventoQuando Dispara
1view_item_listCarregamento da grelha ou lista de inventário do hotel
2view_itemHóspede visualiza uma página específica da propriedade
3add_to_cartHóspede adiciona um quarto ao carrinho de compras
4begin_checkoutCarregamento da página de checkout / pagamento
5add_payment_infoHóspede seleciona um método de pagamento
6loginHóspede autentica-se via SSO
7purchaseReserva é confirmada
8refundReserva é cancelada

Dispara quando uma grelha ou lista de inventário do hotel é renderizada.

{
"event": "view_item_list",
"ecommerce": {
"item_list_id": "featured_hotels",
"item_list_name": "Featured Hotels",
"items": [ ]
}
}

Dispara quando um hóspede visualiza uma propriedade específica.

{
"event": "view_item",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}

Dispara quando um hóspede adiciona um quarto ao carrinho.

{
"event": "add_to_cart",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}

Dispara quando a página de checkout / pagamento é carregada.

{
"event": "begin_checkout",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"coupon": "SUMMER10",
"items": [ ]
}
}

coupon está presente apenas quando um código de desconto foi aplicado.


Dispara quando o hóspede seleciona ou confirma um método de pagamento.

{
"event": "add_payment_info",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"coupon": "SUMMER10",
"payment_type": "STRIPE",
"items": [ ]
}
}

payment_type é preenchido a partir do tipo de adquirente de pagamento. coupon está presente apenas quando um código de desconto foi aplicado.


Dispara quando um hóspede se autentica via single sign-on.

{
"event": "login",
"ecommerce": {
"method": "IAM"
}
}

Dispara quando uma reserva é confirmada.

{
"event": "purchase",
"ecommerce": {
"currency": "USD",
"transaction_id": "bc-a1b2c3d4",
"value": 299.00,
"coupon": "SUMMER10",
"shipping": 0.00,
"tax": 0.00,
"items": [
{
"item_id": "rr-xyz789",
"item_name": "Deluxe Ocean Suite",
"item_brand": "Grand Resort",
"item_category": "GUEST_ROOM",
"price": 299.00,
"quantity": 1,
"property_id": "prop-abc123",
"property_name": "Grand Resort Maldives",
"property_brand": "Grand Collection",
"property_chain": "Luxury Hotels International",
"city_name": "Malé",
"country_code": "MV",
"start_date": "2026-06-01",
"end_date": "2026-06-05",
"num_adults": 2,
"num_children": 0,
"cancellation_policy": "Refundable",
"rate_plan_id": "rp-summer2026",
"room_rate_id": "rr-xyz789",
"room_rate_name": "Summer Escape — Bed & Breakfast",
"num_perks": 2,
"room_location": "Overwater",
"room_view": "Ocean",
"room_classification": "Suite"
}
]
}
}

transaction_id é o identificador único do contrato de reserva. coupon, shipping e tax estão presentes apenas quando aplicáveis.


Dispara quando uma reserva é cancelada.

{
"event": "refund",
"ecommerce": {
"currency": "USD",
"transaction_id": "bc-a1b2c3d4",
"value": 299.00,
"coupon": "SUMMER10",
"shipping": 0.00,
"tax": 0.00,
"items": [ ]
}
}

transaction_id corresponde ao evento purchase para a mesma reserva. coupon, shipping e tax estão presentes apenas quando aplicáveis.


Todos os eventos que incluem um array items partilham o mesmo esquema de item. Cada propriedade é opcional, a menos que seja marcada como obrigatória.

Estes campos são nativamente compreendidos pelo GA4 e aparecem nos relatórios padrão de ecommerce sem qualquer configuração adicional.

PropriedadeTipoObrigatórioDescrição
item_idstringSimIdentificador único para o quarto ou produto
item_namestringNome do quarto ou produto
affiliationstringNome do afiliado ou vendedor
couponstringCódigo de cupão aplicado ao item
currencystringCódigo de moeda ISO 4217 (ex.: USD)
creative_namestringNome criativo usado numa promoção
creative_slotstringPosição do slot da promoção criativa
discountnumberValor do desconto aplicado
indexnumberPosição na lista (base 1)
item_brandstringNome do hotel ou marca
item_categorystringTipo de produto — ex.: GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA
item_list_idstringIdentificador da lista a que o item pertence
item_list_namestringNome exibido da lista
location_idstringCoordenadas geográficas da propriedade
pricenumberPreço unitário
promotion_idstringIdentificador da promoção
promotion_namestringNome exibido da promoção
quantitynumberQuantidade (padrão é 1)

Estes parâmetros transportam contexto de reserva específico do Wink. O GA4 não os apresenta automaticamente nos relatórios — deve registar cada um como uma dimensão personalizada ao nível do item na sua propriedade GA4 antes de aparecerem em explorações ou relatórios padrão. Veja Dimensões Personalizadas no GA4 abaixo para instruções de configuração.

PropriedadeTipoDescrição
property_idstringIdentificador da propriedade Wink
property_namestringNome exibido da propriedade
property_brandstringMarca a que a propriedade pertence
property_chainstringCadeia a que a propriedade pertence
property_url_namestringSlug amigável para URL da propriedade
city_namestringCidade onde a propriedade está localizada
country_codestringCódigo do país ISO 3166-1 alfa-2
start_datestringData de check-in no formato YYYY-MM-DD
end_datestringData de check-out no formato YYYY-MM-DD
num_adultsnumberNúmero de adultos na reserva
num_childrennumberNúmero de crianças na reserva
cancellation_policystringUm dos: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions
rate_plan_idstringIdentificador do plano tarifário
room_rate_idstringIdentificador da tarifa específica do quarto
room_rate_namestringNome exibido da tarifa do quarto
num_perksnumberNúmero de benefícios incluídos na tarifa
room_locationstringDescrição da localização do quarto (ex.: Overwater, Garden)
room_viewstringDescrição da vista do quarto (ex.: Ocean, City)
room_classificationstringClassificação ou categoria do quarto (ex.: Suite, Standard)
bed_typestringConfiguração da cama do quarto (ex.: King, Twin)

O GA4 ignora parâmetros personalizados ao nível do item nos relatórios até que os registe explicitamente como dimensões personalizadas ao nível do item. Só precisa de registar os parâmetros que pretende usar nos relatórios — não é necessário registar todos os 20.

  1. Abra Definições Personalizadas

    No GA4, vá a Admin (ícone de engrenagem no canto inferior esquerdo) → selecione a sua propriedade → Exibição de dadosDefinições personalizadas.

  2. Crie uma nova dimensão personalizada

    Clique em Criar dimensões personalizadas.

  3. Preencha os detalhes da dimensão

    • Nome da dimensão — o rótulo legível que aparece nos relatórios GA4 (veja a tabela abaixo)
    • Âmbito — selecione Item
    • Parâmetro do evento — o nome exato do parâmetro conforme aparece no dataLayer (veja a tabela abaixo)
    • Descrição — opcional, mas recomendada
  4. Guarde e repita

    Clique em Guardar e repita para cada parâmetro que deseja rastrear.

Use a tabela seguinte como referência ao criar dimensões personalizadas. O valor do Parâmetro do evento deve corresponder exatamente — o GA4 diferencia maiúsculas de minúsculas.

Nome da dimensãoParâmetro do eventoTipo
ID da propriedadeproperty_idTexto
Nome da propriedadeproperty_nameTexto
Marca da propriedadeproperty_brandTexto
Cadeia da propriedadeproperty_chainTexto
Nome URL da propriedadeproperty_url_nameTexto
Nome da cidadecity_nameTexto
Código do paíscountry_codeTexto
Data de check-instart_dateTexto
Data de check-outend_dateTexto
Número de adultosnum_adultsNúmero
Número de criançasnum_childrenNúmero
Política de cancelamentocancellation_policyTexto
ID do plano tarifáriorate_plan_idTexto
ID da tarifa do quartoroom_rate_idTexto
Nome da tarifa do quartoroom_rate_nameTexto
Número de benefíciosnum_perksNúmero
Localização do quartoroom_locationTexto
Vista do quartoroom_viewTexto
Classificação do quartoroom_classificationTexto
Tipo de camabed_typeTexto

Os seguintes eventos estão disponíveis no dataLayer do Wink, mas não fazem parte do funil padrão de reserva. Podem ser disparados por outras interações na plataforma.

{
"event": "add_to_wishlist",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}
{
"event": "remove_from_cart",
"ecommerce": {
"currency": "USD",
"value": 299.00,
"items": [ ]
}
}
{
"event": "select_item",
"ecommerce": {
"item_list_id": "featured_hotels",
"item_list_name": "Featured Hotels",
"items": [ ]
}
}
{
"event": "view_cart"
}

Nenhum payload ecommerce está incluído com este evento.

{
"event": "view_promotion",
"ecommerce": {
"creative_name": "Summer Banner",
"creative_slot": "hero",
"promotion_id": "promo_001",
"promotion_name": "Summer Sale",
"items": [ ]
}
}
{
"event": "select_promotion",
"ecommerce": {
"creative_name": "Summer Banner",
"creative_slot": "hero",
"promotion_id": "promo_001",
"promotion_name": "Summer Sale",
"items": [ ]
}
}
{
"event": "search",
"ecommerce": {
"search_term": "beachfront resort"
}
}
{
"event": "select_content",
"ecommerce": {
"content_type": "hotel",
"content_id": "prop_12345"
}
}
{
"event": "share",
"ecommerce": {
"method": "copy_link",
"content_type": "hotel",
"item_id": "prop_12345"
}
}
{
"event": "sign_up",
"ecommerce": {
"method": "email"
}
}
{
"event": "generate_lead",
"ecommerce": {
"currency": "USD",
"value": 0.00
}
}
{
"event": "join_group",
"ecommerce": {
"group_id": "group_abc"
}
}
{
"event": "earn_virtual_currency",
"ecommerce": {
"virtual_currency_name": "WinkPoints",
"value": 100
}
}
{
"event": "spend_virtual_currency",
"ecommerce": {
"virtual_currency_name": "WinkPoints",
"value": 50,
"item_name": "Room Upgrade"
}
}
{
"event": "level_start",
"ecommerce": {
"level_name": "Gold"
}
}
{
"event": "level_end",
"ecommerce": {
"level_name": "Gold",
"success": true
}
}
{
"event": "level_up",
"ecommerce": {
"level": 2,
"character": "traveler"
}
}
{
"event": "post_score",
"ecommerce": {
"score": 980,
"level": 2,
"character": "traveler"
}
}
{
"event": "unlock_achievement",
"ecommerce": {
"achievement_id": "first_booking"
}
}
{
"event": "tutorial_begin",
"ecommerce": {}
}
{
"event": "tutorial_complete",
"ecommerce": {}
}

Este é um evento personalizado do Wink — não faz parte do conjunto padrão de eventos GA4. É enviado em cada navegação de página e transporta contexto de dispositivo e sessão. Não inclui um objeto ecommerce.

{
"event": "virtualPageView",
"device": "Desktop",
"deviceAgent": "Mozilla/5.0 ...",
"os": "MacOS",
"path": "/hotels/grand-resort",
"title": "Grand Resort — Wink",
"userId": "user_abc123",
"startDate": "2026-06-01",
"endDate": "2026-06-05",
"guests": "2",
"rooms": "1"
}
PropriedadeDescrição
deviceTipo de dispositivo detetado — Desktop, Android, iPhone, iPad ou similar
deviceAgentString bruta do user agent
osSistema operativo detetado — Windows, MacOS, Linux, UNIX
pathCaminho da página atual
titleTítulo da página atual
userIdIdentificador do utilizador autenticado (omitido quando não está autenticado)
startDateData de check-in da sessão de pesquisa atual
endDateData de check-out da sessão de pesquisa atual
guestsNúmero de hóspedes da sessão de pesquisa atual
roomsNúmero de quartos da sessão de pesquisa atual