Zdarzenia to jedno z najpotężniejszych źródeł danych o kontaktach w Positive User. Każde zdarzenie rejestruje konkretną akcję wykonaną przez kontakt na Twojej stronie – kliknięcie przycisku, obejrzenie filmu lub inne działania – i przekazuje te dane do Twojego workspace, gdzie mogą uruchamiać automatyzacje i wspierać segmentację. Aby dowiedzieć się więcej, zobacz „Czym jest zdarzenie”.
Google Tag Manager (GTM) pozwala skonfigurować śledzenie zdarzeń bez ingerencji w kod Twojej strony.
W tym artykule używamy jako przykładu kliknięcia przycisku „Reviews” na stronie produktu, przekazując wraz ze zdarzeniem powiązane „product_id” i „product_name”. Ten sam schemat sprawdzi się dla każdej innej akcji – wysłania formularza, głębokości scrollowania, interakcji z wideo itd. Dostosuj więc kroki 1–3 do akcji, którą chcesz śledzić.
Skrypt implementacyjny ładuje się asynchronicznie. Aby zapobiec wysłaniu zdarzenia, zanim funkcja userengage() będzie dostępna na stronie, tag zdarzenia powinien wykorzystywać defensywne kodowanie – krótką pętlę ponawiającą próbę, która sprawdza, czy widget został załadowany, i czeka, aż to nastąpi, zanim wyśle zdarzenie.
Skrypt implementacyjny musi być aktywny w Twoim kontenerze GTM. Sprawdź „Jak wdrożyć Positive User za pomocą Google Tag Manager” [LINK].
Zdarzenie musi być utworzone w Twoim workspace Positive User wraz ze wszystkimi wymaganymi atrybutami. Sprawdź „Czym jest zdarzenie”.
Ten krok należy wykonać w kontenerze GTM.
Przejdź do „Zmienne” → „Konfiguruj”.
Zaznacz wszystkie zmienne w sekcji „Kliknięcia” (Click Text, Click URL, Click Classes, Click ID).
W przypadku akcji innych niż kliknięcia włącz odpowiedni zestaw (Videos, Scroll itd.).
Otwórz swoją stronę w trybie „Preview” GTM.
Kliknij element, z którym chcesz powiązać zdarzenie.
W Tag Assistant wybierz zdarzenie kliknięcia na osi czasu.
Otwórz zakładkę „Variables” i skopiuj wartość zmiennej, która jednoznacznie identyfikuje ten element.
W poniższym przykładzie używamy „Click Text” z wartością „Reviews”, aby zidentyfikować kliknięcia przycisku.
Przejdź do „Triggers” → „New” w swoim kontenerze GTM.
Ustaw „Trigger Type” na „Click – All Elements”.
Wybierz „Some Clicks”.
Skonfiguruj warunek, używając zmiennej z kroku 2 (np. Click Text equals Reviews).
Zapisz i nazwij wyzwalacz (np. „Click – Reviews Button”).

Wraz ze zdarzeniem możesz przesyłać dodatkowe szczegóły – atrybuty.
Pamiętaj, że zdarzenie i jego atrybuty muszą być wcześniej zdefiniowane w Twoim workspace Positive User. W przeciwnym razie wszystkie atrybuty zdarzenia zostaną wysłane jako typ „string”.
W bieżącym przykładzie zdarzenie będzie przenosić atrybuty „product_id” i „product_name”. Są one pobierane z Twojego dataLayer. Większość platform e-commerce (Shopify, Magento, WooCommerce, PrestaShop) wypełnia je automatycznie na stronach produktów. Aby sprawdzić, czy działa to poprawnie na Twojej stronie, otwórz tryb „Preview” GTM, załaduj stronę produktu i sprawdź zakładkę „Data Layer” w Tag Assistant.
Dla każdego atrybutu:
Przejdź do „Variables” → „New” → „Data Layer Variable” w swoim kontenerze GTM.
W „Data Layer Variable Name” wpisz dokładny klucz z dataLayer (np. product.id, product.name).
Zapisz zmienną pod rozpoznawalną nazwą (np. „DLV – product_id”, „DLV – product_name”).
Jeśli tych kluczy nie ma w Twoim dataLayer, poproś dewelopera, aby dodał je na stronach produktów.
Przejdź do „Tags” → „New” → „Tag Configuration” → „Custom HTML” w swoim kontenerze GTM.
Wklej:
<script>
(function fireEvent(retries) {
if (typeof userengage === 'function') {
userengage('event.reviews_click', {
product_id: '{{DLV - product_id}}',
product_name: '{{DLV - product_name}}'
});
} else if (retries > 0) {
setTimeout(function () { fireEvent(retries - 1); }, 200);
}
})(10);
</script>Ustaw wyzwalacz na wyzwalacz akcji z kroku 3.
Zapisz.
Skrypt sprawdza, czy userengage() jest dostępna na stronie. Jeśli tak, zdarzenie zostaje wysłane natychmiast. Jeśli nie, ponawia próbę co 200 ms, do 10 razy (łącznie ~2 sekundy), a następnie po cichu rezygnuje – bez błędów w konsoli i bez psucia strony. Dostosuj liczbę prób i opóźnienie do profilu ładowania swojej strony.

