Google tag (gtag.js) to jedna biblioteka JavaScript, którą wklejasz w kod strony, żeby wysyłać dane do produktów Google, takich jak GA4 i Google Ads. Google Tag Manager to kontener, który ładuje i kontroluje wiele tagów, w tym Google tag, z poziomu panelu w przeglądarce. Ten sam cel, dwie różne drogi.

Przy pięciostronicowej witrynie z jedną usługą GA4 wklejony gtag.js w zupełności wystarczy. Przy czymkolwiek, co ma więcej niż jednego dostawcę, baner zgód albo więcej niż jedną osobę grzebiącą w trackingu, wygrywa GTM, i to bez dyskusji. Jedyna konfiguracja, której nigdy bym nie zaakceptował, to obie metody naraz dla tego samego identyfikatora tagu, bo tak powstają zdublowane zdarzenia page_view i współczynnik konwersji wyglądający na połowę prawdziwego.

Najważniejsze wnioski
  • Google tag (gtag.js) to kod na stronie. GTM to menedżer, który kod ładuje. W GTM Google tag jest po prostu jednym z typów tagów, o nazwie "Tag Google".
  • Google tag ma identyfikator tagu (G-, AW- albo GT-) i jedno lub więcej miejsc docelowych. Jeden identyfikator może zasilać jednocześnie GA4 i Google Ads.
  • Wklejony gtag.js ma sens przy malutkiej stronie z jednym miejscem docelowym i bez planów rozwoju. Cała reszta należy do GTM.
  • Ładowanie tego samego ID przez gtag.js i GTM wysyła każdy page_view dwa razy. To najczęstszy błąd podwójnego tagowania, jaki znajduję.
  • Migracja z gtag.js do GTM to robota na 5 kroków. Krok, który ludzie pomijają, to usunięcie starego snippetu, także tego wstrzykniętego przez wtyczkę.

Czym właściwie jest Google tag

Google tag to gtag.js, biblioteka serwowana z googletagmanager.com/gtag/js?id=G-XXXXXXX. Tak, biblioteka GA4 mieszka w domenie Tag Managera. To nazewnictwo myli wszystkich i właśnie dlatego "nie używam GTM" czasem znaczy "używam serwerów GTM, nie wiedząc o tym".

Instalacja polega na wklejeniu do <head> snippetu w tym stylu:

<script async src="https://www.googletagmanager.com/gtag/js?id=G-ABC123XYZ"></script>
        <script>
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
          gtag('config', 'G-ABC123XYZ');
        </script>
        

Linia config automatycznie wysyła page_view. Każde inne zdarzenie wymaga kolejnego wywołania gtag('event', ...), wpisanego w kod strony przez programistę.

Liczą się tu dwa pojęcia, a Google przeorganizował oba mniej więcej w 2023, więc starsze poradniki używają innych słów:

  • Identyfikator tagu. ID w snippecie. G- dla strumienia danych GA4, AW- dla Google Ads, GT- dla połączonego tagu Google.
  • Miejsca docelowe. Tam, gdzie lądują dane. Jeden Google tag może mieć kilka: na przykład strumień GA4 i konto Google Ads. Zarządzasz tym w ustawieniach tagu Google (w GA4: Administracja, Strumienie danych, Twój strumień, Skonfiguruj ustawienia tagu).

Ekran ustawień tagu Google trzyma też rzeczy, które kiedyś wymagały kodu: łączenie międzydomenowe, reguły ruchu wewnętrznego, niechciane odesłania. Te ustawienia działają niezależnie od tego, jak ładujesz tag, przez gtag.js czy przez GTM.

Czym jest GTM i gdzie w nim siedzi Google tag

GTM to kontener. Na stronę trafia jeden snippet, a od tej chwili dodajesz, zmieniasz i usuwasz tagi w panelu, z wersjonowaniem, podglądem i uprawnieniami. Jeśli chcesz dłuższej wersji, napisałem prosty poradnik o tym, czym jest Google Tag Manager.

W GTM Google tag to typ tagu o nazwie Tag Google. Od września 2023 zastąpił stary tag "Konfiguracja GA4". Podajesz mu identyfikator tagu, odpalasz na Inicjowanie - Wszystkie strony i robi to, co robiło wklejone wywołanie config. Zdarzenia idą potem przez tagi Google Analytics: zdarzenie GA4, które odwołują się do tego samego identyfikatora pomiaru.

