Ga naar inhoud

GTM Analytics-integratie

U kunt elke Google Tag Manager (GTM) container koppelen aan Wink door de GTM Container ID in te voeren in het Wink-portaal. Zodra deze is gekoppeld, wordt uw container automatisch geladen voor uw accommodatie en leest deze direct de boekingsevenementen van Wink — dit beslaat de volledige gastreis van zoeken tot voltooide boeking. Een veelvoorkomend gebruik is een Sojern container voor retargeting en advertenties, maar elke GTM-container werkt op dezelfde manier.


  1. Verkrijg Uw GTM Container ID

    Verkrijg uw GTM Container ID (formaat GTM-XXXXXXX). Als deze van een partner zoals Sojern komt, vraag dan specifiek om de GTM Container ID — deze is anders dan een pixel- of tag-ID.

  2. Voer Het In in het Wink-portaal

    Log in op app.wink.travel, selecteer uw account en open uw aanpassingsinstellingen. Plak in de sectie Analytics & integraties uw GTM Container ID in het veld GTM Container ID en sla op. Uw integratie is nu actief.

  3. Bevestig bij Uw Provider

    Als uw container van een partner zoals Sojern komt, laat uw accountmanager weten dat de integratie actief is. Zij kunnen aan hun kant verifiëren dat tags correct afgevuurd worden op wink.travel voor uw accommodatie en dat gegevens in uw account binnenkomen.


Voor transparantie, dit is wat Wink configureert om deze integratie te laten werken:

  • Een GTM Container ID-veld is beschikbaar in de sectie Analytics & integraties van uw aanpassingsinstellingen. Wanneer u uw Container ID invoert, valideert Wink het formaat (GTM-XXXXXXX) en slaat het veilig op bij uw accommodatie.
  • Op elke pagina waar uw accommodatie actief is op Wink wordt uw container direct in de pagina geïnjecteerd — waarbij Wink’s eigen window.dataLayer wordt gedeeld — zodat het naast Wink’s eigen container laadt zonder afhankelijkheid van extra configuratie. Dit gebeurt automatisch, zonder dat het Wink-team per accommodatie hoeft te werken.
  • Uw container wordt asynchroon geladen, zodat dit de laadtijd van pagina’s voor uw gasten niet beïnvloedt.
  • Wink’s eigen tracking en uw container draaien parallel, waarbij ze lezen uit dezelfde gedeelde dataLayer. Elk boekingsevenement dat Wink volgt, is tegelijkertijd beschikbaar voor uw container.
  • Wanneer uw accommodatie niet wordt bekeken — bijvoorbeeld wanneer een gast een ander hotel op Wink bekijkt — wordt uw container niet geladen, zodat het alleen gegevens ontvangt die relevant zijn voor uw accommodatie.
  • De voltooide boeking (purchase) wordt in de browser afgevuurd op de bedankpagina. Een GTM Container ID is een black box — Wink kan niet aannemen welke tags erin zitten — dus Wink roept Google nooit namens u aan vanaf zijn servers. In plaats daarvan ontvangt elke GA4- of conversietag in uw container de purchase client-side, precies zoals elk ander boekingsevenement. Omdat de betalingsprovider de browser van de gast weg- en terugstuurt, herstelt Wink de analytics-sessie die door de redirect werd onderbroken voordat purchase wordt afgevuurd, zodat de verkoop wordt toegeschreven aan het oorspronkelijke bezoek van de gast en niet als een nieuwe sessie wordt geteld.

Wink pusht GA4-compatibele events naar de dataLayer gedurende de hele gastreis. Uw GTM-container leest uit dezezelfde gedeelde dataLayer, dus elke trigger of variabele die u configureert heeft toegang tot alle hieronder beschreven eigenschappen.

Elk event volgt de standaard GA4 Enhanced Ecommerce-structuur: een top-level event string en een ecommerce object. Voor elke push wist Wink de vorige ecommerce payload om te voorkomen dat verouderde data in nieuwe triggers terechtkomt.


