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.
Ce que vous devez faire
Section intitulée « Ce que vous devez faire »-
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. -
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.
-
(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
purchasepour 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. -
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.travelpour votre établissement et que les données remontent bien dans votre compte.
Ce que Wink fait de son côté
Section intitulée « Ce que Wink fait de son côté »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.dataLayerpropre à 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
dataLayerpartagé. 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
purchasedes 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.
Référence DataLayer
Section intitulée « Référence DataLayer »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.
Événements du parcours de réservation
Section intitulée « Événements du parcours de réservation »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énement | Moment du déclenchement |
|---|---|---|
| 1 | view_item_list | Chargement de la grille ou liste d’inventaire hôtelier |
| 2 | view_item | Le client consulte une page d’établissement spécifique |
| 3 | add_to_cart | Le client ajoute une chambre au panier |
| 4 | begin_checkout | Chargement de la page de paiement / commande |
| 5 | add_payment_info | Le client sélectionne un moyen de paiement |
| 6 | login | Le client s’authentifie via SSO |
| 7 | purchase | La réservation est confirmée |
| 8 | refund | La réservation est annulée |
view_item_list
Section intitulée « view_item_list »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": [ ] }}view_item
Section intitulée « view_item »Se déclenche lorsqu’un client consulte un établissement spécifique.
{ "event": "view_item", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}add_to_cart
Section intitulée « add_to_cart »Se déclenche lorsqu’un client ajoute une chambre à son panier.
{ "event": "add_to_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}begin_checkout
Section intitulée « begin_checkout »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é.
add_payment_info
Section intitulée « add_payment_info »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" }}purchase
Section intitulée « purchase »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.
Propriétés des articles
Section intitulée « Propriétés des articles »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.
Champs standard GA4
Section intitulée « Champs standard GA4 »Ces champs sont nativement reconnus par GA4 et apparaissent dans les rapports ecommerce standards sans configuration supplémentaire.
| Propriété | Type | Obligatoire | Description |
|---|---|---|---|
item_id | string | Oui | Identifiant unique de la chambre ou du produit |
item_name | string | — | Nom de la chambre ou du produit |
affiliation | string | — | Nom de l’affilié ou du vendeur |
coupon | string | — | Code coupon appliqué à l’article |
currency | string | — | Code devise ISO 4217 (ex. USD) |
creative_name | string | — | Nom créatif utilisé dans une promotion |
creative_slot | string | — | Position du slot de la promotion |
discount | number | — | Montant de la remise appliquée |
index | number | — | Position dans la liste (base 1) |
item_brand | string | — | Nom de l’hôtel ou de la marque |
item_category | string | — | Type de produit — ex. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA |
item_list_id | string | — | Identifiant de la liste à laquelle appartient l’article |
item_list_name | string | — | Nom affiché de la liste |
location_id | string | — | Coordonnées géographiques de l’établissement |
price | number | — | Prix unitaire |
promotion_id | string | — | Identifiant de la promotion |
promotion_name | string | — | Nom affiché de la promotion |
quantity | number | — | Quantité (par défaut 1) |
Paramètres personnalisés au niveau article
Section intitulée « Paramètres personnalisés au niveau article »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é | Type | Description |
|---|---|---|
property_id | string | Identifiant de l’établissement Wink |
property_name | string | Nom affiché de l’établissement |
property_brand | string | Marque à laquelle appartient l’établissement |
property_chain | string | Chaîne à laquelle appartient l’établissement |
property_url_name | string | Slug URL-friendly de l’établissement |
city_name | string | Ville où se situe l’établissement |
country_code | string | Code pays ISO 3166-1 alpha-2 |
start_date | string | Date d’arrivée au format YYYY-MM-DD |
end_date | string | Date de départ au format YYYY-MM-DD |
num_adults | number | Nombre d’adultes dans la réservation |
num_children | number | Nombre d’enfants dans la réservation |
cancellation_policy | string | L’une des valeurs : Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions |
rate_plan_id | string | Identifiant du plan tarifaire |
room_rate_id | string | Identifiant du tarif spécifique de la chambre |
room_rate_name | string | Nom affiché du tarif de la chambre |
num_perks | number | Nombre d’avantages inclus avec le tarif |
room_location | string | Description de l’emplacement de la chambre (ex. Overwater, Garden) |
room_view | string | Description de la vue de la chambre (ex. Ocean, City) |
room_classification | string | Classification ou catégorie de la chambre (ex. Suite, Standard) |
bed_type | string | Configuration du lit dans la chambre (ex. King, Twin) |
Dimensions personnalisées dans GA4
Section intitulée « Dimensions personnalisées dans GA4 »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.
-
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ées → Définitions personnalisées.
-
Créez une nouvelle dimension personnalisée
Cliquez sur Créer une dimension personnalisée.
-
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
-
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 dimension | Paramètre d’événement | Type |
|---|---|---|
| ID de l’établissement | property_id | Texte |
| Nom de l’établissement | property_name | Texte |
| Marque de l’établissement | property_brand | Texte |
| Chaîne de l’établissement | property_chain | Texte |
| Nom URL de l’établissement | property_url_name | Texte |
| Nom de la ville | city_name | Texte |
| Code pays | country_code | Texte |
| Date d’arrivée | start_date | Texte |
| Date de départ | end_date | Texte |
| Nombre d’adultes | num_adults | Nombre |
| Nombre d’enfants | num_children | Nombre |
| Politique d’annulation | cancellation_policy | Texte |
| ID du plan tarifaire | rate_plan_id | Texte |
| ID du tarif de chambre | room_rate_id | Texte |
| Nom du tarif de chambre | room_rate_name | Texte |
| Nombre d’avantages | num_perks | Nombre |
| Emplacement de la chambre | room_location | Texte |
| Vue de la chambre | room_view | Texte |
| Classification de la chambre | room_classification | Texte |
| Type de lit | bed_type | Texte |
Événements supplémentaires disponibles
Section intitulée « Événements supplémentaires disponibles »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.
add_to_wishlist
Section intitulée « add_to_wishlist »{ "event": "add_to_wishlist", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}remove_from_cart
Section intitulée « remove_from_cart »{ "event": "remove_from_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}select_item
Section intitulée « select_item »{ "event": "select_item", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_cart
Section intitulée « view_cart »{ "event": "view_cart"}Aucune charge utile ecommerce n’est incluse avec cet événement.
view_promotion
Section intitulée « view_promotion »{ "event": "view_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}select_promotion
Section intitulée « select_promotion »{ "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" }}select_content
Section intitulée « 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" }}{ "event": "sign_up", "ecommerce": { "method": "email" }}generate_lead
Section intitulée « generate_lead »{ "event": "generate_lead", "ecommerce": { "currency": "USD", "value": 0.00 }}join_group
Section intitulée « join_group »{ "event": "join_group", "ecommerce": { "group_id": "group_abc" }}earn_virtual_currency
Section intitulée « earn_virtual_currency »{ "event": "earn_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 100 }}spend_virtual_currency
Section intitulée « spend_virtual_currency »{ "event": "spend_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 50, "item_name": "Room Upgrade" }}level_start
Section intitulée « level_start »{ "event": "level_start", "ecommerce": { "level_name": "Gold" }}level_end
Section intitulée « level_end »{ "event": "level_end", "ecommerce": { "level_name": "Gold", "success": true }}level_up
Section intitulée « level_up »{ "event": "level_up", "ecommerce": { "level": 2, "character": "traveler" }}post_score
Section intitulée « post_score »{ "event": "post_score", "ecommerce": { "score": 980, "level": 2, "character": "traveler" }}unlock_achievement
Section intitulée « unlock_achievement »{ "event": "unlock_achievement", "ecommerce": { "achievement_id": "first_booking" }}tutorial_begin
Section intitulée « tutorial_begin »{ "event": "tutorial_begin", "ecommerce": {}}tutorial_complete
Section intitulée « tutorial_complete »{ "event": "tutorial_complete", "ecommerce": {}}virtualPageView
Section intitulée « virtualPageView »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 |
|---|---|
device | Type d’appareil détecté — Desktop, Android, iPhone, iPad ou similaire |
deviceAgent | Chaîne brute de l’agent utilisateur |
os | Système d’exploitation détecté — Windows, MacOS, Linux, UNIX |
path | Chemin de la page actuelle |
title | Titre de la page actuelle |
userId | Identifiant utilisateur authentifié (omission si non connecté) |
startDate | Date d’arrivée de la session de recherche en cours |
endDate | Date de départ de la session de recherche en cours |
guests | Nombre de clients de la session de recherche en cours |
rooms | Nombre de chambres de la session de recherche en cours |