Rzeczy, dla których GTM jest wart zachodu, siedzą wokół tagu, nie w nim:

  • Zmienne na wartości wielokrotnego użytku, jak identyfikator pomiaru czy właściwości użytkownika. Mój poradnik o zmiennych GTM omawia wbudowane, zdefiniowane przez użytkownika i te z warstwy danych.
  • Reguły, które odpalają zdarzenia na kliknięciach, wysłaniach formularzy czy własnych zdarzeniach z data layer, bez dotykania kodu strony.
  • Zmienne Tag Google: ustawienia konfiguracji, dzięki którym pięć tagów zdarzeń GA4 dzieli jeden zestaw parametrów.
  • Ustawienia zgody na każdym tagu, Google i spoza Google.

Google tag czy GTM: porównanie

Google tag (gtag.js) wklejony Google Tag Manager
Gdzie żyje W kodzie źródłowym albo motywie strony W kontenerze GTM, jeden snippet na stronie
Kto może zmienić Programista, przez wdrożenie Każdy z dostępem do kontenera, przez publikację
Dostawcy spoza Google Osobne snippety, jeden po drugim Meta, TikTok, LinkedIn, Hotjar jako tagi w jednym miejscu
Historia wersji To, co powie historia w gicie Każda opublikowana wersja, przywrócenie jednym kliknięciem
Testowanie Tag Assistant na żywej stronie Tryb podglądu, zanim cokolwiek trafi na produkcję
Blokada pod zgody Wywołania gtag('consent', ...) w kodzie Ustawienia zgody per tag plus Consent Mode
Waga strony Jedna biblioteka, lżej się nie da Kontener plus biblioteki, rośnie z liczbą tagów
Najlepsze dla 1 strona, 1 miejsce docelowe, bez planów zmian Wszystkiego innego

Wiersz o wadze strony to jedyny, w którym gtag.js wygrywa bezdyskusyjnie. Na malutkiej stronie to realna przewaga. Przestaje mieć znaczenie w dniu, w którym dokładasz pixel Mety.

Kiedy wklejony gtag.js wystarczy

Nie jestem fundamentalistą GTM. Są sytuacje, w których mówię klientowi, żeby nie komplikował.

Strona portfolio, jednostronicowy landing lokalnej firmy, serwis z dokumentacją, na którym nie ma czego konwertować. Jedna usługa GA4, page_view plus pomiar zaawansowany, zero reklam. Nikt nie będzie ruszał trackingu przez najbliższe dwa lata. Tu GTM to narzut: kolejne konto, kolejny login, kolejna rzecz do audytu.

To samo dotyczy części platform. Jeśli Twój CMS ma natywne pole na GA4 i nie potrzebujesz niczego poza odsłonami, korzystaj z niego. Tylko pamiętaj, że pod spodem to i tak gtag.js.

Pułapka polega na tym, że "nikt tego nie zmieni" rzadko jest prawdą. Gdy pierwszy raz ktoś zechce konwersję Google Ads, wracasz do kolejki u programisty.

Kiedy wygrywa GTM i dlaczego to mój standard

Trzy powody, w kolejności, w jakiej bolą.

Wielu dostawców. W chwili, gdy masz Google Ads, GA4 i Metę, wklejone snippety zamieniają się w stos, którego nikt nie jest właścicielem. W GTM każdy dostawca to tag z nazwą, regułą i właścicielem. Cały obraz widzisz na jednej liście.

Blokada pod zgody. Przy gtag.js zgody oznaczają napisanie gtag('consent', 'default', {...}) przed wywołaniem config i update po banerze, w kodzie, z poprawnym timingiem. Dla pixeli spoza Google piszesz osobną logikę. W GTM każdy tag ma Ustawienia zgody, a Consent Mode v2 ogarnia stronę Google. Da się to sprawdzić z jednego ekranu.

Wersjonowanie i przywracanie. Patryk, szef marketingu w poznańskiej firmie B2B od oprogramowania, miał GA4 wklejone w motyw. Programista przerobił nagłówek w maju 2026 i wyrzucił snippet. Nikt nie zauważył przez 19 dni.