Deze events worden automatisch afgevuurd terwijl een gast door de boekingsfunnel beweegt. Configureer uw GTM-triggers als Custom Event triggers die overeenkomen met de onderstaande eventnamen.

StapEventWanneer het afvuurt
1view_item_listHotelinventarislijst of raster wordt geladen
2view_itemGast bekijkt een specifieke accommodatiepagina
3add_to_cartGast voegt een kamer toe aan de winkelwagen
4begin_checkoutCheckout-/betalingspagina wordt geladen
5add_payment_infoGast selecteert een betaalmethode
6loginGast logt in via SSO
7purchaseBoeking is bevestigd
8refundBoeking is geannuleerd

Wordt afgevuurd wanneer een hotelinventarislijst of raster wordt weergegeven.

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

Wordt afgevuurd wanneer een gast een specifieke accommodatie bekijkt.

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

Wordt afgevuurd wanneer een gast een kamer aan de winkelwagen toevoegt.

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

Wordt afgevuurd wanneer de checkout-/betalingspagina wordt geladen.

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

coupon is alleen aanwezig wanneer een kortingscode is toegepast.


Wordt afgevuurd wanneer de gast een betaalmethode selecteert of bevestigt.

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

payment_type wordt gevuld met het type betalingsacquirer. coupon is alleen aanwezig wanneer een kortingscode is toegepast.


Wordt afgevuurd wanneer een gast zich authenticieert via single sign-on.

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

Wordt afgevuurd wanneer een boeking is bevestigd.

