GTM Analytics-integration
Du kan forbinde enhver Google Tag Manager (GTM) container til Wink ved at indtaste dens GTM Container ID i Wink-portalen. Når den er forbundet, indlæses din container automatisk for din ejendom og læser Winks bookingbegivenheder direkte — hvilket dækker hele gæstens rejse fra søgning til gennemført booking. Et almindeligt brugsscenarie er en Sojern container til retargeting og reklame, men enhver GTM-container fungerer på samme måde.
Hvad Du Skal Gøre
Sektion kaldt “Hvad Du Skal Gøre”-
Få dit GTM Container ID
Skaff dit GTM Container ID (format
GTM-XXXXXXX). Hvis det kommer fra en partner som Sojern, bed om GTM Container ID specifikt — det er forskelligt fra et pixel- eller tag-ID. -
Indtast det i Wink-portalen
Log ind på app.wink.travel, vælg din konto, og gå til fanen Customizations. Indsæt dit GTM Container ID i feltet GTM og gem. Din integration er nu aktiv.
-
(Valgfrit) Tilføj et GA4 Measurement ID + API Secret til server-side køb
GTM-containere kører udelukkende i gæstens browser, så en gennemført booking kan gå tabt, hvis gæsten lukker fanen under betalingsomdirigeringen. Hvis din container indlæser en GA4-ejendom og du vil sikre, at gennemførte bookinger registreres pålideligt, skal du også indtaste GA4’s Measurement ID og Measurement Protocol API secret i GTM-sektionen. Wink sender så
purchasefor den ejendom server-side, præcis som beskrevet i GA4 Analytics Integration guiden. Lad disse være tomme, hvis du kun har brug for tracking i browseren. -
Bekræft med din udbyder
Hvis din container kommer fra en partner som Sojern, så giv din account manager besked om, at integrationen er aktiv. De kan verificere fra deres side, at tags affyres korrekt på
wink.travelfor din ejendom, og at data flyder ind i din konto.
Hvad Wink Gør På Vores Side
Sektion kaldt “Hvad Wink Gør På Vores Side”For gennemsigtighed er her, hvad Wink konfigurerer for at få denne integration til at fungere:
- Et GTM Container ID-felt er tilgængeligt i fanen Customizations i din Wink-portal. Når du indtaster dit Container ID, validerer Wink formatet (
GTM-XXXXXXX) og gemmer det sikkert tilknyttet din ejendom. - På hver side, hvor din ejendom er aktiv på Wink, injiceres din container direkte i siden — den deler Winks egen
window.dataLayer— så den indlæses sammen med Winks egen container uden afhængighed af ekstra konfiguration. Dette sker automatisk, uden arbejde pr. ejendom fra Wink-teamet. - Din container indlæses asynkront, så den påvirker ikke sideindlæsningens ydeevne for dine gæster.
- Winks egen tracking og din container kører parallelt, og læser fra samme delte
dataLayer. Hver bookingbegivenhed, som Wink sporer, er samtidig tilgængelig for din container. - Når din ejendom ikke vises — for eksempel når en gæst browser et andet hotel på Wink — indlæses din container ikke, så den modtager kun data relevant for din ejendom.
- Hvis du har angivet et GA4 Measurement ID + API secret (trin 3 ovenfor), sendes
purchasefor gennemførte bookinger desuden server-side via GA4 Measurement Protocol, så et salg registreres, selvom gæsten aldrig vender tilbage til bekræftelsessiden.
DataLayer Reference
Sektion kaldt “DataLayer Reference”Wink skubber GA4-kompatible events til dataLayer gennem hele gæstens rejse. Din GTM-container læser fra denne samme delte dataLayer, så enhver trigger eller variabel, du konfigurerer, har adgang til alle nedenstående egenskaber.
Hver event følger den standard GA4 Enhanced Ecommerce-struktur: en topniveau event-streng og et ecommerce-objekt. Før hver push rydder Wink den tidligere ecommerce-payload for at forhindre forældede data i at påvirke nye triggers.
Bookingrejse-events
Sektion kaldt “Bookingrejse-events”Disse events affyres automatisk, når en gæst bevæger sig gennem bookingtragten. Konfigurer dine GTM-triggers som Custom Event triggers, der matcher event-navnene nedenfor.
| Trin | Event | Hvornår den affyres |
|---|---|---|
| 1 | view_item_list | Hotelinventarliste eller grid indlæses |
| 2 | view_item | Gæst ser en specifik ejendomsside |
| 3 | add_to_cart | Gæst tilføjer et værelse til indkøbskurven |
| 4 | begin_checkout | Checkout-/betalingsside indlæses |
| 5 | add_payment_info | Gæst vælger betalingsmetode |
| 6 | login | Gæst autentificerer via SSO |
| 7 | purchase | Booking bekræftes |
| 8 | refund | Booking annulleres |
view_item_list
Sektion kaldt “view_item_list”Affyres, når et hotelinventar-grid eller liste vises.
{ "event": "view_item_list", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_item
Sektion kaldt “view_item”Affyres, når en gæst ser en specifik ejendom.
{ "event": "view_item", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}add_to_cart
Sektion kaldt “add_to_cart”Affyres, når en gæst tilføjer et værelse til sin kurv.
{ "event": "add_to_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}begin_checkout
Sektion kaldt “begin_checkout”Affyres, når checkout-/betalingssiden indlæses.
{ "event": "begin_checkout", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "items": [ ] }}coupon er kun til stede, når en rabatkode er anvendt.
add_payment_info
Sektion kaldt “add_payment_info”Affyres, når gæsten vælger eller bekræfter en betalingsmetode.
{ "event": "add_payment_info", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "payment_type": "STRIPE", "items": [ ] }}payment_type udfyldes ud fra betalingsindløserens type. coupon er kun til stede, når en rabatkode er anvendt.
Affyres, når en gæst autentificerer via single sign-on.
{ "event": "login", "ecommerce": { "method": "IAM" }}purchase
Sektion kaldt “purchase”Affyres, når en booking bekræftes.
{ "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 er den unikke bookingkontrakt-identifikator. coupon, shipping og tax er kun til stede, når relevant.
refund
Sektion kaldt “refund”Affyres, når en booking annulleres.
{ "event": "refund", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ ] }}transaction_id matcher purchase-eventet for samme booking. coupon, shipping og tax er kun til stede, når relevant.
Vareegenskaber
Sektion kaldt “Vareegenskaber”Alle events, der inkluderer et items array, deler samme vare-skema. Hver egenskab er valgfri, medmindre den er markeret som påkrævet.
Standard GA4-felter
Sektion kaldt “Standard GA4-felter”Disse felter forstås indbygget af GA4 og vises i standard ecommerce-rapporter uden yderligere konfiguration.
| Egenskab | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
item_id | string | Ja | Unik identifikator for værelset eller produktet |
item_name | string | — | Navn på værelset eller produktet |
affiliation | string | — | Affiliate- eller sælgernavn |
coupon | string | — | Anvendt rabatkode på varen |
currency | string | — | ISO 4217 valutakode (f.eks. USD) |
creative_name | string | — | Kreativt navn brugt i en kampagne |
creative_slot | string | — | Placeringsslot for kampagnekreativ |
discount | number | — | Anvendt rabatbeløb |
index | number | — | Position i listen (1-baseret) |
item_brand | string | — | Hotel- eller brandnavn |
item_category | string | — | Produkttype — f.eks. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA |
item_list_id | string | — | Identifikator for listen, varen tilhører |
item_list_name | string | — | Visningsnavn for listen |
location_id | string | — | Geokoordinater for ejendommen |
price | number | — | Enhedspris |
promotion_id | string | — | Identifikator for kampagnen |
promotion_name | string | — | Visningsnavn for kampagnen |
quantity | number | — | Antal (standard er 1) |
Brugerdefinerede vareparametre
Sektion kaldt “Brugerdefinerede vareparametre”Disse parametre bærer Wink-specifik bookingkontekst. GA4 viser dem ikke automatisk i rapporter — du skal registrere hver enkelt som en item-scoped custom dimension i din GA4-ejendom, før de vises i udforskninger eller standardrapporter. Se Custom Dimensions in GA4 nedenfor for opsætningsinstruktioner.
| Egenskab | Type | Beskrivelse |
|---|---|---|
property_id | string | Wink ejendomsidentifikator |
property_name | string | Ejendommens visningsnavn |
property_brand | string | Brand ejendommen tilhører |
property_chain | string | Kæde ejendommen tilhører |
property_url_name | string | URL-venlig slug for ejendommen |
city_name | string | By, hvor ejendommen ligger |
country_code | string | ISO 3166-1 alpha-2 landekode |
start_date | string | Check-in dato i YYYY-MM-DD format |
end_date | string | Check-out dato i YYYY-MM-DD format |
num_adults | number | Antal voksne i bookingen |
num_children | number | Antal børn i bookingen |
cancellation_policy | string | En af: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions |
rate_plan_id | string | Identifikator for rateplan |
room_rate_id | string | Identifikator for specifik værelsesrate |
room_rate_name | string | Visningsnavn for værelsesraten |
num_perks | number | Antal fordele inkluderet med raten |
room_location | string | Lokationsbeskrivelse for værelset (f.eks. Overwater, Garden) |
room_view | string | Udsigtsbeskrivelse for værelset (f.eks. Ocean, City) |
room_classification | string | Værelsesklassifikation eller niveau (f.eks. Suite, Standard) |
bed_type | string | Sengkonfiguration for værelset (f.eks. King, Twin) |
Brugerdefinerede dimensioner i GA4
Sektion kaldt “Brugerdefinerede dimensioner i GA4”GA4 ignorerer brugerdefinerede vareparametre i rapporter, indtil du eksplicit registrerer dem som item-scoped custom dimensions. Du behøver kun at registrere de parametre, du vil bruge i rapporter — ikke alle 20.
-
Åbn Custom Definitions
I GA4, gå til Admin (gearikon nederst til venstre) → vælg din ejendom → Data display → Custom definitions.
-
Opret en ny brugerdefineret dimension
Klik på Create custom dimensions.
-
Udfyld dimensionsdetaljer
- Dimension name — det menneskelige læselige navn, der vises i GA4-rapporter (se tabel nedenfor)
- Scope — vælg Item
- Event parameter — det præcise parameternavn som det vises i dataLayer (se tabel nedenfor)
- Description — valgfrit, men anbefales
-
Gem og gentag
Klik på Save, og gentag for hver parameter, du vil spore.
Brug følgende tabel som reference, når du opretter brugerdefinerede dimensioner. Værdien for Event parameter skal matche præcist — GA4 er case-sensitiv.
| Dimension navn | Event parameter | Type |
|---|---|---|
| Property ID | property_id | Tekst |
| Property name | property_name | Tekst |
| Property brand | property_brand | Tekst |
| Property chain | property_chain | Tekst |
| Property URL name | property_url_name | Tekst |
| City name | city_name | Tekst |
| Country code | country_code | Tekst |
| Check-in date | start_date | Tekst |
| Check-out date | end_date | Tekst |
| Number of adults | num_adults | Tal |
| Number of children | num_children | Tal |
| Cancellation policy | cancellation_policy | Tekst |
| Rate plan ID | rate_plan_id | Tekst |
| Room rate ID | room_rate_id | Tekst |
| Room rate name | room_rate_name | Tekst |
| Number of perks | num_perks | Tal |
| Room location | room_location | Tekst |
| Room view | room_view | Tekst |
| Room classification | room_classification | Tekst |
| Bed type | bed_type | Tekst |
Yderligere tilgængelige events
Sektion kaldt “Yderligere tilgængelige events”Følgende events er tilgængelige i Wink dataLayer, men er ikke en del af standard bookingtragt. De kan affyres af andre interaktioner på platformen.
add_to_wishlist
Sektion kaldt “add_to_wishlist”{ "event": "add_to_wishlist", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}remove_from_cart
Sektion kaldt “remove_from_cart”{ "event": "remove_from_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}select_item
Sektion kaldt “select_item”{ "event": "select_item", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_cart
Sektion kaldt “view_cart”{ "event": "view_cart"}Ingen ecommerce payload er inkluderet med denne event.
view_promotion
Sektion kaldt “view_promotion”{ "event": "view_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}select_promotion
Sektion kaldt “select_promotion”{ "event": "select_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}search
Sektion kaldt “search”{ "event": "search", "ecommerce": { "search_term": "beachfront resort" }}select_content
Sektion kaldt “select_content”{ "event": "select_content", "ecommerce": { "content_type": "hotel", "content_id": "prop_12345" }}{ "event": "share", "ecommerce": { "method": "copy_link", "content_type": "hotel", "item_id": "prop_12345" }}sign_up
Sektion kaldt “sign_up”{ "event": "sign_up", "ecommerce": { "method": "email" }}generate_lead
Sektion kaldt “generate_lead”{ "event": "generate_lead", "ecommerce": { "currency": "USD", "value": 0.00 }}join_group
Sektion kaldt “join_group”{ "event": "join_group", "ecommerce": { "group_id": "group_abc" }}earn_virtual_currency
Sektion kaldt “earn_virtual_currency”{ "event": "earn_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 100 }}spend_virtual_currency
Sektion kaldt “spend_virtual_currency”{ "event": "spend_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 50, "item_name": "Room Upgrade" }}level_start
Sektion kaldt “level_start”{ "event": "level_start", "ecommerce": { "level_name": "Gold" }}level_end
Sektion kaldt “level_end”{ "event": "level_end", "ecommerce": { "level_name": "Gold", "success": true }}level_up
Sektion kaldt “level_up”{ "event": "level_up", "ecommerce": { "level": 2, "character": "traveler" }}post_score
Sektion kaldt “post_score”{ "event": "post_score", "ecommerce": { "score": 980, "level": 2, "character": "traveler" }}unlock_achievement
Sektion kaldt “unlock_achievement”{ "event": "unlock_achievement", "ecommerce": { "achievement_id": "first_booking" }}tutorial_begin
Sektion kaldt “tutorial_begin”{ "event": "tutorial_begin", "ecommerce": {}}tutorial_complete
Sektion kaldt “tutorial_complete”{ "event": "tutorial_complete", "ecommerce": {}}virtualPageView
Sektion kaldt “virtualPageView”Dette er en brugerdefineret Wink-event — ikke en del af standard GA4-event-sættet. Den skubbes ved hver side-navigation og bærer enheds- og sessionskontekst. Den inkluderer ikke et ecommerce-objekt.
{ "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"}| Egenskab | Beskrivelse |
|---|---|
device | Registreret enhedstype — Desktop, Android, iPhone, iPad eller lignende |
deviceAgent | Rå brugeragent-streng |
os | Registreret operativsystem — Windows, MacOS, Linux, UNIX |
path | Aktuel side-sti |
title | Aktuel sidetitel |
userId | Identifikator for autentificeret bruger (udeladt, hvis ikke logget ind) |
startDate | Check-in dato fra den aktuelle søgesession |
endDate | Check-out dato fra den aktuelle søgesession |
guests | Antal gæster fra den aktuelle søgesession |
rooms | Antal værelser fra den aktuelle søgesession |