W GTM kliknij „Preview” i otwórz swoją stronę.
Wywołaj akcję.
W Tag Assistant potwierdź, że tag zdarzenia został uruchomiony.
W swoim workspace Positive User otwórz profil kontaktu – zdarzenie powinno pojawić się na jego osi czasu wraz z poprawnymi atrybutami.

W drugim argumencie userengage() możesz przekazać dowolną liczbę atrybutów. Na przykład „Category”, „Price” czy „Currency”.
Stosuj te same zasady formatowania danych, co dla atrybutów kontaktu. Pamiętaj, aby ustawić odpowiedni typ dla każdego atrybutu zgodnie z instrukcją „Czym jest atrybut”. Pełne informacje znajdziesz również w dokumentacji dla deweloperów.
Niektóre zdarzenia powinny uruchamiać się dokładnie raz na stronę, a nie przy każdej akcji – na przykład zdarzenie „qualified_visit”, które rejestruje moment, w którym kontakt spędził na stronie produktu wystarczająco dużo czasu, aby uznać go za zaangażowanego. W takich przypadkach odpowiednim narzędziem jest Trigger Group w GTM.
„Trigger Group” uruchamia tag dokładnie raz, gdy wszystkie wchodzące w jej skład wyzwalacze uruchomiły się co najmniej raz na stronie. Po tym pojedynczym uruchomieniu pozostaje cicha przez resztę sesji na stronie – nawet jeśli jej wyzwalacze uruchomią się ponownie. Dzięki temu nie nadaje się do śledzenia per kliknięcie lub per akcję, ale jest idealna dla zdarzeń sygnalizujących „ta strona osiągnęła ten stan”.
To podejście wykorzystuje zdarzenie dataLayer „Positive User – Widget Ready”, które callback onLoad skryptu implementacyjnego już wysyła (skonfigurowane w „Jak wdrożyć Positive User za pomocą Google Tag Manager” [LINK]).
Ponieważ wyzwalacz widget-ready jest częścią grupy, zdarzenie z gwarancją poczeka, aż userengage() będzie dostępna – defensywne kodowanie nie jest potrzebne.
Przykład: wyślij zdarzenie „qualified_visit”, gdy widget zostanie załadowany i kontakt spędził 10 sekund na stronie.
Utwórz wyzwalacz Timer dla sygnału zaangażowania:
Przejdź do „Triggers” → „New” → „Timer” w swoim kontenerze GTM.
Ustaw „Interval” na 10000 (10 sekund), a „Limit” na 1.
Zapisz (np. jako „Timer – 10s On Page”).
Utwórz wyzwalacz Custom Event dla sygnału onLoad skryptu implementacyjnego:
Przejdź do „Triggers” → „New” → „Custom Event” w swoim kontenerze GTM.
W „Event name” wpisz dokładnie: „Positive User – Widget Ready”.
Zapisz (np. jako „Custom Event – PU Widget Ready”).
Utwórz Trigger Group:
Przejdź do „Triggers” → „New” → „Trigger Group” w swoim kontenerze GTM.
Dodaj oba wyzwalacze utworzone powyżej.
Zapisz (np. jako „Qualified Visit – Widget Ready + 10s”).
Utwórz tag zdarzenia:
Przejdź do „Tags” → „New” → „Tag Configuration” → „Custom HTML” w swoim kontenerze GTM.
Wklej:
<script>
userengage('event.qualified_visit', {
product_id: '{{DLV - product_id}}',
product_name: '{{DLV - product_name}}'
});
</script>Ustaw wyzwalacz na Trigger Group z kroku 3.
Zapisz.
Trigger Group uruchomi się raz na stronę, gdy oba warunki zostaną spełnione. Przeładowanie strony resetuje grupę, więc uruchomi się ponownie przy kolejnej odsłonie. Aby rejestrować zdarzenia per akcja, które muszą uruchamiać się przy każdej interakcji, zobacz główny przebieg krok po kroku powyżej.
Jak wdrożyć Positive User za pomocą Google Tag Manager [LINK]