{
"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 is de unieke boekingscontractidentificatie. coupon, shipping en tax zijn alleen aanwezig indien van toepassing.


Wordt afgevuurd wanneer een boeking wordt geannuleerd.

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

transaction_id komt overeen met het purchase event voor dezelfde boeking. coupon, shipping en tax zijn alleen aanwezig indien van toepassing.


Alle events die een items array bevatten, delen hetzelfde item-schema. Elke eigenschap is optioneel tenzij als verplicht gemarkeerd.

Deze velden worden native begrepen door GA4 en verschijnen in standaard ecommerce-rapporten zonder extra configuratie.

EigenschapTypeVerplichtBeschrijving
item_idstringJaUnieke identificatie voor de kamer of het product
item_namestringNaam van de kamer of het product
affiliationstringAffiliate- of verkopersnaam
couponstringToegepaste kortingscode op het item
currencystringISO 4217 valutacode (bijv. USD)
creative_namestringCreatieve naam gebruikt in een promotie
creative_slotstringPositie van de promotiecreatie
discountnumberToegepaste korting
indexnumberPositie in de lijst (1-gebaseerd)
item_brandstringHotel- of merknaam
item_categorystringProducttype — bijv. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA
item_list_idstringIdentificatie van de lijst waartoe dit item behoort
item_list_namestringWeergavenaam van de lijst
location_idstringGeografische coördinaten van de accommodatie
pricenumberEenheidsprijs
promotion_idstringIdentificatie van de promotie
promotion_namestringWeergavenaam van de promotie
quantitynumberAantal (standaard 1)

Deze parameters bevatten Wink-specifieke boekingscontext. GA4 toont ze niet automatisch in rapporten — u moet elk van deze registreren als een item-scoped custom dimension in uw GA4-property voordat ze verschijnen in exploraties of standaardrapporten. Zie Aangepaste dimensies in GA4 hieronder voor instructies.

EigenschapTypeBeschrijving
property_idstringWink accommodatie-identificatie
property_namestringWeergavenaam van de accommodatie
property_brandstringMerk waartoe de accommodatie behoort
property_chainstringKetens waartoe de accommodatie behoort
property_url_namestringURL-vriendelijke slug voor de accommodatie
city_namestringStad waar de accommodatie zich bevindt
country_codestringISO 3166-1 alpha-2 landcode
start_datestringIncheckdatum in YYYY-MM-DD formaat
end_datestringUitcheckdatum in YYYY-MM-DD formaat
num_adultsnumberAantal volwassenen in de boeking
num_childrennumberAantal kinderen in de boeking
cancellation_policystringEén van: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions
rate_plan_idstringIdentificatie van het tariefplan
room_rate_idstringIdentificatie van het specifieke kamertarief
room_rate_namestringWeergavenaam van het kamertarief
num_perksnumberAantal extra’s inbegrepen bij het tarief
room_locationstringLocatiebeschrijving van de kamer (bijv. Overwater, Garden)
room_viewstringUitzichtbeschrijving van de kamer (bijv. Ocean, City)
room_classificationstringKamerclassificatie of -niveau (bijv. Suite, Standard)
bed_typestringBedconfiguratie van de kamer (bijv. King, Twin)

GA4 negeert aangepaste itemparameters in rapporten totdat u ze expliciet registreert als item-scoped custom dimensions. U hoeft alleen de parameters te registreren die u in rapporten wilt gebruiken — niet alle 20.

  1. Open Custom Definitions

    Ga in GA4 naar Beheer (tandwiel-icoon linksonder) → selecteer uw property → DataweergaveAangepaste definities.

  2. Maak een nieuwe aangepaste dimensie

    Klik op Aangepaste dimensies maken.

  3. Vul de dimensiedetails in

    • Dimensienaam — de leesbare naam die in GA4-rapporten verschijnt (zie onderstaande tabel)
    • Scope — selecteer Item
    • Eventparameter — de exacte parameternaam zoals die in de dataLayer verschijnt (zie tabel)
    • Beschrijving — optioneel maar aanbevolen
  4. Opslaan en herhalen

    Klik op Opslaan en herhaal dit voor elke parameter die u wilt volgen.

Gebruik onderstaande tabel als referentie bij het aanmaken van aangepaste dimensies. De waarde van Eventparameter moet exact overeenkomen — GA4 is hoofdlettergevoelig.

DimensienaamEventparameterType
Property IDproperty_idTekst
Property naamproperty_nameTekst
Property merkproperty_brandTekst
Property ketenproperty_chainTekst
Property URL-naamproperty_url_nameTekst
Stadnaamcity_nameTekst
Landcodecountry_codeTekst
Incheckdatumstart_dateTekst
Uitcheckdatumend_dateTekst
Aantal volwassenennum_adultsNummer
Aantal kinderennum_childrenNummer
Annuleringsbeleidcancellation_policyTekst
Tariefplan IDrate_plan_idTekst
Kamertarief IDroom_rate_idTekst
Kamertarief naamroom_rate_nameTekst
Aantal extra’snum_perksNummer
Kamerlocatieroom_locationTekst
Kameruitzichtroom_viewTekst
Kamerclassificatieroom_classificationTekst
Bedtypebed_typeTekst

De volgende events zijn beschikbaar in de Wink dataLayer maar maken geen deel uit van de standaard boekingsfunnel. Ze kunnen worden afgevuurd door andere interacties op het platform.

{
"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"
}

Er wordt geen ecommerce payload meegeleverd met dit event.

{
"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": {}
}

Dit is een aangepast Wink-event — geen onderdeel van de standaard GA4-eventset. Het wordt gepusht bij elke paginanavigatie en bevat apparaat- en sessiecontext. Het bevat geen ecommerce object.

{
"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"
}
EigenschapBeschrijving
deviceGedetecteerd apparaattype — Desktop, Android, iPhone, iPad of vergelijkbaar
deviceAgentRaw user agent string
osGedetecteerd besturingssysteem — Windows, MacOS, Linux, UNIX
pathHuidige paginapad
titleHuidige paginatitel
userIdGeauthentificeerde gebruikersidentificatie (weggelaten als niet ingelogd)
startDateIncheckdatum van de huidige zoeksessie
endDateUitcheckdatum van de huidige zoeksessie
guestsAantal gasten van de huidige zoeksessie
roomsAantal kamers van de huidige zoeksessie