Integracja GTM Analytics
Możesz połączyć dowolny kontener Google Tag Manager (GTM) z Wink, wpisując jego ID kontenera GTM w portalu Wink. Po połączeniu kontener ładuje się automatycznie dla Twojej nieruchomości i odczytuje zdarzenia rezerwacji Wink bezpośrednio — obejmując pełną podróż gościa od wyszukiwania aż do zakończonej rezerwacji. Typowym zastosowaniem jest kontener Sojern do remarketingu i reklam, ale każdy kontener GTM działa tak samo.
Co musisz zrobić
Dział zatytułowany „Co musisz zrobić”-
Uzyskaj swoje ID kontenera GTM
Pozyskaj swoje ID kontenera GTM (format
GTM-XXXXXXX). Jeśli pochodzi od partnera takiego jak Sojern, poproś konkretnie o ID kontenera GTM — różni się ono od ID piksela lub taga. -
Wprowadź je w portalu Wink
Zaloguj się na app.wink.travel, wybierz swoje konto i otwórz ustawienia personalizacji. W sekcji Analytics & integrations wklej swoje ID kontenera GTM w pole GTM Container ID i zapisz. Twoja integracja jest teraz aktywna.
-
Potwierdź z dostawcą
Jeśli Twój kontener pochodzi od partnera takiego jak Sojern, poinformuj swojego opiekuna konta, że integracja jest aktywna. On może zweryfikować po swojej stronie, czy tagi poprawnie uruchamiają się na
wink.traveldla Twojej nieruchomości i czy dane płyną do Twojego konta.
Co Wink robi po swojej stronie
Dział zatytułowany „Co Wink robi po swojej stronie”Dla przejrzystości, oto co Wink konfiguruje, aby ta integracja działała:
- Pole ID kontenera GTM jest dostępne w sekcji Analytics & integrations w ustawieniach personalizacji. Po wpisaniu ID kontenera, Wink weryfikuje format (
GTM-XXXXXXX) i bezpiecznie przechowuje je przypisane do Twojej nieruchomości. - Na każdej stronie, gdzie Twoja nieruchomość jest aktywna na Wink, Twój kontener jest wstrzykiwany bezpośrednio do strony — współdzieląc własny
window.dataLayerWink — więc ładuje się równolegle z kontenerem Wink bez potrzeby dodatkowej konfiguracji. Dzieje się to automatycznie, bez pracy zespołu Wink dla każdej nieruchomości. - Twój kontener ładuje się asynchronicznie, więc nie wpływa na wydajność ładowania strony dla gości.
- Własne śledzenie Wink i Twój kontener działają równolegle, odczytując ten sam współdzielony
dataLayer. Każde zdarzenie rezerwacji śledzone przez Wink jest jednocześnie dostępne dla Twojego kontenera. - Gdy Twoja nieruchomość nie jest oglądana — np. gdy gość przegląda inny hotel na Wink — Twój kontener nie jest ładowany, więc otrzymuje tylko dane dotyczące Twojej nieruchomości.
- Zdarzenie zakończonej rezerwacji (
purchase) wyzwalane jest w przeglądarce na stronie podziękowania. ID kontenera GTM to czarna skrzynka — Wink nie zakłada, jakie tagi są w środku — więc Wink nigdy nie wywołuje Google w Twoim imieniu ze swoich serwerów. Zamiast tego, dowolny tag GA4 lub konwersji w Twoim kontenerze otrzymujepurchasepo stronie klienta, dokładnie tak jak każde inne zdarzenie rezerwacji. Ponieważ dostawca płatności przekierowuje przeglądarkę gościa z dala i z powrotem, Wink ponownie łączy sesję analityczną przerwaną przez przekierowanie przed wyzwoleniempurchase, więc sprzedaż jest przypisana do oryginalnej wizyty gościa, a nie liczona jako nowa sesja.
Referencja DataLayer
Dział zatytułowany „Referencja DataLayer”Wink wysyła zdarzenia kompatybilne z GA4 do dataLayer przez całą podróż gościa. Twój kontener GTM odczytuje z tego samego współdzielonego dataLayer, więc każdy wyzwalacz lub zmienna, które skonfigurujesz, mają dostęp do wszystkich poniższych właściwości.
Każde zdarzenie ma standardową strukturę GA4 Enhanced Ecommerce: łańcuch event na najwyższym poziomie oraz obiekt ecommerce. Przed każdym push, Wink czyści poprzedni ładunek ecommerce, aby zapobiec przenikaniu przestarzałych danych do nowych wyzwalaczy.
Zdarzenia podróży rezerwacyjnej
Dział zatytułowany „Zdarzenia podróży rezerwacyjnej”Te zdarzenia wyzwalają się automatycznie, gdy gość przechodzi przez lejek rezerwacji. Skonfiguruj swoje wyzwalacze GTM jako wyzwalacze Custom Event dopasowujące się do nazw zdarzeń poniżej.
| Krok | Zdarzenie | Kiedy się wyzwala |
|---|---|---|
| 1 | view_item_list | Ładuje się siatka lub lista hoteli |
| 2 | view_item | Gość ogląda stronę konkretnej nieruchomości |
| 3 | add_to_cart | Gość dodaje pokój do koszyka |
| 4 | begin_checkout | Ładuje się strona realizacji płatności |
| 5 | add_payment_info | Gość wybiera metodę płatności |
| 6 | login | Gość loguje się przez SSO |
| 7 | purchase | Rezerwacja jest potwierdzona |
| 8 | refund | Rezerwacja jest anulowana |
view_item_list
Dział zatytułowany „view_item_list”Wyzwala się, gdy renderowana jest siatka lub lista hoteli.
{ "event": "view_item_list", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_item
Dział zatytułowany „view_item”Wyzwala się, gdy gość ogląda konkretną nieruchomość.
{ "event": "view_item", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}add_to_cart
Dział zatytułowany „add_to_cart”Wyzwala się, gdy gość dodaje pokój do koszyka.
{ "event": "add_to_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}begin_checkout
Dział zatytułowany „begin_checkout”Wyzwala się, gdy ładuje się strona realizacji płatności.
{ "event": "begin_checkout", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "items": [ ] }}coupon jest obecny tylko, gdy zastosowano kod rabatowy.
add_payment_info
Dział zatytułowany „add_payment_info”Wyzwala się, gdy gość wybiera lub potwierdza metodę płatności.
{ "event": "add_payment_info", "ecommerce": { "currency": "USD", "value": 299.00, "coupon": "SUMMER10", "payment_type": "STRIPE", "items": [ ] }}payment_type pochodzi od typu akwizytora płatności. coupon jest obecny tylko, gdy zastosowano kod rabatowy.
Wyzwala się, gdy gość loguje się przez pojedyncze logowanie (SSO).
{ "event": "login", "ecommerce": { "method": "IAM" }}purchase
Dział zatytułowany „purchase”Wyzwala się, gdy rezerwacja jest potwierdzona.
{ "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 to unikalny identyfikator umowy rezerwacyjnej. coupon, shipping i tax są obecne tylko, gdy mają zastosowanie.
Wyzwala się, gdy rezerwacja jest anulowana.
{ "event": "refund", "ecommerce": { "currency": "USD", "transaction_id": "bc-a1b2c3d4", "value": 299.00, "coupon": "SUMMER10", "shipping": 0.00, "tax": 0.00, "items": [ ] }}transaction_id odpowiada zdarzeniu purchase dla tej samej rezerwacji. coupon, shipping i tax są obecne tylko, gdy mają zastosowanie.
Właściwości przedmiotów
Dział zatytułowany „Właściwości przedmiotów”Wszystkie zdarzenia zawierające tablicę items mają ten sam schemat przedmiotu. Każda właściwość jest opcjonalna, chyba że oznaczono ją jako wymaganą.
Standardowe pola GA4
Dział zatytułowany „Standardowe pola GA4”Te pola są natywnie rozumiane przez GA4 i pojawiają się w standardowych raportach ecommerce bez dodatkowej konfiguracji.
| Właściwość | Typ | Wymagane | Opis |
|---|---|---|---|
item_id | string | Tak | Unikalny identyfikator pokoju lub produktu |
item_name | string | — | Nazwa pokoju lub produktu |
affiliation | string | — | Nazwa afilianta lub sprzedawcy |
coupon | string | — | Kod kuponu zastosowany do przedmiotu |
currency | string | — | Kod waluty ISO 4217 (np. USD) |
creative_name | string | — | Nazwa kreacji użytej w promocji |
creative_slot | string | — | Pozycja kreacji promocyjnej |
discount | number | — | Kwota rabatu zastosowanego |
index | number | — | Pozycja na liście (liczona od 1) |
item_brand | string | — | Nazwa hotelu lub marki |
item_category | string | — | Typ produktu — np. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA |
item_list_id | string | — | Identyfikator listy, do której należy przedmiot |
item_list_name | string | — | Nazwa wyświetlana listy |
location_id | string | — | Współrzędne geograficzne nieruchomości |
price | number | — | Cena jednostkowa |
promotion_id | string | — | Identyfikator promocji |
promotion_name | string | — | Nazwa wyświetlana promocji |
quantity | number | — | Ilość (domyślnie 1) |
Niestandardowe parametry na poziomie przedmiotu
Dział zatytułowany „Niestandardowe parametry na poziomie przedmiotu”Te parametry zawierają kontekst rezerwacji specyficzny dla Wink. GA4 nie pokazuje ich automatycznie w raportach — musisz zarejestrować każdy z nich jako niestandardowy wymiar na poziomie przedmiotu w swojej właściwości GA4, zanim pojawi się w eksploracjach lub standardowych raportach. Zobacz Niestandardowe wymiary w GA4 poniżej, aby poznać instrukcje konfiguracji.
| Właściwość | Typ | Opis |
|---|---|---|
property_id | string | Identyfikator nieruchomości Wink |
property_name | string | Nazwa wyświetlana nieruchomości |
property_brand | string | Marka, do której należy nieruchomość |
property_chain | string | Sieć, do której należy nieruchomość |
property_url_name | string | Przyjazny dla URL slug nieruchomości |
city_name | string | Miasto, w którym znajduje się nieruchomość |
country_code | string | Kod kraju ISO 3166-1 alfa-2 |
start_date | string | Data zameldowania w formacie YYYY-MM-DD |
end_date | string | Data wymeldowania w formacie YYYY-MM-DD |
num_adults | number | Liczba dorosłych w rezerwacji |
num_children | number | Liczba dzieci w rezerwacji |
cancellation_policy | string | Jeden z: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions |
rate_plan_id | string | Identyfikator planu taryfowego |
room_rate_id | string | Identyfikator konkretnej stawki pokoju |
room_rate_name | string | Nazwa wyświetlana stawki pokoju |
num_perks | number | Liczba dodatków w cenie stawki |
room_location | string | Opis lokalizacji pokoju (np. Overwater, Garden) |
room_view | string | Opis widoku z pokoju (np. Ocean, City) |
room_classification | string | Klasyfikacja lub kategoria pokoju (np. Suite, Standard) |
bed_type | string | Konfiguracja łóżka w pokoju (np. King, Twin) |
Niestandardowe wymiary w GA4
Dział zatytułowany „Niestandardowe wymiary w GA4”GA4 ignoruje niestandardowe parametry przedmiotów w raportach, dopóki nie zarejestrujesz ich jako niestandardowych wymiarów na poziomie przedmiotu. Musisz zarejestrować tylko te parametry, które chcesz używać w raportach — nie musisz rejestrować wszystkich 20.
-
Otwórz definicje niestandardowe
W GA4 przejdź do Admin (ikona koła zębatego w lewym dolnym rogu) → wybierz swoją właściwość → Data display → Custom definitions.
-
Utwórz nowy wymiar niestandardowy
Kliknij Create custom dimensions.
-
Wypełnij szczegóły wymiaru
- Dimension name — czytelna nazwa, która pojawi się w raportach GA4 (patrz tabela poniżej)
- Scope — wybierz Item
- Event parameter — dokładna nazwa parametru, jak pojawia się w dataLayer (patrz tabela poniżej)
- Description — opcjonalne, ale zalecane
-
Zapisz i powtórz
Kliknij Save, a następnie powtórz dla każdego parametru, który chcesz śledzić.
Użyj poniższej tabeli jako odniesienia przy tworzeniu niestandardowych wymiarów. Wartość Event parameter musi być dokładna — GA4 rozróżnia wielkość liter.
| Nazwa wymiaru | Event parameter | Typ |
|---|---|---|
| Property ID | property_id | Tekst |
| Property name | property_name | Tekst |
| Property brand | property_brand | Tekst |
| Property chain | property_chain | Tekst |
| Property URL name | property_url_name | Tekst |
| City name | city_name | Tekst |
| Country code | country_code | Tekst |
| Check-in date | start_date | Tekst |
| Check-out date | end_date | Tekst |
| Number of adults | num_adults | Liczba |
| Number of children | num_children | Liczba |
| Cancellation policy | cancellation_policy | Tekst |
| Rate plan ID | rate_plan_id | Tekst |
| Room rate ID | room_rate_id | Tekst |
| Room rate name | room_rate_name | Tekst |
| Number of perks | num_perks | Liczba |
| Room location | room_location | Tekst |
| Room view | room_view | Tekst |
| Room classification | room_classification | Tekst |
| Bed type | bed_type | Tekst |
Dodatkowe dostępne zdarzenia
Dział zatytułowany „Dodatkowe dostępne zdarzenia”Poniższe zdarzenia są dostępne w dataLayer Wink, ale nie są częścią standardowego lejka rezerwacji. Mogą być wyzwalane przez inne interakcje na platformie.
add_to_wishlist
Dział zatytułowany „add_to_wishlist”{ "event": "add_to_wishlist", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}remove_from_cart
Dział zatytułowany „remove_from_cart”{ "event": "remove_from_cart", "ecommerce": { "currency": "USD", "value": 299.00, "items": [ ] }}select_item
Dział zatytułowany „select_item”{ "event": "select_item", "ecommerce": { "item_list_id": "featured_hotels", "item_list_name": "Featured Hotels", "items": [ ] }}view_cart
Dział zatytułowany „view_cart”{ "event": "view_cart"}To zdarzenie nie zawiera ładunku ecommerce.
view_promotion
Dział zatytułowany „view_promotion”{ "event": "view_promotion", "ecommerce": { "creative_name": "Summer Banner", "creative_slot": "hero", "promotion_id": "promo_001", "promotion_name": "Summer Sale", "items": [ ] }}select_promotion
Dział zatytułowany „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
Dział zatytułowany „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
Dział zatytułowany „sign_up”{ "event": "sign_up", "ecommerce": { "method": "email" }}generate_lead
Dział zatytułowany „generate_lead”{ "event": "generate_lead", "ecommerce": { "currency": "USD", "value": 0.00 }}join_group
Dział zatytułowany „join_group”{ "event": "join_group", "ecommerce": { "group_id": "group_abc" }}earn_virtual_currency
Dział zatytułowany „earn_virtual_currency”{ "event": "earn_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 100 }}spend_virtual_currency
Dział zatytułowany „spend_virtual_currency”{ "event": "spend_virtual_currency", "ecommerce": { "virtual_currency_name": "WinkPoints", "value": 50, "item_name": "Room Upgrade" }}level_start
Dział zatytułowany „level_start”{ "event": "level_start", "ecommerce": { "level_name": "Gold" }}level_end
Dział zatytułowany „level_end”{ "event": "level_end", "ecommerce": { "level_name": "Gold", "success": true }}level_up
Dział zatytułowany „level_up”{ "event": "level_up", "ecommerce": { "level": 2, "character": "traveler" }}post_score
Dział zatytułowany „post_score”{ "event": "post_score", "ecommerce": { "score": 980, "level": 2, "character": "traveler" }}unlock_achievement
Dział zatytułowany „unlock_achievement”{ "event": "unlock_achievement", "ecommerce": { "achievement_id": "first_booking" }}tutorial_begin
Dział zatytułowany „tutorial_begin”{ "event": "tutorial_begin", "ecommerce": {}}tutorial_complete
Dział zatytułowany „tutorial_complete”{ "event": "tutorial_complete", "ecommerce": {}}virtualPageView
Dział zatytułowany „virtualPageView”To niestandardowe zdarzenie Wink — nie jest częścią standardowego zestawu zdarzeń GA4. Jest wysyłane przy każdej nawigacji strony i zawiera kontekst urządzenia oraz sesji. Nie zawiera obiektu 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"}| Właściwość | Opis |
|---|---|
device | Wykryty typ urządzenia — Desktop, Android, iPhone, iPad lub podobny |
deviceAgent | Surowy ciąg user agenta |
os | Wykryty system operacyjny — Windows, MacOS, Linux, UNIX |
path | Aktualna ścieżka strony |
title | Aktualny tytuł strony |
userId | Identyfikator zalogowanego użytkownika (pomijany, gdy niezalogowany) |
startDate | Data zameldowania z bieżącej sesji wyszukiwania |
endDate | Data wymeldowania z bieżącej sesji wyszukiwania |
guests | Liczba gości z bieżącej sesji wyszukiwania |
rooms | Liczba pokoi z bieżącej sesji wyszukiwania |
