Aller au contenu

Intégration GTM Analytics

Vous pouvez connecter n’importe quel conteneur Google Tag Manager (GTM) à Wink en saisissant son ID de conteneur GTM dans le portail Wink. Une fois connecté, votre conteneur se charge automatiquement pour votre établissement et lit directement les événements de réservation de Wink — couvrant l’intégralité du parcours client, de la recherche à la réservation finalisée. Un cas d’usage courant est un conteneur Sojern pour le retargeting et la publicité, mais tout conteneur GTM fonctionne de la même manière.


  1. Obtenez votre ID de conteneur GTM

    Obtenez votre ID de conteneur GTM (format GTM-XXXXXXX). S’il provient d’un partenaire comme Sojern, demandez spécifiquement l’ID de conteneur GTM — il est différent d’un pixel ou d’un ID de tag.

  2. Saisissez-le dans le portail Wink

    Connectez-vous à app.wink.travel, sélectionnez votre compte, puis allez dans l’onglet Personnalisations. Collez votre ID de conteneur GTM dans le champ GTM et enregistrez. Votre intégration est maintenant active.

  3. (Optionnel) Ajoutez un ID de mesure GA4 + un secret API pour l’achat côté serveur

    Les conteneurs GTM s’exécutent entièrement dans le navigateur du client, donc une réservation finalisée peut être manquée si le client ferme l’onglet pendant la redirection de paiement. Si votre conteneur charge une propriété GA4 et que vous souhaitez que les réservations finalisées soient enregistrées de manière fiable, saisissez également l’ID de mesure et le secret API du protocole de mesure GA4 dans la section GTM. Wink enverra alors l’événement purchase pour cette propriété côté serveur, exactement comme décrit dans le guide Intégration GA4 Analytics. Laissez ces champs vides si vous avez seulement besoin du suivi dans le navigateur.

  4. Confirmez avec votre fournisseur

    Si votre conteneur provient d’un partenaire comme Sojern, informez votre responsable de compte que l’intégration est active. Il pourra vérifier de son côté que les tags se déclenchent correctement sur wink.travel pour votre établissement et que les données remontent bien dans votre compte.


Pour plus de transparence, voici ce que Wink configure pour que cette intégration fonctionne :

  • Un champ ID de conteneur GTM est disponible dans l’onglet Personnalisations de votre portail Wink. Lorsque vous saisissez votre ID de conteneur, Wink valide le format (GTM-XXXXXXX) et le stocke de manière sécurisée pour votre établissement.
  • Sur chaque page où votre établissement est actif sur Wink, votre conteneur est injecté directement dans la page — partageant le window.dataLayer propre à Wink — il se charge donc en parallèle du conteneur Wink sans dépendre d’aucune configuration supplémentaire. Cela se fait automatiquement, sans travail spécifique par établissement de la part de l’équipe Wink.
  • Votre conteneur est chargé de manière asynchrone, ce qui n’affecte pas les performances de chargement des pages pour vos clients.
  • Le suivi Wink et votre conteneur fonctionnent en parallèle, lisant depuis le même dataLayer partagé. Chaque événement de réservation suivi par Wink est simultanément disponible pour votre conteneur.
  • Lorsque votre établissement n’est pas consulté — par exemple, lorsqu’un client navigue sur un autre hôtel sur Wink — votre conteneur n’est pas chargé, il ne reçoit donc que les données pertinentes à votre établissement.
  • Si vous avez fourni un ID de mesure GA4 + un secret API (étape 3 ci-dessus), l’événement purchase des réservations finalisées est également envoyé côté serveur via le protocole de mesure GA4, garantissant qu’une vente est enregistrée même si le client ne revient jamais sur la page de confirmation.

Wink pousse des événements compatibles GA4 dans le dataLayer tout au long du parcours client. Votre conteneur GTM lit ce même dataLayer partagé, donc tout déclencheur ou variable que vous configurez a accès à toutes les propriétés décrites ci-dessous.

Chaque événement suit la structure standard GA4 Enhanced Ecommerce : une chaîne event au niveau supérieur et un objet ecommerce. Avant chaque push, Wink vide la charge utile ecommerce précédente pour éviter que des données obsolètes ne polluent les nouveaux déclencheurs.


