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 przypadkiem użycia jest kontener Sojern do retargetingu i reklamy, 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 przejdź do zakładki Dostosowania. Wklej swoje ID kontenera GTM w pole GTM i zapisz. Twoja integracja jest teraz aktywna.
-
(Opcjonalnie) Dodaj ID pomiaru GA4 + sekret API dla zakupu po stronie serwera
Kontenery GTM działają całkowicie w przeglądarce gościa, więc zakończona rezerwacja może zostać pominięta, jeśli gość zamknie kartę podczas przekierowania płatności. Jeśli Twój kontener ładuje właściwość GA4 i chcesz, aby zakończone rezerwacje były niezawodnie rejestrowane, wpisz także ID pomiaru GA4 i sekret API protokołu pomiarowego w sekcji GTM. Wink wyśle wtedy zdarzenie
purchasedla tej właściwości po stronie serwera, dokładnie jak opisano w przewodniku Integracja GA4 Analytics. Pozostaw puste, jeśli potrzebujesz tylko śledzenia w przeglądarce. -
Potwierdź z dostawcą
Jeśli Twój kontener pochodzi od partnera takiego jak Sojern, poinformuj swojego opiekuna konta, że integracja jest aktywna. Mogą oni 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 zakładce Dostosowania w portalu Wink. 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 w 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 zależności od dodatkowej konfiguracji. Dzieje się to automatycznie, bez konieczności 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.
- Śledzenie Wink i Twój kontener działają równolegle, odczytując z tego samego współdzielonego
dataLayer. Każde zdarzenie rezerwacji śledzone przez Wink jest jednocześnie dostępne dla Twojego kontenera. - Gdy Twoja nieruchomość nie jest oglądana — na przykład gdy gość przegląda inny hotel w Wink — Twój kontener nie jest ładowany, więc otrzymuje tylko dane dotyczące Twojej nieruchomości.
- Jeśli podałeś ID pomiaru GA4 + sekret API (krok 3 powyżej), zdarzenie
purchasedla zakończonych rezerwacji jest dodatkowo wysyłane po stronie serwera przez protokół pomiarowy GA4, więc sprzedaż jest rejestrowana nawet jeśli gość nie wróci na stronę potwierdzenia.
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: ciąg znaków 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 uruchamiają 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ę uruchamia |
|---|---|---|
| 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”Uruchamia 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”Uruchamia 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”Uruchamia 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”Uruchamia 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”Uruchamia 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 z typu akwizytora płatności. coupon jest obecny tylko, gdy zastosowano kod rabatowy.
Uruchamia się, gdy gość loguje się przez pojedyncze logowanie (SSO).
{ "event": "login", "ecommerce": { "method": "IAM" }}purchase
Dział zatytułowany „purchase”Uruchamia 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.
Uruchamia 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 pozycji
Dział zatytułowany „Właściwości pozycji”Wszystkie zdarzenia zawierające tablicę items mają ten sam schemat pozycji. 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 pozycji |
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 pozycja |
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 pozycji
Dział zatytułowany „Niestandardowe parametry na poziomie pozycji”Te parametry niosą kontekst rezerwacji specyficzny dla Wink. GA4 nie pokazuje ich automatycznie w raportach — musisz zarejestrować każdy z nich jako niestandardowy wymiar na poziomie pozycji 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 URL nieruchomości (slug) |
city_name | string | Miasto, w którym znajduje się nieruchomość |
country_code | string | Kod kraju ISO 3166-1 alpha-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 | Jedna z wartości: 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 | Lokalizacja pokoju (np. Overwater, Garden) |
room_view | string | Widok 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 pozycji w raportach, dopóki nie zarejestrujesz ich jako niestandardowych wymiarów na poziomie pozycji. 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 Administrator (ikona koła zębatego w lewym dolnym rogu) → wybierz swoją właściwość → Wyświetlanie danych → Definicje niestandardowe.
-
Utwórz nowy wymiar niestandardowy
Kliknij Utwórz wymiar niestandardowy.
-
Wypełnij szczegóły wymiaru
- Nazwa wymiaru — czytelna nazwa, która pojawi się w raportach GA4 (patrz tabela poniżej)
- Zakres — wybierz Pozycja
- Parametr zdarzenia — dokładna nazwa parametru, jak w dataLayer (patrz tabela poniżej)
- Opis — opcjonalny, ale zalecany
-
Zapisz i powtórz
Kliknij Zapisz, 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ść Parametru zdarzenia musi być dokładna — GA4 rozróżnia wielkość liter.
| Nazwa wymiaru | Parametr zdarzenia | Typ |
|---|---|---|
| ID nieruchomości | property_id | Tekst |
| Nazwa nieruchomości | property_name | Tekst |
| Marka nieruchomości | property_brand | Tekst |
| Sieć nieruchomości | property_chain | Tekst |
| Nazwa URL nieruchomości | property_url_name | Tekst |
| Nazwa miasta | city_name | Tekst |
| Kod kraju | country_code | Tekst |
| Data zameldowania | start_date | Tekst |
| Data wymeldowania | end_date | Tekst |
| Liczba dorosłych | num_adults | Liczba |
| Liczba dzieci | num_children | Liczba |
| Polityka anulacji | cancellation_policy | Tekst |
| ID planu taryfowego | rate_plan_id | Tekst |
| ID stawki pokoju | room_rate_id | Tekst |
| Nazwa stawki pokoju | room_rate_name | Tekst |
| Liczba dodatków | num_perks | Liczba |
| Lokalizacja pokoju | room_location | Tekst |
| Widok pokoju | room_view | Tekst |
| Klasyfikacja pokoju | room_classification | Tekst |
| Typ łóżka | 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ć wywoływane 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 agent |
os | Wykryty system operacyjny — Windows, MacOS, Linux, UNIX |
path | Aktualna ścieżka strony |
title | Aktualny tytuł strony |
userId | Identyfikator uwierzytelnionego 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 |