Z GTM ten sam refaktor wyrzuciłby snippet kontenera dokładnie tak samo. Różnica jest w tym, jak głośno to widać. Brak kontenera zabija wszystkie tagi naraz i cotygodniowy monitoring łapie to w kilka dni. Pojedyncza brakująca linia config w pliku motywu wygląda jak słabszy miesiąc.

Mój standard dla każdej strony firmowej: GTM, z Google tagiem w środku. Wklejony gtag.js tylko wtedy, gdy umiem w jednym zdaniu powiedzieć, dlaczego GTM nie jest potrzebny.

Podwójne tagowanie: błąd, który dzieli Twoją konwersję na pół

Tu obie metody się zderzają. Strona ma gtag.js w motywie, a GTM ma Tag Google z tym samym ID G-. Odpalają oba. GA4 dostaje dwa zdarzenia page_view na jedno załadowanie strony.

GA4 ich nie scala. Sesje w większości zostają poprawne, bo oba hity mają ten sam identyfikator klienta i sesji, ale odsłony się podwajają, metryki zaangażowania się rozjeżdżają, a każdy współczynnik konwersji liczony od odsłon się sypie. Stronę GA4 tego problemu opisałem w tekście GTM a Google Analytics. Tu chodzi o to, skąd bierze się duplikat.

Gdzie chowa się drugi tag

  • Wtyczka w CMS. Site Kit by Google, pole "Analytics ID" w motywie, integracja Shopify albo WooCommerce. Każda z nich potrafi sama wstrzyknąć gtag.js.
  • Połączony identyfikator tagu. Jeśli Twój tag Google Ads AW- albo GT- ma dodany strumień GA4 jako miejsce docelowe, ładowanie tagu Ads wysyła też dane do GA4. Dodasz Tag Google dla GA4 w GTM i masz duplikat, nie widząc nigdzie w źródle żadnego ID G-.
  • Zapomniany snippet od agencji sprzed poprzedniej agencji.

Magdalena prowadzi sklep z dekoracjami wnętrz w Łodzi, około 2300 sesji dziennie. Jej GA4 pokazywało 4,1 odsłony na sesję i współczynnik konwersji zakupowej 0,6%, a Shopify mówił 1,3%.

Podgląd źródła: snippet G- w theme.liquid, zostawiony przez pierwszego programistę sklepu w 2022. GTM miał do tego Tag Google z tym samym ID. Usunąłem snippet z motywu we wtorek. Tydzień później było 2,1 odsłony na sesję, a współczynnik w GA4 wynosił 1,2%.

Jak to sprawdzić w 5 minut

Zrób te cztery kontrole w tej kolejności:

  • Otwórz stronę, podejrzyj źródło, wyszukaj gtag/js?id= i zanotuj każde ID.
  • Otwórz GTM i wypisz każdy Tag Google wraz z jego identyfikatorem.
  • W DevTools, karta Network, filtruj po collect?v=2. Przeładuj raz i policz żądania z en=page_view dla tego samego tid: więcej niż jedno oznacza podwójne tagowanie.
  • W GA4 sprawdź Administracja, Strumienie danych, Skonfiguruj ustawienia tagu, a potem połączone identyfikatory tagów pod kątem wspólnych miejsc docelowych.

Migracja z gtag.js do GTM krok po kroku

Jeśli przechodzisz z wklejonego kodu na GTM, kolejność ma znaczenie. Zrobisz to źle i masz dzień podwójnych danych albo dzień bez danych.

  1. Najpierw inwentaryzacja. Wypisz każde wywołanie gtag('event', ...) i gtag('config', ...) w kodzie, plus każde ID. Poradnik o audycie GTM ma listę kontrolną, która się do tego nadaje.
  2. Odbuduj w GTM, bez publikacji. Tag Google z tym samym identyfikatorem, tagi zdarzeń GA4 dla każdego własnego zdarzenia, ustawienia zgody i pushe do data layer w miejsce wklejonych wywołań zdarzeń.
  3. Testuj w podglądzie. Sprawdź każde zdarzenie w Tag Assistant i w DebugView GA4, ze starym snippetem nadal na stronie. Spodziewaj się tu duplikatów. To normalne, to podgląd.
  4. Zamień w jednym wydaniu. Usuń wklejony snippet i opublikuj kontener w tym samym oknie wdrożeniowym. Minuty różnicy, nie dni.
  5. Zweryfikuj następnego ranka. Odsłony na sesję, liczby zdarzeń i konwersje w porównaniu z poprzednim tygodniem. Nagły spadek o 50% albo skok o 100% oznacza, że coś nadal ładuje się podwójnie albo wcale.