Ces événements se déclenchent automatiquement au fur et à mesure que le client progresse dans l’entonnoir de réservation. Configurez vos déclencheurs GTM en tant que déclencheurs Événement personnalisé correspondant aux noms d’événements ci-dessous.

ÉtapeÉvénementMoment du déclenchement
1view_item_listChargement de la grille ou liste d’inventaire hôtelier
2view_itemLe client consulte une page d’établissement spécifique
3add_to_cartLe client ajoute une chambre au panier
4begin_checkoutChargement de la page de paiement / commande
5add_payment_infoLe client sélectionne un moyen de paiement
6loginLe client s’authentifie via SSO
7purchaseLa réservation est confirmée
8refundLa réservation est annulée

Se déclenche lors du rendu d’une grille ou liste d’inventaire hôtelier.

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

Se déclenche lorsqu’un client consulte un établissement spécifique.

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

Se déclenche lorsqu’un client ajoute une chambre à son panier.

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

Se déclenche lors du chargement de la page de paiement / commande.

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

coupon est présent uniquement lorsqu’un code de réduction a été appliqué.


Se déclenche lorsque le client sélectionne ou confirme un moyen de paiement.

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

payment_type est renseigné à partir du type d’acquéreur de paiement. coupon est présent uniquement lorsqu’un code de réduction a été appliqué.


Se déclenche lorsqu’un client s’authentifie via une authentification unique (SSO).

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

Se déclenche lorsqu’une réservation est confirmée.

