Instrukcja i dokumentacja

Instrukcja wdrożenia szablonu GTM dla stron B2B

Import, konfiguracja i testy kontenera MILOWSKI.EU B2B GTM TEMPLATE v1.0 krok po kroku. Niżej znajdziesz też pełną dokumentację: zdarzenia, parametry GA4, konwersje Google Ads, tagi, reguły i zmienne.

Wersja 1.0 z 2 października 2026Czas czytania ok. 14 minAutor: Marcin Miłowski

Co mierzy szablon

Szablon dodaje do Google Tag Managera pomiar kontaktu na stronach B2B bez sklepu: kliknięcia w e-mail i telefon, kopiowanie adresu lub numeru oraz czas zaangażowania. Po imporcie i wpisaniu ID GA4 działa ponad 5 zdarzeń GA4. Pozostałe elementy są wstrzymane i wymagają decyzji albo dostosowania do strony.

Zdarzenie Kiedy się wysyła Parametry Stan po imporcie
CLICK_EMAIL kliknięcie w link mailto: link_text aktywne
CLICK_TEL kliknięcie w link tel: lub callto: link_text aktywne
COPY_TEL_OR_MAIL skopiowanie ze strony adresu e-mail lub numeru telefonu link_text, CONTACT_TYPE aktywne
WIECEJ_NIZ_1_MINUTA 60 s aktywnego czasu w sesji (suma ze wszystkich stron, tylko widoczna karta), raz na sesję brak aktywne
generate_lead udana wysyłka formularza form_id, form_name, lead_source wstrzymane, wymaga dostosowania
Konwersje Google Ads: CLICK_EMAIL, CLICK_TEL, COPY_TEL_OR_MAIL jak zdarzenia GA4, najwyżej raz na odsłonę strony brak wstrzymane, wymagają etykiet konwersji
GO_TO_MAP kliknięcie w link do Google Maps lub OpenStreetMap link_url, link_text aktywne

Pełny adres e-mail ani numer telefonu nie trafia do GA4 ani do Google Ads. Szczegóły w sekcji „Prywatność i zgody”.

Wymagania przed importem

Do podstawowego pomiaru wystarczą kontener GTM, usługa GA4 i baner zgód z Consent Mode v2. Pozostałe wymagania dotyczą tylko elementów, które chcesz włączyć.

Wymaganie Po co Obowiązkowe
Poprawnie osadzony kontener GTM typu Web z uprawnieniem do publikowania import i publikacja szablonu tak
Usługa GA4 i jej identyfikator pomiaru (G-…) odbiór zdarzeń tak
Baner zgód (CMP) z Consent Mode v2 zgodne z RODO uruchamianie tagów tak, dla ruchu z UE
Konto Google Ads z 3 działaniami konwersji typu Witryna konwersje CLICK_EMAIL, CLICK_TEL, COPY_TEL_OR_MAIL gdy prowadzisz kampanie Google Ads
Formularze w Contact Form 7 albo programista zdarzenie generate_lead gdy chcesz mierzyć formularze
CRM, do którego trafiają ukryte pola formularza źródło pierwszej i ostatniej wizyty przy leadzie opcjonalnie
Nie masz jeszcze pliku?
Szablon jest darmowy.
Pobierz szablon

Import do GTM krok po kroku

Importuj zawsze w trybie „Scal” do nowego obszaru roboczego. Opcja „Zastąp” usuwa z obszaru roboczego wszystko, czego nie ma w pliku, czyli istniejące tagi Twojej strony.

  1. W GTM otwórz Administracja → Importuj kontener.
  2. Wybierz plik MILOWSKI.EU_B2B_GTM_TEMPLATE_v1.0.json.
  3. Jako obszar roboczy wybierz Nowy, np. „Import B2B template”. Zmiany zobaczysz przed publikacją i w razie potrzeby odrzucisz je jednym kliknięciem.
  4. Wybierz opcję importu Scal, a potem Zmień nazwy sprzecznych tagów, reguł i zmiennych.
  5. Potwierdź import. Wszystkie elementy trafią do folderu MILOWSKI.EU B2B GTM TEMPLATE v1.0.
  6. Przejdź do sekcji „Konfiguracja po imporcie”. Nie publikuj kontenera przed testem z sekcji „Testowanie przed publikacją”.

