Integrazione GTM Analytics
Puoi collegare qualsiasi contenitore Google Tag Manager (GTM) a Wink inserendo il suo ID contenitore GTM nel portale Wink. Una volta collegato, il tuo contenitore si carica automaticamente per la tua struttura e legge direttamente gli eventi di prenotazione di Wink — coprendo l’intero percorso dell’ospite dalla ricerca fino alla prenotazione completata. Un caso d’uso comune è un contenitore Sojern per retargeting e pubblicità, ma qualsiasi contenitore GTM funziona allo stesso modo.
Cosa Devi Fare
Sezione intitolata “Cosa Devi Fare”-
Ottieni il tuo ID contenitore GTM
Ottieni il tuo ID contenitore GTM (formato
GTM-XXXXXXX). Se proviene da un partner come Sojern, richiedi specificamente l’ID contenitore GTM — è diverso da un pixel o un ID tag. -
Inseriscilo nel portale Wink
Accedi a app.wink.travel, seleziona il tuo account e vai alla scheda Personalizzazioni. Incolla il tuo ID contenitore GTM nel campo GTM e salva. La tua integrazione è ora attiva.
-
(Opzionale) Aggiungi un ID di misurazione GA4 + segreto API per l’acquisto lato server
I contenitori GTM funzionano interamente nel browser dell’ospite, quindi una prenotazione completata può essere persa se l’ospite chiude la scheda durante il reindirizzamento al pagamento. Se il tuo contenitore carica una proprietà GA4 e vuoi che le prenotazioni completate vengano registrate in modo affidabile, inserisci anche l’ID di misurazione e il segreto API del protocollo di misurazione di quella GA4 nella sezione GTM. Wink invierà quindi l’evento
purchaseper quella proprietà lato server, esattamente come descritto nella guida Integrazione GA4 Analytics. Lasciali vuoti se ti serve solo il tracciamento in-browser. -
Conferma con il tuo fornitore
Se il tuo contenitore proviene da un partner come Sojern, informa il tuo account manager che l’integrazione è attiva. Potranno verificare dal loro lato che i tag si attivano correttamente su
wink.travelper la tua struttura e che i dati fluiscono nel tuo account.
Cosa Fa Wink dal Nostro Lato
Sezione intitolata “Cosa Fa Wink dal Nostro Lato”Per trasparenza, ecco cosa configura Wink per far funzionare questa integrazione:
- Un campo ID contenitore GTM è disponibile nella scheda Personalizzazioni del tuo portale Wink. Quando inserisci il tuo ID contenitore, Wink ne verifica il formato (
GTM-XXXXXXX) e lo memorizza in modo sicuro associato alla tua struttura. - Su ogni pagina dove la tua struttura è attiva su Wink, il tuo contenitore viene iniettato direttamente nella pagina — condividendo il
window.dataLayerdi Wink — così si carica insieme al contenitore di Wink senza dipendere da configurazioni aggiuntive. Questo avviene automaticamente, senza lavoro per struttura da parte del team Wink. - Il tuo contenitore viene caricato in modo asincrono, quindi non influisce sulle prestazioni di caricamento della pagina per i tuoi ospiti.
- Il tracciamento di Wink e il tuo contenitore funzionano in parallelo, leggendo dallo stesso
dataLayercondiviso. Ogni evento di prenotazione tracciato da Wink è simultaneamente disponibile al tuo contenitore. - Quando la tua struttura non è visualizzata — ad esempio, quando un ospite sta navigando un altro hotel su Wink — il tuo contenitore non viene caricato, quindi riceve solo dati rilevanti per la tua struttura.
- Se hai fornito un ID di misurazione GA4 + segreto API (passo 3 sopra), l’evento
purchaseper le prenotazioni completate viene inviato anche lato server tramite il protocollo di misurazione GA4, così una vendita viene registrata anche se l’ospite non torna mai alla pagina di conferma.
Riferimento DataLayer
Sezione intitolata “Riferimento DataLayer”Wink invia eventi compatibili GA4 al dataLayer durante tutto il percorso dell’ospite. Il tuo contenitore GTM legge dallo stesso dataLayer condiviso, quindi qualsiasi trigger o variabile che configuri ha accesso a tutte le proprietà descritte di seguito.
Ogni evento segue la struttura standard GA4 Enhanced Ecommerce: una stringa event di primo livello e un oggetto ecommerce. Prima di ogni push, Wink cancella il payload ecommerce precedente per evitare che dati obsoleti influenzino nuovi trigger.
Eventi del Percorso di Prenotazione
Sezione intitolata “Eventi del Percorso di Prenotazione”Questi eventi si attivano automaticamente mentre un ospite procede nel funnel di prenotazione. Configura i tuoi trigger GTM come trigger Evento personalizzato corrispondenti ai nomi evento qui sotto.
| Passo | Evento | Quando si attiva |
|---|---|---|
| 1 | view_item_list | Caricamento griglia o lista inventario hotel |
| 2 | view_item | L’ospite visualizza una pagina specifica della struttura |
| 3 | add_to_cart | L’ospite aggiunge una camera al carrello |
| 4 | begin_checkout | Caricamento pagina checkout / pagamento |
| 5 | add_payment_info | L’ospite seleziona un metodo di pagamento |
| 6 | login | L’ospite si autentica tramite SSO |
| 7 | purchase | La prenotazione è confermata |
| 8 | refund | La prenotazione è cancellata |
view_item_list
Sezione intitolata “view_item_list”Si attiva quando viene visualizzata una griglia o lista inventario hotel.
{ "event": "view_item_list", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_item
Sezione intitolata “view_item”Si attiva quando un ospite visualizza una struttura specifica.
{ "event": "view_item", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}add_to_cart
Sezione intitolata “add_to_cart”Si attiva quando un ospite aggiunge una camera al carrello.
{ "event": "add_to_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}begin_checkout
Sezione intitolata “begin_checkout”Si attiva quando si carica la pagina checkout / pagamento.
{ "event": "begin_checkout", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "items": [ ] }}coupon è presente solo quando è stato applicato un codice sconto.
add_payment_info
Sezione intitolata “add_payment_info”Si attiva quando l’ospite seleziona o conferma un metodo di pagamento.
{ "event": "add_payment_info", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "payment_type": "STRIPE", "items": [ ] }}payment_type è popolato dal tipo di acquirente di pagamento. coupon è presente solo quando è stato applicato un codice sconto.
Si attiva quando un ospite si autentica tramite single sign-on.
{ "event": "login", "ecommerce": { "method": "IAM" }}purchase
Sezione intitolata “purchase”Si attiva quando una prenotazione è confermata.
{ "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 è l’identificatore univoco del contratto di prenotazione. coupon, shipping e tax sono presenti solo se applicabili.
Si attiva quando una prenotazione è cancellata.
{ "event": "refund", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ ] }}transaction_id corrisponde all’evento purchase della stessa prenotazione. coupon, shipping e tax sono presenti solo se applicabili.
Proprietà degli Articoli
Sezione intitolata “Proprietà degli Articoli”Tutti gli eventi che includono un array items condividono lo stesso schema per gli articoli. Ogni proprietà è opzionale a meno che non sia indicata come obbligatoria.
Campi standard GA4
Sezione intitolata “Campi standard GA4”Questi campi sono nativamente riconosciuti da GA4 e appaiono nei report ecommerce standard senza configurazioni aggiuntive.
| Proprietà | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
item_id | stringa | Sì | Identificatore univoco per la camera o prodotto |
item_name | stringa | — | Nome della camera o prodotto |
affiliation | stringa | — | Nome affiliato o venditore |
coupon | stringa | — | Codice coupon applicato all’articolo |
currency | stringa | — | Codice valuta ISO 4217 (es. USD) |
creative_name | stringa | — | Nome creativo usato in una promozione |
creative_slot | stringa | — | Posizione dello slot della creatività promozionale |
discount | numero | — | Importo sconto applicato |
index | numero | — | Posizione nella lista (base 1) |
item_brand | stringa | — | Nome hotel o brand |
item_category | stringa | — | Tipo di prodotto — es. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA |
item_list_id | stringa | — | Identificatore della lista a cui l’articolo appartiene |
item_list_name | stringa | — | Nome visualizzato della lista |
location_id | stringa | — | Coordinate geografiche della struttura |
price | numero | — | Prezzo unitario |
promotion_id | stringa | — | Identificatore della promozione |
promotion_name | stringa | — | Nome visualizzato della promozione |
quantity | numero | — | Quantità (default 1) |
Parametri personalizzati a livello articolo
Sezione intitolata “Parametri personalizzati a livello articolo”Questi parametri contengono il contesto di prenotazione specifico di Wink. GA4 non li mostra automaticamente nei report — devi registrarli come dimensioni personalizzate a livello articolo nella tua proprietà GA4 prima che appaiano in esplorazioni o report standard. Vedi Dimensioni personalizzate in GA4 sotto per le istruzioni.
| Proprietà | Tipo | Descrizione |
|---|---|---|
property_id | stringa | Identificatore struttura Wink |
property_name | stringa | Nome visualizzato della struttura |
property_brand | stringa | Brand a cui appartiene la struttura |
property_chain | stringa | Catena a cui appartiene la struttura |
property_url_name | stringa | Slug URL-friendly della struttura |
city_name | stringa | Città in cui si trova la struttura |
country_code | stringa | Codice paese ISO 3166-1 alpha-2 |
start_date | stringa | Data check-in in formato YYYY-MM-DD |
end_date | stringa | Data check-out in formato YYYY-MM-DD |
num_adults | numero | Numero di adulti nella prenotazione |
num_children | numero | Numero di bambini nella prenotazione |
cancellation_policy | stringa | Uno tra: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions |
rate_plan_id | stringa | Identificatore del piano tariffario |
room_rate_id | stringa | Identificatore della tariffa specifica della camera |
room_rate_name | stringa | Nome visualizzato della tariffa camera |
num_perks | numero | Numero di vantaggi inclusi con la tariffa |
room_location | stringa | Descrizione della posizione della camera (es. Overwater, Garden) |
room_view | stringa | Descrizione della vista della camera (es. Ocean, City) |
room_classification | stringa | Classificazione o categoria della camera (es. Suite, Standard) |
bed_type | stringa | Configurazione del letto della camera (es. King, Twin) |
Dimensioni Personalizzate in GA4
Sezione intitolata “Dimensioni Personalizzate in GA4”GA4 ignora i parametri personalizzati a livello articolo nei report finché non li registri esplicitamente come dimensioni personalizzate a livello articolo. Devi registrare solo i parametri che intendi usare nei report — non è necessario registrarli tutti e 20.
-
Apri Definizioni Personalizzate
In GA4, vai su Amministrazione (icona ingranaggio in basso a sinistra) → seleziona la tua proprietà → Visualizzazione dati → Definizioni personalizzate.
-
Crea una nuova dimensione personalizzata
Clicca su Crea dimensioni personalizzate.
-
Compila i dettagli della dimensione
- Nome dimensione — etichetta leggibile che appare nei report GA4 (vedi tabella sotto)
- Ambito — seleziona Articolo
- Parametro evento — il nome esatto del parametro come appare nel dataLayer (vedi tabella sotto)
- Descrizione — opzionale ma consigliata
-
Salva e ripeti
Clicca su Salva, poi ripeti per ogni parametro che vuoi tracciare.
Usa la tabella seguente come riferimento per creare le dimensioni personalizzate. Il valore Parametro evento deve corrispondere esattamente — GA4 fa distinzione tra maiuscole e minuscole.
| Nome dimensione | Parametro evento | Tipo |
|---|---|---|
| ID struttura | property_id | Testo |
| Nome struttura | property_name | Testo |
| Brand struttura | property_brand | Testo |
| Catena struttura | property_chain | Testo |
| Nome URL struttura | property_url_name | Testo |
| Nome città | city_name | Testo |
| Codice paese | country_code | Testo |
| Data check-in | start_date | Testo |
| Data check-out | end_date | Testo |
| Numero adulti | num_adults | Numero |
| Numero bambini | num_children | Numero |
| Politica di cancellazione | cancellation_policy | Testo |
| ID piano tariffario | rate_plan_id | Testo |
| ID tariffa camera | room_rate_id | Testo |
| Nome tariffa camera | room_rate_name | Testo |
| Numero vantaggi | num_perks | Numero |
| Posizione camera | room_location | Testo |
| Vista camera | room_view | Testo |
| Classificazione camera | room_classification | Testo |
| Tipo letto | bed_type | Testo |
Eventi Aggiuntivi Disponibili
Sezione intitolata “Eventi Aggiuntivi Disponibili”I seguenti eventi sono disponibili nel dataLayer di Wink ma non fanno parte del funnel standard di prenotazione. Possono essere attivati da altre interazioni sulla piattaforma.
add_to_wishlist
Sezione intitolata “add_to_wishlist”{ "event": "add_to_wishlist", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}remove_from_cart
Sezione intitolata “remove_from_cart”{ "event": "remove_from_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}select_item
Sezione intitolata “select_item”{ "event": "select_item", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_cart
Sezione intitolata “view_cart”{ "event": "view_cart"}Nessun payload ecommerce è incluso con questo evento.
view_promotion
Sezione intitolata “view_promotion”{ "event": "view_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}select_promotion
Sezione intitolata “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
Sezione intitolata “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
Sezione intitolata “sign_up”{ "event": "sign_up", "ecommerce": { "method": "email" }}generate_lead
Sezione intitolata “generate_lead”{ "event": "generate_lead", "ecommerce": { "currency": "USD", "value": 0.00 }}join_group
Sezione intitolata “join_group”{ "event": "join_group", "ecommerce": { "group_id": "group_abc" }}earn_virtual_currency
Sezione intitolata “earn_virtual_currency”{ "event": "earn_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 100 }}spend_virtual_currency
Sezione intitolata “spend_virtual_currency”{ "event": "spend_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 50, "item_name": "Room Upgrade" }}level_start
Sezione intitolata “level_start”{ "event": "level_start", "ecommerce": { "level_name": "Gold" }}level_end
Sezione intitolata “level_end”{ "event": "level_end", "ecommerce": { "level_name": "Gold", "success": true }}level_up
Sezione intitolata “level_up”{ "event": "level_up", "ecommerce": { "level": 2, "character": "traveler" }}post_score
Sezione intitolata “post_score”{ "event": "post_score", "ecommerce": { "score": 980, "level": 2, "character": "traveler" }}unlock_achievement
Sezione intitolata “unlock_achievement”{ "event": "unlock_achievement", "ecommerce": { "achievement_id": "first_booking" }}tutorial_begin
Sezione intitolata “tutorial_begin”{ "event": "tutorial_begin", "ecommerce": {}}tutorial_complete
Sezione intitolata “tutorial_complete”{ "event": "tutorial_complete", "ecommerce": {}}virtualPageView
Sezione intitolata “virtualPageView”Questo è un evento personalizzato Wink — non fa parte del set standard di eventi GA4. Viene inviato ad ogni navigazione di pagina e contiene il contesto dispositivo e sessione. Non include un oggetto 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"}| Proprietà | Descrizione |
|---|---|
device | Tipo di dispositivo rilevato — Desktop, Android, iPhone, iPad o simili |
deviceAgent | Stringa raw user agent |
os | Sistema operativo rilevato — Windows, MacOS, Linux, UNIX |
path | Percorso pagina corrente |
title | Titolo pagina corrente |
userId | Identificatore utente autenticato (omesso se non loggato) |
startDate | Data check-in dalla sessione di ricerca corrente |
endDate | Data check-out dalla sessione di ricerca corrente |
guests | Numero di ospiti dalla sessione di ricerca corrente |
rooms | Numero di camere dalla sessione di ricerca corrente |