{
"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 est l’identifiant unique du contrat de réservation. coupon, shipping et tax sont présents uniquement lorsqu’ils s’appliquent.


Se déclenche lorsqu’une réservation est annulée.

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

transaction_id correspond à l’événement purchase de la même réservation. coupon, shipping et tax sont présents uniquement lorsqu’ils s’appliquent.


Tous les événements qui incluent un tableau items partagent le même schéma d’article. Chaque propriété est optionnelle sauf indication contraire.

Ces champs sont nativement reconnus par GA4 et apparaissent dans les rapports ecommerce standards sans configuration supplémentaire.

PropriétéTypeObligatoireDescription
item_idstringOuiIdentifiant unique de la chambre ou du produit
item_namestringNom de la chambre ou du produit
affiliationstringNom de l’affilié ou du vendeur
couponstringCode coupon appliqué à l’article
currencystringCode devise ISO 4217 (ex. USD)
creative_namestringNom créatif utilisé dans une promotion
creative_slotstringPosition du slot de la promotion
discountnumberMontant de la remise appliquée
indexnumberPosition dans la liste (base 1)
item_brandstringNom de l’hôtel ou de la marque
item_categorystringType de produit — ex. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA
item_list_idstringIdentifiant de la liste à laquelle appartient l’article
item_list_namestringNom affiché de la liste
location_idstringCoordonnées géographiques de l’établissement
pricenumberPrix unitaire
promotion_idstringIdentifiant de la promotion
promotion_namestringNom affiché de la promotion
quantitynumberQuantité (par défaut 1)

Ces paramètres portent le contexte spécifique à la réservation Wink. GA4 ne les affiche pas automatiquement dans les rapports — vous devez enregistrer chacun comme dimension personnalisée au niveau article dans votre propriété GA4 avant qu’ils n’apparaissent dans les explorations ou rapports standards. Voir Dimensions personnalisées dans GA4 ci-dessous pour les instructions.

PropriétéTypeDescription
property_idstringIdentifiant de l’établissement Wink
property_namestringNom affiché de l’établissement
property_brandstringMarque à laquelle appartient l’établissement
property_chainstringChaîne à laquelle appartient l’établissement
property_url_namestringSlug URL-friendly de l’établissement
city_namestringVille où se situe l’établissement
country_codestringCode pays ISO 3166-1 alpha-2
start_datestringDate d’arrivée au format YYYY-MM-DD
end_datestringDate de départ au format YYYY-MM-DD
num_adultsnumberNombre d’adultes dans la réservation
num_childrennumberNombre d’enfants dans la réservation
cancellation_policystringL’une des valeurs : Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions
rate_plan_idstringIdentifiant du plan tarifaire
room_rate_idstringIdentifiant du tarif spécifique de la chambre
room_rate_namestringNom affiché du tarif de la chambre
num_perksnumberNombre d’avantages inclus avec le tarif
room_locationstringDescription de l’emplacement de la chambre (ex. Overwater, Garden)
room_viewstringDescription de la vue de la chambre (ex. Ocean, City)
room_classificationstringClassification ou catégorie de la chambre (ex. Suite, Standard)
bed_typestringConfiguration du lit dans la chambre (ex. King, Twin)

GA4 ignore les paramètres personnalisés au niveau article dans les rapports tant que vous ne les avez pas explicitement enregistrés comme dimensions personnalisées au niveau article. Vous n’avez besoin d’enregistrer que les paramètres que vous souhaitez utiliser dans les rapports — pas la totalité des 20.

  1. Ouvrez les définitions personnalisées

    Dans GA4, allez dans Admin (icône roue dentée en bas à gauche) → sélectionnez votre propriété → Affichage des donnéesDéfinitions personnalisées.

  2. Créez une nouvelle dimension personnalisée

    Cliquez sur Créer une dimension personnalisée.

  3. Remplissez les détails de la dimension

    • Nom de la dimension — le libellé lisible qui apparaîtra dans les rapports GA4 (voir tableau ci-dessous)
    • Portée — sélectionnez Article
    • Paramètre d’événement — le nom exact du paramètre tel qu’il apparaît dans le dataLayer (voir tableau ci-dessous)
    • Description — optionnelle mais recommandée
  4. Enregistrez et répétez

    Cliquez sur Enregistrer, puis répétez pour chaque paramètre que vous souhaitez suivre.

Utilisez le tableau suivant comme référence lors de la création des dimensions personnalisées. La valeur Paramètre d’événement doit correspondre exactement — GA4 est sensible à la casse.

Nom de la dimensionParamètre d’événementType
ID de l’établissementproperty_idTexte
Nom de l’établissementproperty_nameTexte
Marque de l’établissementproperty_brandTexte
Chaîne de l’établissementproperty_chainTexte
Nom URL de l’établissementproperty_url_nameTexte
Nom de la villecity_nameTexte
Code payscountry_codeTexte
Date d’arrivéestart_dateTexte
Date de départend_dateTexte
Nombre d’adultesnum_adultsNombre
Nombre d’enfantsnum_childrenNombre
Politique d’annulationcancellation_policyTexte
ID du plan tarifairerate_plan_idTexte
ID du tarif de chambreroom_rate_idTexte
Nom du tarif de chambreroom_rate_nameTexte
Nombre d’avantagesnum_perksNombre
Emplacement de la chambreroom_locationTexte
Vue de la chambreroom_viewTexte
Classification de la chambreroom_classificationTexte
Type de litbed_typeTexte

Les événements suivants sont disponibles dans le dataLayer Wink mais ne font pas partie de l’entonnoir de réservation standard. Ils peuvent être déclenchés par d’autres interactions sur la plateforme.

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

Aucune charge utile ecommerce n’est incluse avec cet événement.

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

C’est un événement personnalisé Wink — il ne fait pas partie de la série d’événements standard GA4. Il est poussé à chaque navigation de page et porte le contexte appareil et session. Il n’inclut pas d’objet 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"
}
PropriétéDescription
deviceType d’appareil détecté — Desktop, Android, iPhone, iPad ou similaire
deviceAgentChaîne brute de l’agent utilisateur
osSystème d’exploitation détecté — Windows, MacOS, Linux, UNIX
pathChemin de la page actuelle
titleTitre de la page actuelle
userIdIdentifiant utilisateur authentifié (omission si non connecté)
startDateDate d’arrivée de la session de recherche en cours
endDateDate de départ de la session de recherche en cours
guestsNombre de clients de la session de recherche en cours
roomsNombre de chambres de la session de recherche en cours