Konfiguracja po imporcie

Do samego pomiaru w GA4 wystarczą dwa kroki: wpisanie ID GA4 i decyzja o tagu głównym. Elementy Google Ads i etykiety kontaktów ustawiasz tylko wtedy, gdy ich potrzebujesz.

Element w GTM Co zrobić Kiedy
Zmienna „TU WSTAW ID SWOJEGO KONTA GA4” wpisz identyfikator pomiaru zaczynający się od G- zawsze
Tag „GA4 – TAG GŁÓWNY – …” masz już tag Google z GA4 → usuń ten tag; nie masz → włącz go zawsze
Zmienna „TU WSTAW ID KONWERSJI GOOGLE ADS” wpisz same cyfry z identyfikatora AW-123456789 gdy używasz Google Ads
Tag „Google Ads – TAG GŁÓWNY – …” masz już tag Google z tym AW- → usuń ten tag; nie masz → włącz go gdy używasz Google Ads
Tagi „Google Ads – CLICK_EMAIL”, „- CLICK_TEL”, „- COPY_TEL_OR_MAIL” w polu Etykieta konwersji zastąp TU_PODAJ_SWOJA_ETYKIETE_Z_PANELU_GOOGLE_ADS etykietą z panelu, potem włącz gdy używasz Google Ads
Tag „Google Ads – Conversion Linker” włącz, jeśli w kontenerze nie ma innego Conversion Linkera gdy używasz Google Ads
Zmienna „LT – CONTACT_LABEL” przypisz nazwy swoim kontaktom, usuń 2 przykładowe wiersze opcjonalnie

Identyfikator pomiaru znajdziesz w GA4: Administracja → Strumienie danych → Twój strumień. Nie wpisuj ID konta GA4, które składa się z samych cyfr, bo zdarzenia nigdzie nie dotrą.

Identyfikator i etykietę konwersji pokazuje Google Ads przy konfiguracji tagu konwersji, gdy wybierzesz Menedżer tagów Google. W zapisie AW-123456789/AbC-D_efG identyfikator to 123456789, a etykieta to AbC-D_efG.

W tabeli etykiet kontaktów e-mail wpisuj małymi literami ([email protected]), a numer polski jako 9 cyfr bez +48 i spacji (600100200). Kontakty spoza tabeli trafiają do GA4 zamaskowane.

Zdarzenia i parametry GA4

Szablon używa parametrów wbudowanych w GA4 wszędzie, gdzie to możliwe, żeby nie zużywać limitu wymiarów niestandardowych. Rejestracji wymagają tylko 2 parametry: CONTACT_TYPE i lead_source. Zrób to w GA4: Administracja → Definicje niestandardowe → Utwórz wymiar niestandardowy, zakres „Zdarzenie”.

Parametr zdarzenia Wymiar w GA4 Przykładowe wartości Zdarzenia
link_text wbudowany „Tekst linku”, bez rejestracji Biuro, bi***(at)firma.pl, ***789, Jak dojechać CLICK_EMAIL, CLICK_TEL, COPY_TEL_OR_MAIL, GO_TO_MAP
link_url wbudowany „URL linku”, bez rejestracji; GA4 tworzy z niego też „Domenę linku” https://maps.app.goo.gl/AbC123 GO_TO_MAP
form_id wbudowany „Identyfikator formularza”, bez rejestracji 123 generate_lead
form_name wbudowany „Nazwa formularza”, bez rejestracji Formularz kontaktowy generate_lead
CONTACT_TYPE do zarejestrowania email, phone COPY_TEL_OR_MAIL
lead_source do zarejestrowania formularz_www (domyślnie), wycena, demo generate_lead

Przy kliknięciach w e-mail i telefon link_text zawiera etykietę z tabeli „LT – CONTACT_LABEL” albo maskę, a nie tekst linku ze strony, bo ten często jest samym adresem. Z tego samego powodu tagi kontaktu nie wysyłają link_url. CONTACT_TYPE jest tylko w COPY_TEL_OR_MAIL, bo przy kliknięciach typ wynika z nazwy zdarzenia. Dostawcę mapy w GO_TO_MAP odczytasz z „Domeny linku”. Dane w raportach pojawiają się z opóźnieniem do 48 godzin, w DebugView od razu.

