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 dekt de volledige gastreis af 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 ga naar het tabblad Aanpassingen. Plak uw GTM Container ID in het veld GTM en sla op. Uw integratie is nu actief.

  3. (Optioneel) Voeg een GA4 Measurement ID + API Secret toe voor Server-Side Aankopen

    GTM-containers draaien volledig in de browser van de gast, dus een voltooide boeking kan gemist worden als de gast het tabblad sluit tijdens de betalingsomleiding. Als uw container een GA4-property laadt en u wilt dat voltooide boekingen betrouwbaar worden geregistreerd, voer dan ook de Measurement ID en Measurement Protocol API secret van die GA4 in bij de GTM-sectie. Wink stuurt dan de purchase voor die property server-side, precies zoals beschreven in de GA4 Analytics-integratie handleiding. Laat deze velden leeg als u alleen tracking in de browser nodig heeft.

  4. 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 data in uw account binnenkomt.


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

  • Een GTM Container ID-veld is beschikbaar in het tabblad Aanpassingen van uw Wink-portaal. 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 deze samen met Wink’s eigen container laadt zonder afhankelijkheid van extra configuratie. Dit gebeurt automatisch, zonder dat het Wink-team per accommodatie iets hoeft te doen.
  • Uw container wordt asynchroon geladen, zodat dit de laadsnelheid van de pagina 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 als een gast een ander hotel op Wink bekijkt — wordt uw container niet geladen, zodat deze alleen data ontvangt die relevant is voor uw accommodatie.
  • Als u een GA4 Measurement ID + API secret heeft opgegeven (stap 3 hierboven), wordt de purchase voor voltooide boekingen ook server-side verzonden via het GA4 Measurement Protocol, zodat een verkoop wordt geregistreerd, zelfs als de gast nooit terugkeert naar de bevestigingspagina.

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 afgevuurd wordt
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 / betaalpagina wordt geladen
5add_payment_infoGast selecteert een betaalmethode
6loginGast logt in via SSO
7purchaseBoekingsbevestiging
8refundBoekingsannulering

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 / betaalpagina 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 betaalacquirer. 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 item-parameters 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 de volgende tabel als referentie bij het aanmaken van aangepaste dimensies. De waarde van Eventparameter moet exact overeenkomen — GA4 is hoofdlettergevoelig.

DimensienaamEventparameterType
Accommodatie-IDproperty_idTekst
Accommodatienaamproperty_nameTekst
Accommodatiemerkproperty_brandTekst
Accommodatieketenproperty_chainTekst
Accommodatie 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
Kamertariefnaamroom_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"
}

Bij dit event wordt geen ecommerce payload meegegeven.

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