{"id":13157,"date":"2026-09-25T18:25:00","date_gmt":"2026-09-25T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13157"},"modified":"2026-09-25T15:07:51","modified_gmt":"2026-09-25T13:07:51","slug":"tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/","title":{"rendered":"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze"},"content":{"rendered":"<p>Kontener mened\u017cera tag\u00f3w nie ma folder\u00f3w, kt\u00f3re co\u015b znacz\u0105, ani typ\u00f3w, kt\u00f3re grupuj\u0105, ani wyszukiwania rozumiej\u0105cego struktur\u0119. Ma list\u0119 posortowan\u0105 alfabetycznie, a ta lista stanowi ca\u0142y interfejs do odnajdywania.<\/p>\n<p>Przez to pierwsze s\u0142owo ka\u017cdej nazwy jest jedynym istniej\u0105cym grupowaniem. Konwencja nie jest wi\u0119c zami\u0142owaniem do porz\u0105dku &#8211; jest r\u00f3\u017cnic\u0105 mi\u0119dzy tagiem w trzy sekundy a trzystoma liniami do przeczytania.<\/p>\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/gtm-namenskonvention-pl.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\"\n     alt=\"Te same dziewi\u0119\u0107 tag\u00f3w kontenera, po lewej posortowane alfabetycznie wed\u0142ug dowolnych nazw, po prawej wed\u0142ug schematu przedrostk\u00f3w grupuj\u0105cego je w trzy bloki\"><figcaption>Ta sama lista, to samo sortowanie. Zmieni\u0142o si\u0119 tylko pierwsze s\u0142owo, a platforma grupuje sama z siebie.<\/figcaption><\/figure>\n<h2>Dlaczego nazwa jest jedynym porz\u0105dkiem<\/h2>\n<p>Foldery istniej\u0105 i warto ich u\u017cywa\u0107, lecz nie zmieniaj\u0105 nic w dw\u00f3ch miejscach, w kt\u00f3rych nazwa jest naprawd\u0119 czytana: w polu wyszukiwania i w odwo\u0142aniu wewn\u0105trz innego elementu. Regu\u0142a pojawia si\u0119 pod tagiem pod w\u0142asn\u0105 nazw\u0105, zmienna pojawia si\u0119 w polu pod w\u0142asn\u0105 nazw\u0105, a \u017cadne z nich nie pokazuje, w kt\u00f3rym folderze le\u017cy.<\/p>\n<p>Sama lista jest drugim powodem. Sortowanie jest domy\u015blnie alfabetyczne wed\u0142ug nazwy, wi\u0119c wszystko, co ma pojawia\u0107 si\u0119 razem, musi zaczyna\u0107 si\u0119 od tych samych znak\u00f3w. To warunek brzegowy, a nie upodobanie, a konwencja go pomijaj\u0105ca wytwarza nazwy opisowe i bezu\u017cyteczne.<\/p>\n<p>Trzeci punkt wyznacza kierunek schematu: nazwy sortuj\u0105 si\u0119 od lewej do prawej. Najwa\u017cniejsze rozr\u00f3\u017cnienie nale\u017cy wi\u0119c na prz\u00f3d, a najdrobniejszy szczeg\u00f3\u0142 na koniec. Kt\u00f3re rozr\u00f3\u017cnienie jest najwa\u017cniejsze, to jedyne pytanie warte om\u00f3wienia przed pierwsz\u0105 nazw\u0105 &#8211; dla wi\u0119kszo\u015bci kontener\u00f3w jest nim platforma, bo od niej pytanie zwykle si\u0119 zaczyna.<\/p>\n<h2>Konwencja prze\u017cywaj\u0105ca trzysta tag\u00f3w<\/h2>\n<p>Wystarcz\u0105 trzy cz\u0142ony rozdzielone jednolicie. Wi\u0119cej cz\u0142on\u00f3w wygl\u0105da dok\u0142adniej i zostaje skr\u00f3cone przez tego, komu si\u0119 spieszy.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>Tagi       &lt;Platforma&gt; - &lt;Rodzaj&gt; - &lt;Co&gt;\n           GA4 - Event - add_to_cart\n           GA4 - Config - Alle Seiten\n           Meta - Event - purchase\n           Sonstige - Conversion Linker\n\nReguly     &lt;Rodzaj&gt; - &lt;Warunek&gt;\n           CE - add_to_cart\n           PV - kasse\n           Klick - cta-kopfbereich\n\nZmienne    &lt;Zrodlo&gt; - &lt;Nazwa&gt;\n           DLV - ecommerce.items\n           JS - artikelliste\n           Const - GA4 Mess-ID\n           LT - laendercode<\/code><\/pre>\n<p>Skr\u00f3ty rodzaj\u00f3w regu\u0142 i zmiennych s\u0105 zamierzone. S\u0105 do\u015b\u0107 kr\u00f3tkie, by ciekawa cz\u0119\u015b\u0107 nazwy pozosta\u0142a widoczna w w\u0105skiej kolumnie, i skracaj\u0105 s\u0142owa, kt\u00f3rych u\u017cywa sam interfejs (Custom Event, Page View, Data Layer Variable) &#8211; nikt nie musi wi\u0119c uczy\u0107 si\u0119 drugiego s\u0142ownictwa.<\/p>\n<p>Dwie zasady trzymaj\u0105 to razem pod presj\u0105. Rozdzielnik jest zawsze ten sam &#8211; spacja, my\u015blnik, spacja &#8211; bo mieszanina my\u015blnik\u00f3w i dwukropk\u00f3w rozbija sortowanie w spos\u00f3b trudny do zauwa\u017cenia. A ostatni cz\u0142on nosi nazw\u0119 techniczn\u0105 dok\u0142adnie: tag do zdarzenia <code>add_to_cart<\/code> nazywa si\u0119 <code>add_to_cart<\/code>, a nie <code>Add to Cart<\/code> &#8211; wyszukanie nazwy zdarzenia znajduje wtedy tag, regu\u0142\u0119 i zmienn\u0105 za jednym razem.<\/p>\n<h2>Sprawdzenie zasobu<\/h2>\n<p>Eksport kontenera to plik JSON z trzema listami w \u015brodku, a sprawdzenie trzystu nazw wobec schematu jest kr\u00f3tkim skryptem, a nie popo\u0142udniem.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>import json, re, sys\n\nVORSATZ = {\n    \"tag\":      re.compile(r\"^(GA4|Meta|Ads|LinkedIn|TikTok|Sonstige) - \"),\n    \"trigger\":  re.compile(r\"^(CE|PV|Klick|Formular|Timer|Sichtbar|Sonstige) - \"),\n    \"variable\": re.compile(r\"^(DLV|JS|Const|LT|URL|Cookie|Sonstige) - \"),\n}\n\ndaten = json.load(open(sys.argv[1]))[\"containerVersion\"]\n\nfor art, muster in VORSATZ.items():\n    posten = daten.get(art, [])\n    fehlt  = [p[\"name\"] for p in posten if not muster.match(p[\"name\"])]\n    print(f\"{art:9s} {len(posten) - len(fehlt):3d} von {len(posten):3d} nach Schema\")\n    for name in sorted(fehlt):\n        print(f\"            {name}\")<\/code><\/pre>\n<p>Z pierwszego przebiegu wychodz\u0105 zwykle dwie trzecie zgodne ze schematem i jedna trzecia niezgodna &#8211; a ta jedna trzecia rozpada si\u0119 na trzy grupy wymagaj\u0105ce odmiennego potraktowania.<\/p>\n<p>Nazwy po prostu stare po zmianie nazwy trzymaj\u0105 si\u0119 schematu i nic wi\u0119cej si\u0119 nie dzieje. Nazwy opisuj\u0105ce co\u015b, co nie jest ju\u017c w u\u017cyciu &#8211; tag dla porzuconej platformy &#8211; s\u0105 osobnym znaleziskiem i nale\u017c\u0105 na list\u0119 do skasowania, a nie do przemianowania. A nazwy z osob\u0105 albo dat\u0105 w \u015brodku &#8211; <code>Test Anna 03.02.<\/code> &#8211; to te do obejrzenia w pierwszej kolejno\u015bci, bo zwykle oznaczaj\u0105 co\u015b, co nigdy nie mia\u0142o zosta\u0107.<\/p>\n<h2>Zmiana nazw bez rozerwania odwo\u0142ania<\/h2>\n<p>Tutaj siedzi nier\u00f3wno\u015b\u0107 i to ona jest powodem, dla kt\u00f3rego masowa zmiana nazw wymaga sprawdzenia krzy\u017cowego.<\/p>\n<p>Tagi i regu\u0142y s\u0105 wewn\u0119trznie adresowane numerem. Zmiana ich nazw nie zmienia niczego w innym miejscu, a regu\u0142a uruchamiaj\u0105ca tag robi to dalej pod ka\u017cd\u0105 nazw\u0105.<\/p>\n<p>Przy zmiennych jest inaczej, bo zmienn\u0105 adresuje si\u0119 jej nazw\u0105 w podw\u00f3jnych nawiasach klamrowych. GTM przy zmianie nazwy uzupe\u0142nia te odwo\u0142ania w ca\u0142ym kontenerze &#8211; pole z <code>{{DLV - artikel}}<\/code> idzie razem, a wed\u0142ug zgodnych \u017ar\u00f3de\u0142 bran\u017cowych tak\u017ce nawiasy zapisane jako tekst w tagu HTML niestandardowym albo w zmiennej JavaScript niestandardowej. Pomoc Google tego zachowania nie opisuje; czy zadzia\u0142a\u0142o w danym kontenerze, pokazuje por\u00f3wnanie przed i po.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code># znalezc wszystkie odwolania nazwowe w eksporcie przed zmiana nazw\ngrep -o '{{[^}]*}}' export.json | sort | uniq -c | sort -rn | head -30<\/code><\/pre>\n<p>Puszczenie tego przed i po jest ca\u0142\u0105 siatk\u0105 bezpiecze\u0144stwa. Lista adresowanych nazw powinna by\u0107 identyczna poza tymi celowo zmienionymi, a ka\u017cda niezamierzona r\u00f3\u017cnica to odwo\u0142anie prowadz\u0105ce teraz w pr\u00f3\u017cni\u0119 &#8211; co GTM przy podgl\u0105dzie i publikacji zg\u0142asza jako b\u0142\u0105d \u201eUnknown variable\u201d.<\/p>\n<h2>Wykonanie w jednym obszarze roboczym<\/h2>\n<p>Zmiana nazw dwustu element\u00f3w to jedna zmiana z dwustoma wpisami i nale\u017cy do w\u0142asnego obszaru roboczego z trzech powod\u00f3w.<\/p>\n<p>Powstaj\u0105ca z niej wersja jest pojedynczym wpisem w historii kontenera &#8211; i dok\u0142adnie tego potrzebuje kole\u017canka ogl\u0105daj\u0105ca list\u0119 zmian za p\u00f3\u0142 roku. Obszar roboczy dzielony przez zmian\u0119 nazw ze zmian\u0105 merytoryczn\u0105 czyni obie trudniejszymi do sprawdzenia i niemo\u017cliwymi do osobnego wycofania.<\/p>\n<p>Podgl\u0105d dzia\u0142a wewn\u0105trz obszaru roboczego dalej, wi\u0119c ca\u0142y kontener da si\u0119 przed publikacj\u0105 raz przej\u015b\u0107 &#8211; a przej\u015b\u0107 nale\u017cy celowo ka\u017cdy niestandardowy tag HTML, bo tam odwo\u0142ania stoj\u0105 w kodzie jako ci\u0105gi znak\u00f3w i tam wida\u0107, czy zmiana nazwy je obj\u0119\u0142a.<\/p>\n<p>A kontener da si\u0119 wyeksportowa\u0107 z obszaru roboczego przed publikacj\u0105, co daje plik do por\u00f3wnania z poprzednim. Dwa eksporty, jeden <code>grep<\/code> i pytanie, czy co\u015b si\u0119 rozpad\u0142o, zostaje rozstrzygni\u0119te bez zgadywania.<\/p>\n<h2>Utrzymanie tego stanu<\/h2>\n<p>Konwencja rozpada si\u0119 w tempie, w jakim ludzie w po\u015bpiechu co\u015b dodaj\u0105, a trzy nawyki hamuj\u0105 to mocniej ni\u017c dokument.<\/p>\n<p>Skrypt sprawdzaj\u0105cy nale\u017cy tam, gdzie dzia\u0142a sam z siebie. Raz w miesi\u0105cu wobec \u015bwie\u017cego eksportu wystarczy, a wynik jest kr\u00f3tki: albo wszystko pasuje, albo wymienia trzy elementy do\u0142o\u017cone od ostatniego przebiegu.<\/p>\n<p>Schemat nale\u017cy do kontenera, a nie do wiki. Element notatkowy &#8211; tag, kt\u00f3ry nigdy nie dzia\u0142a, nazwany <code>0 - Namensschema<\/code>, aby sortowa\u0142 si\u0119 na g\u00f3r\u0119 &#8211; niesie konwencj\u0119 tam, gdzie osoba w\u0142a\u015bnie co\u015b nazywaj\u0105ca i tak patrzy.<\/p>\n<p>A list\u0119 do skasowania z przegl\u0105du warto odrobi\u0107, zamiast od\u0142o\u017cy\u0107. Kontener z czterdziestoma wstrzymanymi tagami, kt\u00f3rych nikt nie rozpoznaje, to kontener, w kt\u00f3rym konwencja zostanie znowu pomini\u0119ta, bo lista jest ju\u017c nieczytelna &#8211; a najszybsz\u0105 drog\u0105 do listy czytelnej jest lista kr\u00f3tsza.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy zmienne dostarczane przez sam GTM, takie jak Page URL, te\u017c musz\u0105 trzyma\u0107 si\u0119 schematu?<\/h3>\n<p>Nie, i nawet nie mog\u0105. Zmienne wbudowane (Built-in Variables), takie jak Page URL czy Click Classes, nosz\u0105 nazwy nadane przez Google; da si\u0119 je w\u0142\u0105cza\u0107 i wy\u0142\u0105cza\u0107, ale nie da si\u0119 zmieni\u0107 ich nazw. W eksporcie kontenera znajduj\u0105 si\u0119 na osobnej li\u015bcie <code>builtInVariable<\/code>, a nie pod <code>variable<\/code>, wi\u0119c skrypt sprawdzaj\u0105cy sam je pomija. Na li\u015bcie odwo\u0142a\u0144 z grep wprawdzie si\u0119 pojawiaj\u0105, ale przed zmian\u0105 nazw i po niej pozostaj\u0105 takie same i nie zak\u0142\u00f3caj\u0105 por\u00f3wnania.<\/p>\n<h3>Czy comiesi\u0119czne sprawdzenie da si\u0119 uruchamia\u0107 bez ka\u017cdorazowego r\u0119cznego eksportu kontenera?<\/h3>\n<p>Tak, przez Tag Manager API. Zwraca ono opublikowan\u0105 wersj\u0119 kontenera z tymi samymi listami <code>tag<\/code>, <code>trigger<\/code> i <code>variable<\/code>, kt\u00f3re zawiera eksport. R\u00f3\u017cnica le\u017cy w opakowaniu: eksport z interfejsu umieszcza wersj\u0119 pod kluczem <code>containerVersion<\/code>, a odpowied\u017a API jest sam\u0105 wersj\u0105. Skrypt wymaga wi\u0119c jedynie drobnej zmiany w miejscu, w kt\u00f3rym wczytuje plik.<\/p>\n<p>Do dost\u0119pu wystarczy konto us\u0142ugi z uprawnieniem do odczytu (Read) kontenera i zakres <code>tagmanager.readonly<\/code>. Uprawnienia do zapisu s\u0105 przy sprawdzaniu zb\u0119dne i lepiej, \u017ceby ich nie by\u0142o: zadanie, kt\u00f3re niczego nie mo\u017ce zmieni\u0107, niczego te\u017c nie zepsuje. Konto us\u0142ugi dodaje si\u0119 w zarz\u0105dzaniu u\u017cytkownikami kontenera przez podanie jego adresu e-mail, tak samo jak osob\u0119.<\/p>\n<p>Pozostaje jedna r\u00f3\u017cnica w por\u00f3wnaniu z eksportem: opublikowana wersja nie pokazuje tego, co w\u0142a\u015bnie powstaje w otwartych obszarach roboczych. Sprawdzenie tak\u017ce nieopublikowanych nazw wymaga dodatkowego odczytu obszar\u00f3w roboczych, kt\u00f3re API r\u00f3wnie\u017c udost\u0119pnia.<\/p>\n<h3>Czy przy kontenerze obs\u0142uguj\u0105cym kilka witryn na pocz\u0105tek nazwy powinna trafi\u0107 witryna?<\/h3>\n<p>Tylko wtedy, gdy wi\u0119kszo\u015b\u0107 pyta\u0144 kierowanych do kontenera zaczyna si\u0119 od witryny. Platforma stoi na pocz\u0105tku, bo od niej zwykle zaczyna si\u0119 wyszukiwanie; przy kontenerze dla kilku witryn tym punktem wyj\u015bcia mo\u017ce by\u0107 witryna. Liczy si\u0119 to, \u017ceby wyb\u00f3r zapad\u0142 raz i obowi\u0105zywa\u0142 wszystkie elementy, bo schemat zaczynaj\u0105cy si\u0119 raz od platformy, a raz od witryny, rozbija sortowanie tak samo jak mieszane rozdzielniki.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\" target=\"_blank\" rel=\"noopener noreferrer\">Google Tag Manager documentation<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Kontener sortuje list\u0119 alfabetycznie i nie oferuje \u017cadnego innego porz\u0105dku &#8211; przez co pierwsze s\u0142owo ka\u017cdej nazwy jest jedynym istniej\u0105cym grupowaniem. Zmiana nazwy trzystu z nich jest przy tagach i regu\u0142ach bezpieczna, przy zmiennych ju\u017c nie.<\/p>\n","protected":false},"author":1,"featured_media":13260,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[117],"tags":[92229,92133,92238],"class_list":["post-13157","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl","tag-devops-pl","tag-google-tag-manager-pl","tag-tutorial-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze - Lukas Wojcik - Blog<\/title>\n<meta name=\"description\" content=\"Schemat przedrostk\u00f3w na trzysta tag\u00f3w, sprawdzenie zasobu z eksportu kontenera i jedna zmiana nazwy rozrywaj\u0105ca odwo\u0142ania.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Schemat przedrostk\u00f3w na trzysta tag\u00f3w, sprawdzenie zasobu z eksportu kontenera i jedna zmiana nazwy rozrywaj\u0105ca odwo\u0142ania.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-25T16:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze\",\"datePublished\":\"2026-09-25T16:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/\"},\"wordCount\":1414,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png\",\"keywords\":[\"DevOps\",\"Google Tag Manager\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/\",\"name\":\"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png\",\"datePublished\":\"2026-09-25T16:25:00+00:00\",\"description\":\"Schemat przedrostk\u00f3w na trzysta tag\u00f3w, sprawdzenie zasobu z eksportu kontenera i jedna zmiana nazwy rozrywaj\u0105ca odwo\u0142ania.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze - Lukas Wojcik - Blog","description":"Schemat przedrostk\u00f3w na trzysta tag\u00f3w, sprawdzenie zasobu z eksportu kontenera i jedna zmiana nazwy rozrywaj\u0105ca odwo\u0142ania.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze - Lukas Wojcik - Blog","og_description":"Schemat przedrostk\u00f3w na trzysta tag\u00f3w, sprawdzenie zasobu z eksportu kontenera i jedna zmiana nazwy rozrywaj\u0105ca odwo\u0142ania.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-25T16:25:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze","datePublished":"2026-09-25T16:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/"},"wordCount":1414,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png","keywords":["DevOps","Google Tag Manager","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/","name":"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png","datePublished":"2026-09-25T16:25:00+00:00","description":"Schemat przedrostk\u00f3w na trzysta tag\u00f3w, sprawdzenie zasobu z eksportu kontenera i jedna zmiana nazwy rozrywaj\u0105ca odwo\u0142ania.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13157-tutorial-ustalenie-konwencji-nazw-gtm-i-.png","width":1200,"height":630,"caption":"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-ustalenie-konwencji-nazw-gtm-i-wprowadzenie-jej-w-istniejacym-kontenerze\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Ustalenie konwencji nazw GTM i wprowadzenie jej w istniej\u0105cym kontenerze"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13157"}],"version-history":[{"count":2,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13157\/revisions"}],"predecessor-version":[{"id":20617,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13157\/revisions\/20617"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13260"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}