Jako zdarzenia kluczowe oznacz CLICK_EMAIL, CLICK_TEL i COPY_TEL_OR_MAIL, a po włączeniu formularzy także generate_lead. WIECEJ_NIZ_1_MINUTA służy do segmentów i list odbiorców, więc nie importuj go do Google Ads jako konwersji głównej.

Wielkie litery oznaczają zdarzenia i parametry tego szablonu, dzięki czemu łatwo odróżnić je od nazw z dokumentacji Google. Nazwy Google, czyli generate_lead, link_url, link_text, form_id, form_name i lead_source, są małymi literami. Nazwę CONTACT_TYPE przy rejestracji wpisz wielkimi literami, bo GA4 rozróżnia wielkość liter.

Każdy tag konwersji uruchamia się najwyżej raz na odsłonę strony. Dzięki temu dwa kliknięcia w ten sam e-mail nie dają dwóch konwersji, nawet jeśli w Google Ads ustawiono liczenie „Każda”.

  • W Google Ads utwórz 3 działania powodujące konwersję typu Witryna, po jednym na CLICK_EMAIL, CLICK_TEL i COPY_TEL_OR_MAIL.
  • Dla każdego ustaw liczenie „Jedna”, czyli jedna konwersja na kliknięcie reklamy. To standard dla leadów.
  • Kontakt mailowy i telefoniczny to w B2B słabszy sygnał niż wysłany formularz czy sprzedaż z CRM. Ustaw te konwersje jako dodatkowe, jeśli masz lepszą konwersję główną. Jako główne ustaw je tylko wtedy, gdy są jedynym sygnałem.
  • Nie licz tej samej akcji z dwóch źródeł. Jeśli importujesz do Google Ads zdarzenia kluczowe z GA4 o tych samych nazwach i jednocześnie włączysz tagi z szablonu, tylko jedno źródło może być konwersją główną. Inaczej każda konwersja policzy się podwójnie.
  • Tagi Google Ads same sprawdzają zgodę ad_storage z Consent Mode v2, nie wymagają dodatkowych ustawień zgód w GTM.

Elementy wstrzymane: formularze i źródło wizyt do CRM

Formularze i przekazywanie źródła do CRM zależą od CMS i CRM konkretnej strony. Dlatego te elementy są wstrzymane i nie zadziałają po samym włączeniu.

Formularze: generate_lead

Tag „GA4 – generate_lead” uruchamia się na zdarzeniu formSubmitSuccess w warstwie danych. Formularz musi je wysłać po udanej wysyłce, a nie po kliknięciu „Wyślij”, bo wtedy liczyłyby się też wysyłki z błędami.

  • Contact Form 7 (WordPress): włącz razem z tagiem generate_lead tag „cHTML – listener Contact Form 7”. form_id to ID formularza w CF7, form_name to jego tytuł.
  • Inne formularze (Elementor, Gravity Forms, HubSpot, własne): programista dodaje po udanej wysyłce ten kod:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ event: 'formSubmitSuccess', formId: 'kontakt', formName: 'Formularz kontaktowy', leadSource: 'formularz_www' });
  • Formularz rekrutacyjny wyklucz w regule „formSubmitSuccess” warunkiem na zmiennej „DLV – formName”, np. nie zawiera „CV”, „Kariera” ani „Rekrutacja”. Nazwy formularzy sprawdź w Podglądzie GTM. Bez tego zgłoszenia kandydatów zawyżą liczbę leadów.

Źródło pierwszej i ostatniej wizyty do CRM

Tag „cHTML – zrodlo pierwszej i ostatniej wizyty do CRM” zapisuje w przeglądarce użytkownika, skąd przyszedł, i wpisuje te dane do ukrytych pól formularza. Dzięki temu przy każdym leadzie w CRM widać jego źródło, a gclid pozwala zaimportować do Google Ads konwersje offline, np. podpisaną umowę.

Ukryte pole Zawartość Przykład
FIRST_SOURCE_MEDIUM źródło / medium pierwszej wizyty w ciągu 90 dni linkedin / paid_social
LAST_SOURCE_MEDIUM ostatnie źródło inne niż wejście bezpośrednie google / organic
LAST_CAMPAIGN utm_campaign ostatniego źródła jesien_2026
GCLID ostatni identyfikator kliknięcia reklamy Google Ads Cj0KCQjw…