Zostaw ten sam identyfikator pomiaru. Nie zakładaj nowej usługi GA4, "żeby zacząć na czysto". Stracisz ciągłość danych za zero korzyści.

Najczęstsze pytania

Czy Google tag to to samo co Google Tag Manager? Nie. Google tag (gtag.js) to jedna biblioteka wysyłająca dane do produktów Google. GTM to kontener zarządzający wieloma tagami, a Google tag jest jednym z typów tagów, które możesz w nim załadować.

Czy mogę używać gtag.js i GTM na tej samej stronie? Tak, ale nigdy z tym samym identyfikatorem tagu w obu miejscach. Jeśli gtag.js ładuje G-ABC123, a GTM też ma Tag Google dla G-ABC123, każdy page_view trafia do GA4 dwa razy. Jedna metoda na jedno ID.

Czy przy GTM nadal potrzebuję Google taga? Tak, w postaci typu tagu "Tag Google" w GTM. Nie potrzebujesz natomiast wklejonego snippetu na stronie. GTM sam załaduje gtag.js, gdy tag się odpali.

Czym różnią się identyfikatory G-, AW- i GT-? G- to strumień danych GA4, AW- to konto Google Ads, a GT- to tag Google, który może mieć kilka miejsc docelowych. Połączony tag potrafi wysyłać jednocześnie do GA4 i Google Ads i dlatego bywa źródłem ukrytego podwójnego tagowania.

Czy gtag.js jest szybszy od GTM? Odrobinę, bo to jedna biblioteka bez kontenera dookoła. Na stronie z samym GA4 różnica jest realna, ale mała. Gdy dokładasz innych dostawców, GTM zwykle wychodzi lżej niż ten sam zestaw wklejonych snippetów.

Skąd mam wiedzieć, czy moja strona jest podwójnie otagowana? W DevTools przefiltruj kartę Network po collect?v=2 i przeładuj stronę. Jeśli widzisz dwa żądania page_view dla tego samego identyfikatora pomiaru przy jednym załadowaniu, masz dwa tagi. Potem znajdź ten drugi: w kodzie źródłowym, we wtyczce albo w połączonym miejscu docelowym.

Co dalej

Otwórz teraz źródło swojej strony głównej i wyszukaj gtag/js. Jeśli go znajdziesz, a masz też GTM, sprawdź, czy ID się pokrywają. To jedno wyszukiwanie łapie problem, który w tym obszarze naprawiam najczęściej.

Jeśli siedzisz na wklejonym gtag.js i masz więcej niż jednego dostawcę, zaplanuj przejście na GTM. To dzień pracy i ostatni raz, kiedy do dodania konwersji potrzebujesz programisty.

Darmowy audyt GTM wypisuje każdy identyfikator tagu Google, który ładują Twoje strony, z kontenera i ze źródła, więc podwójne tagowanie wychodzi w jednym raporcie. Jeśli chcesz, żeby ktoś zrobił migrację albo na bieżąco pilnował kontenera, od tego jest konsulting i monitoring GTM.


Źródła i dalsza lektura - gtag.js, przegląd (Google for Developers) - Google Tag Manager dla stron www (Google for Developers) - Wdrożenie trybu zgody (Google for Developers)

Czy Twoja strona ładuje gtag.js i GTM jednocześnie?

Darmowy audyt GTM pokazuje każdy identyfikator tagu Google, który ładują Twoje strony, z kontenera i z kodu źródłowego, więc podwójne tagowanie widzisz w kilka minut.

Zacznij darmowy audyt GTM
Piotr Litwa

Piotr Litwa

GTM & Analytics Specialist

Piotr monitoruje kontenery GTM i usługi GA4 dla firm w całej Europie, wyłapując problemy z trackingiem, zanim zaczną kosztować konwersje. 120+ klientów, 10+ lat, zero outsourcingu.