Przejdź do głównej zawartości

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.


  1. 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.

  2. 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.

  3. (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 purchase dla 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.

  4. 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.travel dla Twojej nieruchomości i czy dane płyną do Twojego konta.


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.dataLayer Wink — 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 purchase dla 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.

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.


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.

KrokZdarzenieKiedy się uruchamia
1view_item_listŁaduje się siatka lub lista hoteli
2view_itemGość ogląda stronę konkretnej nieruchomości
3add_to_cartGość dodaje pokój do koszyka
4begin_checkoutŁaduje się strona realizacji płatności
5add_payment_infoGość wybiera metodę płatności
6loginGość loguje się przez SSO
7purchaseRezerwacja jest potwierdzona
8refundRezerwacja jest anulowana

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": [ ]
}
}

Uruchamia się, gdy gość ogląda konkretną nieruchomość.

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

Uruchamia się, gdy gość dodaje pokój do koszyka.

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

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.


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

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.


Wszystkie zdarzenia zawierające tablicę items mają ten sam schemat pozycji. Każda właściwość jest opcjonalna, chyba że oznaczono ją jako wymaganą.

Te pola są natywnie rozumiane przez GA4 i pojawiają się w standardowych raportach ecommerce bez dodatkowej konfiguracji.

WłaściwośćTypWymaganeOpis
item_idstringTakUnikalny identyfikator pokoju lub produktu
item_namestringNazwa pokoju lub produktu
affiliationstringNazwa afilianta lub sprzedawcy
couponstringKod kuponu zastosowany do pozycji
currencystringKod waluty ISO 4217 (np. USD)
creative_namestringNazwa kreacji użytej w promocji
creative_slotstringPozycja kreacji promocyjnej
discountnumberKwota rabatu zastosowanego
indexnumberPozycja na liście (liczona od 1)
item_brandstringNazwa hotelu lub marki
item_categorystringTyp produktu — np. GUEST_ROOM, ACTIVITY, ATTRACTION, MEETING_ROOM, RESTAURANT, SPA
item_list_idstringIdentyfikator listy, do której należy pozycja
item_list_namestringNazwa wyświetlana listy
location_idstringWspółrzędne geograficzne nieruchomości
pricenumberCena jednostkowa
promotion_idstringIdentyfikator promocji
promotion_namestringNazwa wyświetlana promocji
quantitynumberIlość (domyślnie 1)

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śćTypOpis
property_idstringIdentyfikator nieruchomości Wink
property_namestringNazwa wyświetlana nieruchomości
property_brandstringMarka, do której należy nieruchomość
property_chainstringSieć, do której należy nieruchomość
property_url_namestringPrzyjazny URL nieruchomości (slug)
city_namestringMiasto, w którym znajduje się nieruchomość
country_codestringKod kraju ISO 3166-1 alpha-2
start_datestringData zameldowania w formacie YYYY-MM-DD
end_datestringData wymeldowania w formacie YYYY-MM-DD
num_adultsnumberLiczba dorosłych w rezerwacji
num_childrennumberLiczba dzieci w rezerwacji
cancellation_policystringJedna z wartości: Refundable, Non-Refundable, Refundable-With-Restrictions, Non-Refundable-With-Restrictions
rate_plan_idstringIdentyfikator planu taryfowego
room_rate_idstringIdentyfikator konkretnej stawki pokoju
room_rate_namestringNazwa wyświetlana stawki pokoju
num_perksnumberLiczba dodatków w cenie stawki
room_locationstringLokalizacja pokoju (np. Overwater, Garden)
room_viewstringWidok z pokoju (np. Ocean, City)
room_classificationstringKlasyfikacja lub kategoria pokoju (np. Suite, Standard)
bed_typestringKonfiguracja łóżka w pokoju (np. King, Twin)

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.

  1. 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 danychDefinicje niestandardowe.

  2. Utwórz nowy wymiar niestandardowy

    Kliknij Utwórz wymiar niestandardowy.

  3. 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
  4. 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 wymiaruParametr zdarzeniaTyp
ID nieruchomościproperty_idTekst
Nazwa nieruchomościproperty_nameTekst
Marka nieruchomościproperty_brandTekst
Sieć nieruchomościproperty_chainTekst
Nazwa URL nieruchomościproperty_url_nameTekst
Nazwa miastacity_nameTekst
Kod krajucountry_codeTekst
Data zameldowaniastart_dateTekst
Data wymeldowaniaend_dateTekst
Liczba dorosłychnum_adultsLiczba
Liczba dziecinum_childrenLiczba
Polityka anulacjicancellation_policyTekst
ID planu taryfowegorate_plan_idTekst
ID stawki pokojuroom_rate_idTekst
Nazwa stawki pokojuroom_rate_nameTekst
Liczba dodatkównum_perksLiczba
Lokalizacja pokojuroom_locationTekst
Widok pokojuroom_viewTekst
Klasyfikacja pokojuroom_classificationTekst
Typ łóżkabed_typeTekst

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.

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

To zdarzenie nie zawiera ładunku ecommerce.

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

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
deviceWykryty typ urządzenia — Desktop, Android, iPhone, iPad lub podobny
deviceAgentSurowy ciąg user agent
osWykryty system operacyjny — Windows, MacOS, Linux, UNIX
pathAktualna ścieżka strony
titleAktualny tytuł strony
userIdIdentyfikator uwierzytelnionego użytkownika (pomijany, gdy niezalogowany)
startDateData zameldowania z bieżącej sesji wyszukiwania
endDateData wymeldowania z bieżącej sesji wyszukiwania
guestsLiczba gości z bieżącej sesji wyszukiwania
roomsLiczba pokoi z bieżącej sesji wyszukiwania