{"id":13155,"date":"2026-09-25T12:45:00","date_gmt":"2026-09-25T10:45:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13155"},"modified":"2026-10-26T12:11:14","modified_gmt":"2026-10-26T11:11:14","slug":"tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/","title":{"rendered":"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen"},"content":{"rendered":"<p>Eine einheitliche Namenskonvention erleichtert das \u00dcberfliegen, Suchen und Pr\u00fcfen eines gro\u00dfen Google-Tag-Manager-Containers. Namen erg\u00e4nzen Ordner, Elementtypen und die Arbeitsbereichsoberfl\u00e4che. Das erste Wort ist nicht die einzige Ordnungsm\u00f6glichkeit. Eine sinnvolle Umstellung macht den Zweck der Elemente klarer und erh\u00e4lt das bisherige Messverhalten.<\/p>\n<h2>Ein kleines, eindeutiges Schema<\/h2>\n<p>Ein m\u00f6gliches Schema verwendet drei Abschnitte f\u00fcr Tags und zwei f\u00fcr Ausl\u00f6ser sowie benutzerdefinierte Variablen. Das ist eine Projektentscheidung und keine GTM-Vorgabe. Das folgende Beispiel nutzt in allen Sprachfassungen gemeinsame englische Pr\u00e4fixe, damit derselbe Pr\u00fcfer zu allen Beispielen passt.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"plain\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Text<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-plain\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">GA4 - Event - add_to_cart\n<\/span><span class=\"cbb-line\">Meta - Event - purchase\n<\/span><span class=\"cbb-line\">Ads - Linker - All pages\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">CE - add_to_cart\n<\/span><span class=\"cbb-line\">PV - checkout\n<\/span><span class=\"cbb-line\">Click - header_cta\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">DLV - ecommerce.items\n<\/span><span class=\"cbb-line\">JS - item_list\n<\/span><span class=\"cbb-line\">Const - GA4 measurement ID\n<\/span><span class=\"cbb-line\">LT - country_code<\/span><\/code><\/pre><\/figure>\n<p>CE steht hier f\u00fcr Custom Event (benutzerdefiniertes Ereignis), PV f\u00fcr Page View (Seitenaufruf), DLV f\u00fcr Data Layer Variable (Datenschichtvariable) und LT f\u00fcr Lookup Table (Zuordnungstabelle). JS bezeichnet in dieser Konvention eine benutzerdefinierte JavaScript-Variable. Diese K\u00fcrzel ben\u00f6tigen eine dokumentierte Bedeutung; GTM leitet daraus keinen Elementtyp ab.<\/p>\n<p>Der einheitliche Trenner lautet <code> - <\/code>. Bei alphabetischer Namenssortierung stehen gemeinsame Pr\u00e4fixe beieinander. Gemischte Trenner erschweren die Einheitlichkeit, zerst\u00f6ren aber keine Sortierung. Im letzten Abschnitt bleibt ein relevanter technischer Bezeichner wie <code>add_to_cart<\/code> erhalten. Eine fachlich unabh\u00e4ngige Variable muss diesen Ereignisnamen nicht enthalten.<\/p>\n<p>Die Plattform am Anfang passt zu einer nach Zielsystem organisierten Arbeit. Bei mehreren Websites kann die Website wichtiger sein; daf\u00fcr braucht der Pr\u00fcfer entsprechende Regeln. Ein Anzeigename w\u00e4hlt weder die Tag-Vorlage noch das versendete Ereignis aus. Alte Namen wie \u201eGA4 Config\u201c sind deshalb keine verl\u00e4ssliche Angabe des heutigen Vorlagentyps. Auch Googles Oberfl\u00e4chen\u00e4nderungen von 2026 sprechen gegen starre Annahmen \u00fcber Men\u00fcs.<\/p>\n<figure class=\"lw-diagram\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-13155-gtmnaming-20261025.png\" width=\"1120\" height=\"580\" loading=\"lazy\" decoding=\"async\" alt=\"Neun beispielhafte Tag-Namen vor der Umbenennung und danach nach einem einheitlichen Pr\u00e4fixschema gruppiert.\"><figcaption>Namen erleichtern das \u00dcberfliegen; Ordner bleiben verf\u00fcgbar. Umbenennungen ben\u00f6tigen weiterhin eine Referenz- und Funktionspr\u00fcfung.<\/figcaption><\/figure>\n<h2>Mehr als nur das Pr\u00e4fix pr\u00fcfen<\/h2>\n<p>Ein vollst\u00e4ndiger Export des vorgesehenen Arbeitsbereichs bildet den Ausgangsstand. Ein Teilexport kann Abh\u00e4ngigkeiten auslassen und taugt nicht als Beleg f\u00fcr den vollst\u00e4ndigen Containerzustand. Eine ContainerVersion enth\u00e4lt mehr als drei Listen; dieser Pr\u00fcfer betrachtet bewusst nur Tags, Ausl\u00f6ser und benutzerdefinierte Variablen.<\/p>\n<p>Das folgende Python-3-Beispiel wird als <code>naming-audit.py<\/code> gespeichert. Ein erlaubtes Pr\u00e4fix gen\u00fcgt nicht: <code>GA4 - <\/code> f\u00e4llt wegen fehlender Abschnitte durch. Der Pr\u00fcfer liest einen Oberfl\u00e4chenexport mit <code>containerVersion<\/code> oder eine direkte ContainerVersion-Antwort der API. Eingabefehler liefern Exitcode 2, Namensbefunde liefern 1 und eine abgeschlossene Namenspr\u00fcfung ohne Befund liefert 0.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"python\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Python<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-python\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> json\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> re\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> sys\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">from<\/span> pathlib <span class=\"cbb-keyword\">import<\/span> Path\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\"># Project convention, not a Google requirement.<\/span>\n<\/span><span class=\"cbb-line\">PREFIXES = {\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"tag\"<\/span>: {<span class=\"cbb-string\">\"GA4\"<\/span>, <span class=\"cbb-string\">\"Google\"<\/span>, <span class=\"cbb-string\">\"Meta\"<\/span>, <span class=\"cbb-string\">\"Ads\"<\/span>, <span class=\"cbb-string\">\"LinkedIn\"<\/span>, <span class=\"cbb-string\">\"TikTok\"<\/span>, <span class=\"cbb-string\">\"Other\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"trigger\"<\/span>: {<span class=\"cbb-string\">\"CE\"<\/span>, <span class=\"cbb-string\">\"PV\"<\/span>, <span class=\"cbb-string\">\"Click\"<\/span>, <span class=\"cbb-string\">\"Form\"<\/span>, <span class=\"cbb-string\">\"Timer\"<\/span>, <span class=\"cbb-string\">\"Visible\"<\/span>, <span class=\"cbb-string\">\"Other\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"variable\"<\/span>: {<span class=\"cbb-string\">\"DLV\"<\/span>, <span class=\"cbb-string\">\"JS\"<\/span>, <span class=\"cbb-string\">\"Const\"<\/span>, <span class=\"cbb-string\">\"LT\"<\/span>, <span class=\"cbb-string\">\"URL\"<\/span>, <span class=\"cbb-string\">\"Cookie\"<\/span>, <span class=\"cbb-string\">\"Other\"<\/span>},\n<\/span><span class=\"cbb-line\">}\n<\/span><span class=\"cbb-line\">SEGMENTS = {<span class=\"cbb-string\">\"tag\"<\/span>: <span class=\"cbb-number\">3<\/span>, <span class=\"cbb-string\">\"trigger\"<\/span>: <span class=\"cbb-number\">2<\/span>, <span class=\"cbb-string\">\"variable\"<\/span>: <span class=\"cbb-number\">2<\/span>}\n<\/span><span class=\"cbb-line\">REF = re.<span class=\"cbb-function\">compile<\/span>(<span class=\"cbb-string\">r\"\\{\\{(&#91;^{}&#93;+)\\}\\}\"<\/span>)\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">audit<\/span>(document):\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">isinstance<\/span>(document, dict):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">\"Expected a JSON object\"<\/span>)\n<\/span><span class=\"cbb-line\">    version = document.<span class=\"cbb-function\">get<\/span>(<span class=\"cbb-string\">\"containerVersion\"<\/span>, document)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">isinstance<\/span>(version, dict) <span class=\"cbb-keyword\">or<\/span> <span class=\"cbb-keyword\">not<\/span> version.<span class=\"cbb-function\">get<\/span>(<span class=\"cbb-string\">\"containerId\"<\/span>):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">\"Expected a container version with containerId\"<\/span>)\n<\/span><span class=\"cbb-line\">    report = {<span class=\"cbb-string\">\"counts\"<\/span>: {}, <span class=\"cbb-string\">\"violations\"<\/span>: &#91;&#93;, <span class=\"cbb-string\">\"references\"<\/span>: &#91;&#93;}\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">for<\/span> kind, allowed <span class=\"cbb-keyword\">in<\/span> PREFIXES.<span class=\"cbb-function\">items<\/span>():\n<\/span><span class=\"cbb-line\">        entities = version.<span class=\"cbb-function\">get<\/span>(kind, &#91;&#93;)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">isinstance<\/span>(entities, list):\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">f\"{kind}: expected an array\"<\/span>)\n<\/span><span class=\"cbb-line\">        report&#91;<span class=\"cbb-string\">\"counts\"<\/span>&#93;&#91;kind&#93; = <span class=\"cbb-function\">len<\/span>(entities)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">for<\/span> index, entity <span class=\"cbb-keyword\">in<\/span> <span class=\"cbb-function\">enumerate<\/span>(entities):\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">isinstance<\/span>(entity, dict):\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">ValueError<\/span>(<span class=\"cbb-string\">f\"{kind}&#91;{index}&#93;: expected an object\"<\/span>)\n<\/span><span class=\"cbb-line\">            name = entity.<span class=\"cbb-function\">get<\/span>(<span class=\"cbb-string\">\"name\"<\/span>)\n<\/span><span class=\"cbb-line\">            parts = name.<span class=\"cbb-function\">split<\/span>(<span class=\"cbb-string\">\" - \"<\/span>) <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">isinstance<\/span>(name, str) <span class=\"cbb-keyword\">else<\/span> &#91;&#93;\n<\/span><span class=\"cbb-line\">            valid = (<span class=\"cbb-function\">len<\/span>(parts) == SEGMENTS&#91;kind&#93;\n<\/span><span class=\"cbb-line\">                     <span class=\"cbb-keyword\">and<\/span> parts&#91;<span class=\"cbb-number\">0<\/span>&#93; <span class=\"cbb-keyword\">in<\/span> allowed\n<\/span><span class=\"cbb-line\">                     <span class=\"cbb-keyword\">and<\/span> <span class=\"cbb-function\">all<\/span>(part <span class=\"cbb-keyword\">and<\/span> part == part.<span class=\"cbb-function\">strip<\/span>()\n<\/span><span class=\"cbb-line\">                             <span class=\"cbb-keyword\">and<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">any<\/span>(<span class=\"cbb-function\">ord<\/span>(c) &lt; <span class=\"cbb-number\">32<\/span> <span class=\"cbb-keyword\">for<\/span> c <span class=\"cbb-keyword\">in<\/span> part)\n<\/span><span class=\"cbb-line\">                             <span class=\"cbb-keyword\">for<\/span> part <span class=\"cbb-keyword\">in<\/span> parts))\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> valid:\n<\/span><span class=\"cbb-line\">                report&#91;<span class=\"cbb-string\">\"violations\"<\/span>&#93;.<span class=\"cbb-function\">append<\/span>({\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-string\">\"kind\"<\/span>: kind, <span class=\"cbb-string\">\"id\"<\/span>: entity.<span class=\"cbb-function\">get<\/span>(kind + <span class=\"cbb-string\">\"Id\"<\/span>),\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-string\">\"index\"<\/span>: index, <span class=\"cbb-string\">\"name\"<\/span>: name,\n<\/span><span class=\"cbb-line\">                })\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">walk<\/span>(value, path):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">isinstance<\/span>(value, dict):\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">for<\/span> key, child <span class=\"cbb-keyword\">in<\/span> value.<span class=\"cbb-function\">items<\/span>():\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-function\">walk<\/span>(child, path + &#91;key&#93;)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">elif<\/span> <span class=\"cbb-function\">isinstance<\/span>(value, list):\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">for<\/span> index, child <span class=\"cbb-keyword\">in<\/span> <span class=\"cbb-function\">enumerate<\/span>(value):\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-function\">walk<\/span>(child, path + &#91;index&#93;)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">elif<\/span> <span class=\"cbb-function\">isinstance<\/span>(value, str):\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">for<\/span> <span class=\"cbb-keyword\">match<\/span> <span class=\"cbb-keyword\">in<\/span> REF.<span class=\"cbb-function\">finditer<\/span>(value):\n<\/span><span class=\"cbb-line\">                report&#91;<span class=\"cbb-string\">\"references\"<\/span>&#93;.<span class=\"cbb-function\">append<\/span>({\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-string\">\"path\"<\/span>: path, <span class=\"cbb-string\">\"kind\"<\/span>: <span class=\"cbb-string\">\"braces\"<\/span>, <span class=\"cbb-string\">\"name\"<\/span>: <span class=\"cbb-keyword\">match<\/span>.<span class=\"cbb-function\">group<\/span>(<span class=\"cbb-number\">1<\/span>)\n<\/span><span class=\"cbb-line\">                })\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">if<\/span> path <span class=\"cbb-keyword\">and<\/span> path&#91;<span class=\"cbb-number\">-1<\/span>&#93; == <span class=\"cbb-string\">\"tagName\"<\/span>:\n<\/span><span class=\"cbb-line\">                report&#91;<span class=\"cbb-string\">\"references\"<\/span>&#93;.<span class=\"cbb-function\">append<\/span>({\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-string\">\"path\"<\/span>: path, <span class=\"cbb-string\">\"kind\"<\/span>: <span class=\"cbb-string\">\"tagName\"<\/span>, <span class=\"cbb-string\">\"name\"<\/span>: value\n<\/span><span class=\"cbb-line\">                })\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">walk<\/span>(version, &#91;&#93;)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">return<\/span> report\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">main<\/span>():\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">len<\/span>(sys.argv) != <span class=\"cbb-number\">2<\/span>:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-function\">print<\/span>(<span class=\"cbb-string\">\"Usage: python3 naming-audit.py export.json\"<\/span>, file=sys.stderr)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">return<\/span> <span class=\"cbb-number\">2<\/span>\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">try<\/span>:\n<\/span><span class=\"cbb-line\">        document = json.<span class=\"cbb-function\">loads<\/span>(<span class=\"cbb-function\">Path<\/span>(sys.argv&#91;<span class=\"cbb-number\">1<\/span>&#93;).<span class=\"cbb-function\">read_text<\/span>(encoding=<span class=\"cbb-string\">\"utf-8-sig\"<\/span>))\n<\/span><span class=\"cbb-line\">        report = <span class=\"cbb-function\">audit<\/span>(document)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">except<\/span> (OSError, UnicodeError, ValueError) <span class=\"cbb-keyword\">as<\/span> exc:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-function\">print<\/span>(<span class=\"cbb-string\">f\"Input error: {exc}\"<\/span>, file=sys.stderr)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">return<\/span> <span class=\"cbb-number\">2<\/span>\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">print<\/span>(json.<span class=\"cbb-function\">dumps<\/span>(report, ensure_ascii=<span class=\"cbb-constant\">False<\/span>, indent=<span class=\"cbb-number\">2<\/span>))\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">return<\/span> <span class=\"cbb-number\">1<\/span> <span class=\"cbb-keyword\">if<\/span> report&#91;<span class=\"cbb-string\">\"violations\"<\/span>&#93; <span class=\"cbb-keyword\">else<\/span> <span class=\"cbb-number\">0<\/span>\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">if<\/span> __name__ == <span class=\"cbb-string\">\"__main__\"<\/span>:\n<\/span><span class=\"cbb-line\">    sys.<span class=\"cbb-function\">exit<\/span>(<span class=\"cbb-function\">main<\/span>())<\/span><\/code><\/pre><\/figure>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-function\">python3<\/span> naming-audit.py <span class=\"cbb-keyword\">export<\/span>.json <span class=\"cbb-operator\">&gt;<\/span> naming-report.json<\/span><\/code><\/pre><\/figure>\n<p>Der JSON-Bericht enth\u00e4lt alle Namensbefunde und m\u00f6gliche Referenzen mit einem strukturierten Fundpfad, der die genaue Stelle im Export zeigt. Die JSON-Dekodierung vor der Suche erfasst auch maskierte Klammern. Eine Begrenzung auf die ersten 30 Treffer entf\u00e4llt. Erfasst werden Zeichenfolgen mit <code>{{...}}<\/code> und <code>tagName<\/code>; w\u00f6rtliche Klammern, Notizen und dynamisch zusammengesetzte Namen ben\u00f6tigen weiterhin Einordnung. Das Verfahren ist weder ein GTM-Parser noch ein Beweis f\u00fcr vollst\u00e4ndig aufgel\u00f6ste Abh\u00e4ngigkeiten.<\/p>\n<p>Die Namenspr\u00fcfung kl\u00e4rt au\u00dferdem nicht, ob ein \u201eDLV\u201c-Element wirklich eine Datenschichtvariable ist, ob ein Tag noch ben\u00f6tigt wird oder ob eine Kampagne funktioniert. Das sind Aufgaben der fachlichen Pr\u00fcfung. Ein altes Datum, unbekannter Name oder pausiertes Tag ist ein Pr\u00fcfhinweis und keine automatische L\u00f6schentscheidung.<\/p>\n<h2>Verweise gesondert kontrollieren<\/h2>\n<p>Ausl\u00f6serzuweisungen verwenden Felder wie <code>firingTriggerId<\/code> und <code>blockingTriggerId<\/code>. Daraus folgt keine generelle Folgenlosigkeit von Tag-Umbenennungen. Zus\u00e4tzlich ben\u00f6tigen die Sequenzverweise unter <code>setupTag[].tagName<\/code> und <code>teardownTag[].tagName<\/code> eine Kontrolle im tats\u00e4chlichen Export; der Feldname allein ersetzt keine Pr\u00fcfung des bezeichneten Ziels. Tag-Anzeigenamen k\u00f6nnen au\u00dferdem in Monitoring-Metadaten eingehen.<\/p>\n<p>Variablenverweise enthalten Namen in doppelten geschweiften Klammern, auch in benutzerdefiniertem HTML und JavaScript. F\u00fcr eine Umbenennung in der Oberfl\u00e4che, ein API-Update und einen bearbeiteten JSON-Import l\u00e4sst sich kein identisches Aktualisieren s\u00e4mtlicher Verweise voraussetzen. Der vorgeschlagene Ablauf erfasst je Element eine Zeile mit Typ, ID, altem Namen und neuem Namen, benennt in einem getrennten Arbeitsbereich um und pr\u00fcft den anschlie\u00dfenden Export. Automatische Referenzanpassungen m\u00fcssen dort tats\u00e4chlich erkennbar sein.<\/p>\n<p>Eine Vorher-Nachher-Liste der Referenzen hilft, reicht aber nicht aus. Ein unver\u00e4ndert alter Name kann weiterhin defekt sein; eine beabsichtigte Abweichung kann korrekt sein. Der inhaltliche Vergleich umfasst zus\u00e4tzlich Ausl\u00f6serbedingungen, Tag-Parameter, Tag-Reihenfolgen, Einwilligungseinstellungen, Pausenstatus und Code. Globales Suchen und Ersetzen kann versendete Werte oder beliebigen Code ver\u00e4ndern und eignet sich daher nicht als Umbenennungsverfahren.<\/p>\n<h2>Umstellung und Abnahme<\/h2>\n<ol><li>Vollst\u00e4ndigen Ausgangsexport, Containerkennung und Version beziehungsweise Arbeitsbereich festhalten.<\/li><li>Pr\u00e4fixe, Bedeutung der Abschnitte und Ausnahmen vereinbaren; eine Umbenennungsliste anhand der IDs erstellen.<\/li><li>Umbenennungen m\u00f6glichst in einem eigenen Arbeitsbereich von L\u00f6schungen und Funktions\u00e4nderungen trennen.<\/li><li>Nach \u00dcbernahme anderer Arbeitsbereichs\u00e4nderungen Konflikte l\u00f6sen und betroffene Vergleiche wiederholen.<\/li><li>Vollst\u00e4ndigen Ergebnisexport pr\u00fcfen; betroffene Tags, Ausl\u00f6ser, Variablen und Tag-Reihenfolgen in der Vorschau testen.<\/li><li>Abgenommene \u00c4nderungen vor der Ver\u00f6ffentlichung in der Versionsbeschreibung festhalten.<\/li><\/ol>\n<p>Die Vorschau f\u00fchrt den Entwurf auf einer verbundenen Website aus; Test-Tags k\u00f6nnen dabei reale Anfragen versenden. Eine Testumgebung mit passenden Testzielen verhindert eine Vermischung des Umbenennungstests mit Produktionsmessungen. Der Status \u201eausgel\u00f6st\u201c allein beweist keine korrekten Zieldaten. Zur Pr\u00fcfung geh\u00f6ren die erwarteten Parameterwerte und Netzwerkanfragen.<\/p>\n<p>Ein eigener Arbeitsbereich erleichtert Pr\u00fcfung und R\u00fccknahme, doch Container-Versionen bilden einen gemeinsamen Verlauf. Das Wiederherstellen einer \u00e4lteren Version kann auch sp\u00e4tere unabh\u00e4ngige \u00c4nderungen zur\u00fccknehmen. F\u00fcr die geplante R\u00fccknahme sind Abh\u00e4ngigkeiten deshalb ebenso zu ber\u00fccksichtigen wie bei der Umstellung.<\/p>\n\n\n<!-- lw-flux-illu 13153-a4 -->\n<figure class=\"lw-illu\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/illustrationen\/flux-13153-a4.webp\" width=\"1120\" height=\"630\" loading=\"lazy\" decoding=\"async\" alt=\"Eine Harfe wird Saite f\u00fcr Saite neu bespannt, die alten Saiten liegen zum Vergleich bereit. Genauso wird beim Umbenennen Schritt f\u00fcr Schritt umgestellt und das Ergebnis mit dem alten Stand verglichen.\"><figcaption>Eine Harfe wird Saite f\u00fcr Saite neu bespannt, die alten Saiten liegen zum Vergleich bereit. Genauso wird beim Umbenennen Schritt f\u00fcr Schritt umgestellt und das Ergebnis mit dem alten Stand verglichen.<\/figcaption><\/figure>\n\n\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Geh\u00f6ren integrierte Variablen zur Namenspr\u00fcfung?<\/h3>\n<p>Nein. Integrierte Variablen wie Page URL werden getrennt von benutzerdefinierten Variablen verwaltet und stehen in einer Version unter <code>builtInVariable<\/code>. Die Namensregeln benennen diese Standardeintr\u00e4ge nicht um. Verweise auf integrierte Variablen k\u00f6nnen trotzdem im Bericht auftauchen.<\/p>\n<h3>L\u00e4sst sich die Pr\u00fcfung automatisieren?<\/h3>\n<p>Die API-Methode <code>accounts.containers.versions.live<\/code> liefert die ver\u00f6ffentlichte ContainerVersion direkt und akzeptiert den Bereich <code>tagmanager.readonly<\/code>. Erforderlich sind API-Aktivierung, OAuth-Autorisierung und Zugriff auf das betreffende Konto beziehungsweise den Container; ein Dienstkonto ist eine unterst\u00fctzte M\u00f6glichkeit. Leserechte vermeiden unn\u00f6tige Schreibbefugnisse, ersetzen aber nicht den angemessenen Umgang mit Exporten und Zugangsdaten.<\/p>\n<p>Die Live-Version enth\u00e4lt keine unfertigen \u00c4nderungen aus Arbeitsbereichen. Eine Arbeitsbereichspr\u00fcfung ben\u00f6tigt die entsprechenden Listen-Endpunkte einschlie\u00dflich aller Ergebnisseiten oder einen vollst\u00e4ndigen Arbeitsbereichsexport. Monatliche Pr\u00fcfungen sind ein m\u00f6glicher Rhythmus; f\u00fcr die Durchsetzung der Konvention ist eine Kontrolle vor jeder Ver\u00f6ffentlichung oft hilfreicher.<\/p>\n<h3>Wo geh\u00f6rt die Konvention hin?<\/h3>\n<p>Ein gepflegtes Teamdokument mit Verweis aus den Containernotizen sowie passenden Element- und Versionsnotizen l\u00e4sst sich besser verwalten als ein k\u00fcnstliches Tag, das niemals ausl\u00f6sen darf. Ausnahmen geh\u00f6ren in dieselbe Dokumentation und in die Pr\u00fcfkonfiguration. Ein Notiz-Tag au\u00dferhalb der Namensregeln w\u00fcrde sonst bei jedem Pr\u00fcflauf erneut auffallen.<\/p>\n<\/div>\n<div class=\"lw-quellen\"><h2>Quellen<\/h2><ul><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/6231791?hl=en\">Google Tag Manager: Ordner<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/6106997?hl=en\">Google Tag Manager: Container exportieren und importieren<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/api\/reference\/rest\/v2\/accounts.containers.workspaces.tags\">Google Tag Manager API: Tag-Ressource, SetupTag und TeardownTag<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/6107167?hl=en\">Google Tag Manager: Benutzerdefinierte Tags<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/7683362?hl=en\">Google Tag Manager: Benutzerdefinierte Variablentypen f\u00fcr Websites<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/7059647?hl=en-PK\">Google Tag Manager: Arbeitsbereiche<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/6107056?hl=en\">Google Tag Manager: Container in der Vorschau pr\u00fcfen<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/api\/reference\/rest\/v2\/accounts.containers.versions\">Google Tag Manager API: ContainerVersion-Ressource<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/api\/reference\/rest\/v2\/accounts.containers.versions\/live\">Google Tag Manager API: versions.live<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/api\/v2\/authorization\">Google Tag Manager API: Autorisierung<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/api\/reference\/rest\/v2\/accounts.containers\">Google Tag Manager API: Container-Ressource<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/13543899?hl=en\">Google Tag Manager: Ank\u00fcndigung zu Google Tag und Tag Manager<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/17079602?hl=en\">Google Tag Manager: \u00c4nderungen an Google Tag und Tag Manager, 20. August 2026<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/api\/reference\/rest\/v2\/accounts.containers.workspaces.tags\/list\">Google Tag Manager API: tags.list und Ergebnisseiten<\/a><\/li><\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Eine einheitliche Namenskonvention erg\u00e4nzt GTM-Ordner und erleichtert die Pr\u00fcfung gro\u00dfer Container. Ein Python-Pr\u00fcfer kontrolliert vollst\u00e4ndige Namensabschnitte und erfasst m\u00f6gliche Referenzen. F\u00fcr die Umbenennung folgen ID-Zuordnung, Exportvergleich und Funktionstests.<\/p>\n","protected":false},"author":1,"featured_media":29406,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[115],"tags":[92214,92145,92235],"class_list":["post-13155","post","type-post","status-publish","format-standard","hentry","category-tutorials-de","tag-devops-de","tag-google-tag-manager-de","tag-tutorial-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Ein Pr\u00e4fixschema f\u00fcr dreihundert Tags, den Bestand aus dem Container-Export pr\u00fcfen und die eine Umbenennung, die Verweise zerreisst.\" \/>\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\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Ein Pr\u00e4fixschema f\u00fcr dreihundert Tags, den Bestand aus dem Container-Export pr\u00fcfen und die eine Umbenennung, die Verweise zerreisst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-25T10:45:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T11:11:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-13153-13155.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=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen\",\"datePublished\":\"2026-09-25T10:45:00+00:00\",\"dateModified\":\"2026-10-26T11:11:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/\"},\"wordCount\":1201,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-13153-13155.png\",\"keywords\":[\"DevOps\",\"Google Tag Manager\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/\",\"name\":\"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-13153-13155.png\",\"datePublished\":\"2026-09-25T10:45:00+00:00\",\"dateModified\":\"2026-10-26T11:11:14+00:00\",\"description\":\"Ein Pr\u00e4fixschema f\u00fcr dreihundert Tags, den Bestand aus dem Container-Export pr\u00fcfen und die eine Umbenennung, die Verweise zerreisst.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-13153-13155.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-13153-13155.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen\"}]},{\"@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: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen | Lukas Wojcik","description":"Ein Pr\u00e4fixschema f\u00fcr dreihundert Tags, den Bestand aus dem Container-Export pr\u00fcfen und die eine Umbenennung, die Verweise zerreisst.","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\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen | Lukas Wojcik","og_description":"Ein Pr\u00e4fixschema f\u00fcr dreihundert Tags, den Bestand aus dem Container-Export pr\u00fcfen und die eine Umbenennung, die Verweise zerreisst.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-25T10:45:00+00:00","article_modified_time":"2026-10-26T11:11:14+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-13153-13155.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen","datePublished":"2026-09-25T10:45:00+00:00","dateModified":"2026-10-26T11:11:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/"},"wordCount":1201,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-13153-13155.png","keywords":["DevOps","Google Tag Manager","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/","name":"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-13153-13155.png","datePublished":"2026-09-25T10:45:00+00:00","dateModified":"2026-10-26T11:11:14+00:00","description":"Ein Pr\u00e4fixschema f\u00fcr dreihundert Tags, den Bestand aus dem Container-Export pr\u00fcfen und die eine Umbenennung, die Verweise zerreisst.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-13153-13155.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-13153-13155.png","width":1200,"height":630,"caption":"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-eine-gtm-namenskonvention-festlegen-und-im-bestehenden-container-durchsetzen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Eine GTM-Namenskonvention festlegen und im bestehenden Container durchsetzen"}]},{"@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\/13155","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=13155"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13155\/revisions"}],"predecessor-version":[{"id":26803,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13155\/revisions\/26803"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/29406"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}