Źródło ustala w tej kolejności: parametry UTM, gclid (google / cpc), msclkid (bing / cpc), fbclid (facebook / social), strona odsyłająca (wyszukiwarki jako organic, pozostałe jako referral), a na końcu (direct) / (none). Przejścia w obrębie domeny i jej subdomen nie zmieniają źródła. Dane wygasają po 90 dniach, a okres zmienisz w skrypcie (DNI_WAZNOSCI).

Przed włączeniem:

  1. Dodaj do formularza w CMS ukryte pola o nazwach lub id z tabeli. Działają też nazwy typu form_fields[GCLID] z Elementora.
  2. Zmapuj te pola w CRM.
  3. Tag wymaga zgód analytics_storage i ad_storage. Dodaj mu drugą regułę na zdarzenie aktualizacji zgody z Twojego CMP. Bez niej źródło z pierwszej odsłony nie zapisze się u osoby, która zgodę kliknie dopiero na tej stronie.
  4. Dopisz w polityce prywatności, że źródło wizyty trafia razem z formularzem do CRM.
Formularze, CRM i baner zgód wolisz zlecić?
Wdrażam szablon od 499 zł netto. Na życzenie dodaję Consent Mode v2, Microsoft Clarity, LinkedIn Insight Tag i Meta Pixel.
Zobacz zakres wdrożenia

Prywatność i zgody

Do GA4 i Google Ads trafia tylko etykieta kontaktu albo jego maska w parametrze link_text, a przy kopiowaniu także typ kontaktu, nigdy pełny adres e-mail ani numer telefonu. Zasady Google Analytics zabraniają wysyłania do GA4 danych osobowych, a imienne adresy handlowców nimi są.

  • E-mail jest maskowany do 2 pierwszych znaków i domeny, np. bi***(at)firma.pl. Wysyłana wartość nie zawiera znaku @.
  • Telefon jest maskowany do 3 ostatnich cyfr, np. ***789.
  • Pełna wartość jest tylko w przeglądarce: w zmiennych „DLV – copiedText” i „JS – CONTACT_NORMALIZED”. Nie używaj tych zmiennych w żadnym tagu, który wysyła dane.
Tag Ustawienie zgód w GTM Dlaczego
Tagi GA4 i Google Ads, w tym tagi główne i Conversion Linker Nie wymaga dodatkowej zgody tagi Google same sprawdzają analytics_storage i ad_storage z Consent Mode v2
cHTML – nasluch kopiowania kontaktu, cHTML – listener Contact Form 7 Nie wymaga dodatkowej zgody tylko przekazują zdarzenie do warstwy danych, niczego nie zapisują ani nie wysyłają
cHTML – licznik aktywnego czasu analytics_storage zapisuje licznik sesji w localStorage
cHTML – zrodlo pierwszej i ostatniej wizyty do CRM analytics_storage i ad_storage zapisuje źródła wizyt i gclid w localStorage

Bez banera zgód z Consent Mode v2 tagi Google wysyłają dane bez zgody użytkownika. Dla ruchu z UE jest to niezgodne z RODO i Prawem komunikacji elektronicznej.

Ustawienia poza GTM (w GA4)

Trzy rzeczy przydatne na stronach B2B ustawia się w GA4, nie w kontenerze, dlatego szablon ich nie zawiera.

Co Gdzie w GA4 Uwagi
Pobrania plików (PDF, PPTX, DOCX, XLSX, ZIP i inne) Administracja → Strumienie danych → Twój strumień → Pomiar zaawansowany działa tylko dla linków kończących się rozszerzeniem pliku; zdarzenie file_download
Wyszukiwarka na stronie Pomiar zaawansowany → Wyszukiwanie w witrynie GA4 rozpoznaje parametry q, s, search, query i keyword; WordPress (s) działa od razu, w innym CMS sprawdź parametr w adresie wyników i w razie potrzeby go dopisz
Wykluczenie ruchu firmowego Twój strumień → Skonfiguruj ustawienia tagu → Zdefiniuj ruch wewnętrzny, potem Administracja → Filtry danych tylko przy stałym adresie IP firmy; filtr „Ruch wewnętrzny” najpierw sprawdź w trybie testowym, potem go aktywuj

Testowanie przed publikacją

Przed publikacją uruchom Podgląd w GTM, zaakceptuj zgody w banerze i odhacz poniższe scenariusze. Zdarzenia GA4 sprawdzaj równolegle w DebugView (GA4: Administracja → DebugView).

Odhaczono 0 z 10

Gdy wszystko się zgadza, kliknij Prześlij i opublikuj wersję, np. „MILOWSKI.EU B2B GTM TEMPLATE v1.0”.

Najczęstsze problemy

Objaw Najczęstsza przyczyna Rozwiązanie
Żadne zdarzenie nie dociera do DebugView w zmiennej z ID GA4 jest ID konta (same cyfry) zamiast G-… albo żaden tag Google nie wczytuje GA4 popraw ID; włącz tag główny GA4 albo sprawdź istniejący
Dwa page_view przy każdej odsłonie działa tag główny GA4 z szablonu i drugi tag Google lub wtyczka zostaw jedno wdrożenie GA4
CLICK_EMAIL lub CLICK_TEL nie odpala przycisk nie jest linkiem mailto: ani tel:, tylko skryptem w Podglądzie sprawdź zmienną Click URL; taki przycisk wymaga osobnej reguły
COPY_TEL_OR_MAIL nie odpala zaznaczono ponad 120 znaków, numer nie ma 9 cyfr ani kierunkowego z + lub 00, albo strona blokuje kopiowanie skopiuj sam adres lub numer; sprawdź, czy w Podglądzie pojawia się zdarzenie copyContact
WIECEJ_NIZ_1_MINUTA nie odpala brak zgody analytics_storage albo zgoda kliknięta na bieżącej stronie licznik startuje od następnej odsłony po udzieleniu zgody
CONTACT_TYPE nie widać w raportach parametr nie jest zarejestrowany jako wymiar niestandardowy albo minęło mniej niż 48 godzin zarejestruj wymiar i poczekaj
Konwersje Google Ads liczone podwójnie tagi z szablonu i zaimportowane z GA4 zdarzenia kluczowe są jednocześnie konwersjami głównymi zostaw jedno źródło jako główne
Zdarzenia podwójnie po aktualizacji szablonu w kontenerze zostały elementy ze starszej wersji usuń stare elementy przed publikacją

Zawartość kontenera

Kontener zawiera 16 tagów, 6 reguł i 10 zmiennych, wszystkie w folderze MILOWSKI.EU B2B GTM TEMPLATE v1.0. Po imporcie 7 tagów jest aktywnych, a 9 wstrzymanych.

Tagi

Tag Typ Stan po imporcie Reguła
GA4 – TAG GŁÓWNY – JEŚLI MASZ JUŻ TAG GOOGLE GA4 W GTM, USUŃ TEN. JEŚLI NIE, ZMIEŃ ID GA4 W ZMIENNYCH NA SWÓJ I WŁĄCZ Tag Google wstrzymany Wszystkie strony
Google Ads – TAG GŁÓWNY – JEŚLI MASZ JUŻ TAG GOOGLE ADS W GTM, USUŃ TEN. JEŚLI NIE, ZMIEŃ ID KONWERSJI W ZMIENNYCH NA SWÓJ I WŁĄCZ Tag Google wstrzymany Wszystkie strony
GA4 – CLICK_EMAIL Zdarzenie GA4 aktywny klik mailto
GA4 – CLICK_TEL Zdarzenie GA4 aktywny klik tel
GA4 – COPY_TEL_OR_MAIL Zdarzenie GA4 aktywny copyContact
GA4 – WIECEJ_NIZ_1_MINUTA Zdarzenie GA4 aktywny activeTime60s
GA4 – generate_lead Zdarzenie GA4 wstrzymany formSubmitSuccess
Google Ads – CLICK_EMAIL Konwersja Google Ads, raz na odsłonę wstrzymany klik mailto
Google Ads – CLICK_TEL Konwersja Google Ads, raz na odsłonę wstrzymany klik tel
Google Ads – COPY_TEL_OR_MAIL Konwersja Google Ads, raz na odsłonę wstrzymany copyContact
Google Ads – Conversion Linker Conversion Linker wstrzymany Wszystkie strony
cHTML – nasluch kopiowania kontaktu Własny kod HTML aktywny Wszystkie strony
cHTML – licznik aktywnego czasu Własny kod HTML aktywny, wymaga zgody analytics_storage Wszystkie strony
cHTML – listener Contact Form 7 Własny kod HTML wstrzymany Wszystkie strony
cHTML – zrodlo pierwszej i ostatniej wizyty do CRM Własny kod HTML wstrzymany, wymaga zgód analytics_storage i ad_storage Wszystkie strony
GA4 – GO_TO_MAP Zdarzenie GA4 aktywny klik mapa

Reguły

Reguła Typ Warunek
klik mailto Kliknięcie – tylko linki Click URL zaczyna się od mailto:, bez rozróżniania wielkości liter
klik tel Kliknięcie – tylko linki Click URL zaczyna się od tel: lub callto:
copyContact Zdarzenie niestandardowe wysyła je tag nasłuchu kopiowania
formSubmitSuccess Zdarzenie niestandardowe wysyła je listener Contact Form 7 albo kod programisty
activeTime60s Zdarzenie niestandardowe wysyła je licznik aktywnego czasu
klik mapa Kliknięcie – tylko linki Click URL zawiera adres Google Maps (google.*/maps, maps.google., maps.app.goo.gl, goo.gl/maps) albo OpenStreetMap (openstreetmap.org, osm.org)

Zmienne

Zmienna Typ Do czego służy
TU WSTAW ID SWOJEGO KONTA GA4 Stała identyfikator pomiaru GA4 dla tagu głównego i wszystkich zdarzeń GA4
TU WSTAW ID KONWERSJI GOOGLE ADS Stała cyfry z AW-… dla tagu głównego i konwersji Google Ads
DLV – copiedText Zmienna warstwy danych skopiowany kontakt, tylko w przeglądarce
JS – CONTACT_NORMALIZED Niestandardowy kod JavaScript kontakt w jednolitym zapisie dla tabeli etykiet; nie wysyłać
JS – CONTACT_TYPE Niestandardowy kod JavaScript email lub phone dla CONTACT_TYPE
JS – CONTACT_MASKED Niestandardowy kod JavaScript maska bi***(at)firma.pl albo ***789
LT – CONTACT_LABEL Tabela przeglądowa etykieta kontaktu albo maska, wysyłana jako link_text
DLV – formId Zmienna warstwy danych ID formularza dla form_id
DLV – formName Zmienna warstwy danych nazwa formularza dla form_name
DLV – leadSource Zmienna warstwy danych źródło leada dla lead_source, domyślnie formularz_www

Szablon włącza też zmienne wbudowane: Click URL, Click Text, Event, Page URL, Page Hostname, Page Path i Referrer.

Ograniczenia, historia wersji i pomoc

Szablon obejmuje pomiar, który działa tak samo na każdej stronie. Wszystko, co zależy od CMS, CRM lub narzędzi zewnętrznych, wymaga dostosowania.

  • Rozpoznawanie kopiowanych numerów jest ustawione na numery polskie (9 cyfr) oraz zagraniczne zapisane z + lub 00.
  • Formularzy innych niż Contact Form 7, czatów i kalendarzy rezerwacji szablon nie mierzy bez dostosowania.
  • Licznik czasu traktuje widoczną kartę jako aktywność, nawet gdy użytkownik nie rusza myszą.
  • Przyciski kontaktu działające przez JavaScript, a nie przez link mailto: lub tel:, wymagają osobnej reguły.
  • GO_TO_MAP mierzy tylko kliknięcia w link do mapy. Kliknięć wewnątrz mapy osadzonej na stronie (iframe) GTM nie widzi.
Wersja Data Zmiany
v1.0 2 października 2026 pierwsze wydanie

Wdrożenie szablonu z dopasowaniem formularzy, przekazywaniem źródła wizyt do CRM i testami wykonuje MILOWSKI.EU, cena od 499 zł netto. Zobacz zakres wdrożenia.

Wolisz, żebym zrobił to za Ciebie?
Wdrożenie szablonu od 499 zł netto, a w pakiecie kompletnym także Consent Mode v2, Microsoft Clarity, LinkedIn Insight Tag i Meta Pixel.
Zobacz zakres i ceny