{"id":10135,"date":"2026-09-13T12:37:00","date_gmt":"2026-09-13T10:37:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10135"},"modified":"2026-10-26T11:42:01","modified_gmt":"2026-10-26T10:42:01","slug":"tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/","title":{"rendered":"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren"},"content":{"rendered":"<p>Serverseitiges GTM erm\u00f6glicht Kontrolle \u00fcber Verarbeitung und Ziele von Messanfragen. Browser-Events \u00fcber einen Tagging-Server zu leiten und best\u00e4tigte K\u00e4ufe aus dem Shop-Backend zu senden sind zwei getrennte \u00c4nderungen. Vollst\u00e4ndige Analytics-Daten garantiert keiner der Wege: Einwilligung, fehlende Kennungen, Duplikate, Zustellfehler und Berichtsdefinitionen bleiben relevant.<\/p>\n<p id=\"gtm-update-20261019\"><strong>Update vom 19.10.2026:<\/strong> Die Endpunktbeispiele unterscheiden jetzt eigenst\u00e4ndiges gtag.js, GTM und optimierte Ziel-Tags. Die Containeroptimierung verschiebt die Messung nicht selbst auf einen Tagging-Server; entscheidend bleibt die tats\u00e4chliche Anfrageadresse. <a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-tag-manager-und-gtag-js-verschmelzen-was-sich-2026-andert\/\">Einordnung der Oktober\u00e4nderungen bei Google Tag und GTM<\/a>.<\/p>\n<p>Die Migration beginnt mit einem getrennten Testziel, beh\u00e4lt einen R\u00fcckweg zur vorherigen Konfiguration und pr\u00fcft einzelne Bestellungen vor der Produktionsumschaltung.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10135-migration-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Eine kontrollierte Migration trennt Routing, Backend-Zustellung und Bestellabgleich. Kein Weg garantiert vollst\u00e4ndige Analytics-Daten.\"><figcaption>Eine kontrollierte Migration trennt Routing, Backend-Zustellung und Bestellabgleich. Kein Weg garantiert vollst\u00e4ndige Analytics-Daten.<\/figcaption><\/figure>\n<h2>1. Den Vergleich festlegen<\/h2>\n<p>Der bisherige Produktionsweg bleibt aktiv; der neue Weg sendet zun\u00e4chst an eine separate Test-Property. Beide Kopien in derselben Produktions-Property k\u00f6nnen Events und Umsatz aufbl\u00e4hen. Eine gleiche Transaktions-ID ist kein allgemeiner Duplikatschutz f\u00fcr s\u00e4mtliche Ereignisse und Ziele.<\/p>\n<p>Test- und Produktions-Property brauchen vergleichbare Zeitzonen, W\u00e4hrungen, Eventdefinitionen, Filter und relevante Verkn\u00fcpfungen. Zwei bis vier Wochen k\u00f6nnen ein erster Beobachtungszeitraum sein; die n\u00f6tige Dauer h\u00e4ngt von Kaufzyklen, Traffic und verz\u00f6gerten Zahlungen ab. Abnahmekriterien umfassen fehlende und doppelte Bestellungen, Betr\u00e4ge, Einwilligungsverhalten und fehlgeschlagene Anfragen statt lediglich einer h\u00f6heren Kaufzahl.<\/p>\n<h2>2. Die vollst\u00e4ndige Serverumgebung bereitstellen<\/h2>\n<p>GTM bietet die automatische Cloud-Run-Bereitstellung. Eine manuelle Einrichtung braucht einen Vorschau-Server und einen produktiven Tagging-Dienst. Beide verwenden dieselbe Containerkonfiguration. Der Vorschau-Dienst erh\u00e4lt <code>RUN_AS_PREVIEW_SERVER=true<\/code>; der Tagging-Dienst bekommt dessen HTTPS-Adresse \u00fcber <code>PREVIEW_SERVER_URL<\/code>. Googles Anleitung beschreibt die vollst\u00e4ndige Reihenfolge. Ein einzelner Bereitstellungsbefehl f\u00fcr den Tagging-Dienst w\u00fcrde die Vorschau-Infrastruktur auslassen.<\/p>\n<p>Andere kompatible Docker-Umgebungen sind m\u00f6glich. Netzwerk, Zugangsdaten, Skalierung, Zustandspr\u00fcfungen und Image-Updates bleiben Betriebsaufgaben. Die Kapazit\u00e4t ist anhand tats\u00e4chlicher Last zu pr\u00fcfen. Die Ver\u00f6ffentlichung eines GTM-Arbeitsbereichs aktualisiert die Containerkonfiguration, nicht das Laufzeit-Image.<\/p>\n<p>Eine Same-Site-Subdomain oder ein Same-Origin-Pfad kann Erstanbieterkontext herstellen. Eine generierte Cloud-Adresse kann ebenfalls Events empfangen, geh\u00f6rt aber nicht zur Shop-Site. DNS, TLS, CSP und tats\u00e4chlicher Anfrageweg sind zu pr\u00fcfen. Ein eigener Hostname beseitigt weder Browserblockaden noch Cookie-Grenzen.<\/p>\n<h2>3. Empfangenden Client und ausgehendes Tag konfigurieren<\/h2>\n<p>Ein Client muss die Anfrage \u00fcbernehmen und das unterst\u00fctzte Format in Eventdaten umwandeln. Der vorinstallierte Google-Analytics-Client verarbeitet das unterst\u00fctzte Google-Tag-Format. Andere Protokolle ben\u00f6tigen einen passenden Client. Der Empfang allein liefert noch keine Daten an GA4: Zus\u00e4tzlich sind ein serverseitiges Ziel-Tag und dessen Ausl\u00f6ser erforderlich.<\/p>\n<p>Client-Aktivierung, Bereitstellung von Google-Skripten und Browserziel sind unterschiedliche Einstellungen. Der Browser muss Messanfragen ausdr\u00fccklich zum Server leiten. Einwilligungssignale und Transformationen m\u00fcssen entlang des gesamten Wegs erhalten bleiben; reine Browservariablen stehen im Server-Container nicht automatisch bereit.<\/p>\n<h2>4. Die vorhandene Webinstallation umstellen<\/h2>\n<p>In GTM geh\u00f6rt <code>server_container_url<\/code> je nach Installation in das Google Tag oder Google-Analytics-Ziel-Tag. Bei eigenst\u00e4ndigem gtag.js wird der Parameter in den vorhandenen Konfigurationsaufruf aufgenommen:<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"javascript\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JavaScript<\/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-javascript\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-function\">gtag<\/span>(<span class=\"cbb-string\">'config'<\/span>, <span class=\"cbb-string\">'G-XXXXXXXXXX'<\/span>, {\n<\/span><span class=\"cbb-line\">  server_container_url: <span class=\"cbb-string\">'https:\/\/sgtm.shop.example.com'<\/span>\n<\/span><span class=\"cbb-line\">});<\/span><\/code><\/pre><\/figure>\n<p>Mess-ID und Endpunkt sind Platzhalter. Das Fragment installiert weder gtag.js noch eine GTM-Konfiguration. Ein zus\u00e4tzlicher Konfigurationsaufruf kann das Seitenaufrufverhalten ver\u00e4ndern; vorhandene Einstellungen und Seitenaufrufregeln sind gezielt anzupassen.<\/p>\n<p>Die Netzwerkansicht im Browser best\u00e4tigt den tats\u00e4chlichen Endpunkt. Die Servervorschau pr\u00fcft danach zust\u00e4ndigen Client, Eventdaten, Einwilligungsstatus, Transformationen und ausgehendes Tag. Abschlie\u00dfend best\u00e4tigt das Testziel den Eingang. Eine erfolgreiche Antwort des Tagging-Servers allein beweist keine Verarbeitung durch GA4.<\/p>\n<h2>5. Backend-K\u00e4ufe als eigene Integration entwerfen<\/h2>\n<p>Ein Backend-Event kann mit einer best\u00e4tigten Bestellung entstehen, ohne auf das Laden der Best\u00e4tigungsseite zu warten. Die Analytics-Integration ben\u00f6tigt weiterhin erlaubte Erfassung, g\u00fcltige Daten und zuverl\u00e4ssige Zustellung. Eine l\u00e4ngere Kennungslebensdauer verl\u00e4ngert nicht automatisch eine GA4-Sitzung.<\/p>\n<p>Der Backend-Sender sollte eine dokumentierte Schnittstelle verwenden. Das direkte GA4 Measurement Protocol nutzt HTTPS POST an <code>\/mp\/collect<\/code>, Mess-ID des Webstreams und geheimes API-Secret in der URL sowie einen JSON-Body mit <code>client_id<\/code> und Events. Dieser direkte Weg umgeht den Tagging-Container. Ein Backend-Payload \u00fcber sGTM ben\u00f6tigt stattdessen einen ausdr\u00fccklich eingerichteten Client, ein unterst\u00fctztes Format, ein Authentifizierungsverfahren und die Zielzuordnung. Ein blo\u00dfer Hostnamenwechsel im JSON-Measurement-Protocol-Request belegt keine Kompatibilit\u00e4t mit dem eingebauten Client.<\/p>\n<p>F\u00fcr die Zuordnung zu einem Onlinebesuch m\u00fcssen zul\u00e4ssig erhobene Client- und Sitzungskennungen aus dem tats\u00e4chlichen Messkontext stammen, nicht aus einem angenommenen Cookie-Stringformat. Fehlende Kennungen brauchen eine eigene Regel; eine erfundene Sitzung w\u00fcrde die Attribution verf\u00e4lschen. F\u00fcr die Sitzungsattribution beim direkten Measurement Protocol gelten zus\u00e4tzliche Zeit- und Sitzungsbedingungen, unter anderem Eingang innerhalb von 24 Stunden nach Sitzungsbeginn und Ereigniszeitpunkt innerhalb dieser Sitzung.<\/p>\n<ol><li>Festlegen, welcher Vorgang als Kauf z\u00e4hlt, etwa eine best\u00e4tigte bezahlte Bestellung statt jeder Status\u00e4nderung.<\/li><li>Einen dauerhaften Zustelldatensatz mit eindeutigem Bestell-\/Eventschl\u00fcssel, Ereigniszeit, W\u00e4hrung, Artikeldaten und ma\u00dfgeblichem Einwilligungskontext speichern.<\/li><li>Die Kaufnutzlast validieren; Wert und Artikelbetr\u00e4ge m\u00fcssen zur vereinbarten Behandlung von Steuer, Versand und Rabatten passen.<\/li><li>Vor dem Versand die aktuelle Erlaubnis pr\u00fcfen, einschlie\u00dflich sp\u00e4teren Widerrufs soweit relevant. Backend-Versand ersetzt keine Einwilligungssteuerung.<\/li><li>Zustellversuche protokollieren und Fehler \u00fcber eine begrenzte Warteschlange mit festgelegter Wiederholungsregel behandeln. Ein Timeout bedeutet, dass keine rechtzeitige Antwort eingetroffen ist. Das Ereignis kann trotzdem beim Empf\u00e4nger angekommen sein. Eine Wiederholung muss deshalb gegen doppelte Z\u00e4hlung abgesichert sein.<\/li><\/ol>\n<p>Jede Bestellung braucht eine stabile, nicht leere <code>transaction_id<\/code>. GA4 dokumentiert die Kauf-Deduplizierung f\u00fcr Webstreams. Daraus folgt keine allgemeine Genau-einmal-Garantie \u00fcber Appstreams, Werbeziele oder eigene Exporte hinweg. Nach der Umschaltung sollte eine Komponente f\u00fcr das produktive Kaufereignis zust\u00e4ndig sein. Ein gleichzeitiger Browser- und Backendversand geh\u00f6rt in den getrennten Testaufbau.<\/p>\n<p>Beim direkten Measurement Protocol pr\u00fcft <code>\/debug\/mp\/collect<\/code> die Nutzlast, ohne Events in Berichte einzutragen. Eine produktive <code>2xx<\/code>-Antwort best\u00e4tigt den HTTP-Eingang, nicht die erfolgreiche Analytics-Verarbeitung. Geheimnisse geh\u00f6ren auf den Server und weder in Protokolle noch in Browsercode.<\/p>\n<h2>6. Abgleichen und umschalten<\/h2>\n<p>Der Vergleich ben\u00f6tigt dieselbe relevante Bestellmenge, Tagesgrenzen, W\u00e4hrungen und Umsatzdefinition. Ausgeschlossene Einwilligungszust\u00e4nde, versp\u00e4tete Zahlungen und Erstattungen brauchen gesonderte Erkl\u00e4rungen. H\u00f6here Zahlen allein belegen keine bessere Datenqualit\u00e4t. Die folgenden Werkzeuge unterst\u00fctzen die Pr\u00fcfung einzelner Bestellungen.<\/p>\n<p>Die Umschaltung ver\u00e4ndert jeweils einen produktiven Weg, deaktiviert den \u00fcberfl\u00fcssigen Kaufsender und \u00fcberwacht Zustellfehler, Duplikate, Attribution und Kosten. Die vorherige Konfiguration bleibt f\u00fcr eine R\u00fcckkehr verf\u00fcgbar; bereits zugestellte K\u00e4ufe d\u00fcrfen dabei nicht erneut eingespielt werden.<\/p>\n<div class=\"lw-gtm-related\" id=\"gtm-related-links-20261020\" style=\"margin:20px 0;color:var(--text-secondary);line-height:1.6;\"><p><strong>Passende Anleitungen und Werkzeuge:<\/strong><\/p><ul><li><a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/google-tag-gateway-was-es-an-einer-messanfrage-andert-und-worin-es-sich-vom-server-side-tagging-unterscheidet\/\">Google Tag Gateway und serverseitiges Tagging<\/a> \u2013 Erstanbieter-Routing, Nutzlasten und unterschiedliche Aufgaben.<\/li>\n<li><a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/csp-header-generator-tracking-linter\/\">CSP-Header-Generator<\/a> \u2013 Freigaben f\u00fcr Anbieter und Endpunkte vorbereiten.<\/li><\/ul><\/div><div class=\"lw-faq\"><h2>Fragen und Antworten<\/h2><h3>Reicht die eigene Subdomain, damit Safari das vom Server-Container gesetzte Cookie nicht k\u00fcrzt?<\/h3><p>Nein. Eine eigene Subdomain allein garantiert weder die volle Cookie-Laufzeit noch eine Ausnahme vom Tracking-Schutz. WebKit begrenzt die Laufzeit von Antwort-Cookies bei erkanntem CNAME- oder IP-Address-Cloaking durch Dritte. Ein Pfad \u00fcber die Website-Infrastruktur kann die ma\u00dfgeblichen Bedingungen \u00e4ndern, ergibt aber keine uneingeschr\u00e4nkte Laufzeitgarantie. Zu pr\u00fcfen sind tats\u00e4chlicher DNS- und Anfrageweg, Set-Cookie-Attribute und Browserregeln; die GTM-Containeroptimierung \u00e4ndert diese Punkte nicht automatisch.<\/p><\/div><div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\" rel=\"noopener noreferrer\" target=\"_blank\">Google Tag Manager: serverseitiges Tagging<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\" rel=\"noopener noreferrer\" target=\"_blank\">Google-Tag-Manager-Dokumentation<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\/ecommerce\" rel=\"noopener noreferrer\" target=\"_blank\">Google Analytics: E-Commerce-Ereignisse<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/4620708?hl=en\">Google Tag Manager: Versionshinweise vom 8. und 12. Oktober 2026<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/17079602?hl=en\">Google Tag und Tag Manager: vereinheitlichte Konfiguration<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/17231523?hl=en\">Google Tag: unterst\u00fctzte Installationswege<\/a><\/li><li><a href=\"https:\/\/support.google.com\/tagmanager\/answer\/15756616?hl=en\">Google Tag in Tag Manager: Einrichtung und Initialisierung<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\/send-data\">Serverseitiger Tag Manager: Daten senden<\/a><\/li><li><a href=\"https:\/\/webkit.org\/tracking-prevention\/\">WebKit: Tracking-Schutz<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\/manual-setup-guide\">Google Tag Manager: manuelle Servereinrichtung<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/protocol\/ga4\/sending-events\">Google Analytics: Measurement-Protocol-Ereignisse senden<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/protocol\/ga4\/reference\">Google Analytics: Measurement-Protocol-Referenz<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/protocol\/ga4\/use-cases\">Google Analytics: Anwendungsf\u00e4lle des Measurement Protocol<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/protocol\/ga4\/validating-events\">Google Analytics: Measurement-Protocol-Ereignisse pr\u00fcfen<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/12313109?hl=en\">Google Analytics: doppelte Schl\u00fcsselereignisse durch Transaktions-IDs verringern<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\/consent-mode\">Google Tag Manager: Consent Mode bei serverseitigem Tagging<\/a><\/li><\/ul>\n<\/div><p><!-- lw-analytics-reconcile-guide:start --><\/p>\n<h2>Praxiskontrolle: Bestellungen mit dem Shop-Export abgleichen<\/h2>\n<p>Das Werkzeug <a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/shop-ga4-revenue-reconciliation\/\">Shop-Umsatz und GA4 abgleichen<\/a> vergleicht zwei CSV-Dateien lokal. Die Bestell-ID bildet den gemeinsamen Schl\u00fcssel. Namen, E-Mail-Adressen und Kontaktdaten sind f\u00fcr diesen Abgleich nicht n\u00f6tig: Bestell-ID, Betrag und W\u00e4hrung gen\u00fcgen.<\/p>\n<ol>\n<li>Beide Exporte f\u00fcr denselben Zeitraum und dieselbe Zeitzone vorbereiten. Steuern, Versand und Erstattungen m\u00fcssen gleich behandelt werden. Artikelpositionen und Erstattungen vorab zu einem vereinbarten Betrag je Bestellung zusammenfassen.<\/li>\n<li>Trennzeichen und Dezimalzeichen je Datei w\u00e4hlen, Datei laden und die Spalten f\u00fcr Bestell-ID, Betrag und W\u00e4hrung zuordnen. Kennungen mit f\u00fchrenden Nullen bleiben Text.<\/li>\n<li>Nachkommastellen und eine ausdr\u00fcckliche Toleranz je Bestellung w\u00e4hlen. Es findet keine W\u00e4hrungsumrechnung statt.<\/li>\n<li>Die getrennten Gruppen pr\u00fcfen: auf einer Seite fehlend, doppelte ID, andere W\u00e4hrung und Betrag au\u00dferhalb der Toleranz.<\/li>\n<li>Ergebnis exportieren und einzelne Bestellungen in den Quellsystemen untersuchen.<\/li>\n<\/ol>\n<p>Doppelte IDs werden markiert statt addiert: Ein mehrfach gesendetes Kaufereignis, ein Export auf Artikelebene und eine Erstattungszeile erfordern unterschiedliche Deutungen. Negative Betr\u00e4ge werden als Zahlen akzeptiert; die fachliche Definition muss dennoch zwischen den Dateien \u00fcbereinstimmen. Eine fehlende Analytics-Bestellung kann mit Einwilligung, Zeitpunkt, Filtern oder Erfassungsfehlern zusammenh\u00e4ngen und beweist allein keinen defekten Tag. Auch eine Differenz von null belegt nicht, dass alle Bestellungen exportiert wurden. Das Werkzeug addiert keine Gesamtsummen \u00fcber unterschiedliche W\u00e4hrungen.<\/p>\n<p>Ma\u00dfgeblich sind der gew\u00e4hlte Export und die <a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\/ecommerce\" target=\"_blank\" rel=\"noopener noreferrer\">GA4-E-Commerce-Dokumentation<\/a>. Das <a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/api-schema\" target=\"_blank\" rel=\"noopener noreferrer\">Data-API-Schema<\/a> unterscheidet Transaktions-IDs und Umsatzkennzahlen; eine allgemeine Gesamtumsatzspalte ist nicht automatisch mit dem Bestellbetrag eines Shops gleichzusetzen.<\/p>\n<p><!-- lw-analytics-reconcile-guide:end --><\/p>\n<p><!-- lw-revenue-export-guide:start --><\/p>\n<h2>Die Analytics-CSV mit BigQuery vorbereiten<\/h2>\n<p>Der <a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/shop-ga4-revenue-reconciliation\/#aw-export-helper\">Exporthelfer im Umsatzabgleich<\/a> erzeugt eine Kaufabfrage f\u00fcr einen vorhandenen t\u00e4glichen GA4-Export. Projekt, Datensatz, Zeitraum und Rundungspr\u00e4zision werden lokal eingegeben. Die Seite f\u00fchrt das SQL nicht aus und fordert keinen BigQuery-Zugriff an.<\/p>\n<p>Die Ergebnisspalten <code>transaction_id<\/code>, <code>amount<\/code> und <code>currency<\/code> passen zu den Vergleichsfeldern. Jeder erfasste Kauf bleibt eine Zeile. Eine zus\u00e4tzliche Kaufereignis-Anzahl hilft beim Erkennen wiederholter Bestell-IDs; diese werden weder still addiert noch entfernt. Fehlende Betr\u00e4ge werden nicht durch null ersetzt.<\/p>\n<ol>\n<li>Vor dem Shop-Export die Definition des Kaufbetrags und die Tagesgrenzen abstimmen. Diese Abfrage schlie\u00dft Erstattungen aus und addiert Steuer oder Versand nicht separat.<\/li>\n<li>SQL erzeugen, in BigQuery validieren und die Kostensch\u00e4tzung ansehen. Vor der Ausf\u00fchrung eine Obergrenze f\u00fcr abrechenbare Bytes festlegen.<\/li>\n<li>Das vollst\u00e4ndige Ergebnis als lokale CSV speichern. Im Vergleich Komma als Feldtrenner, Dezimalpunkt und dieselben Nachkommastellen wie in der Abfrage w\u00e4hlen.<\/li>\n<li>Wiederholte IDs und fehlende Felder vor der Interpretation von Betragsabweichungen untersuchen. Der Vergleich akzeptiert bis zu 20.000 Datenzeilen je Datei. Kennungen in Tabellenprogrammen als Text behandeln.<\/li>\n<\/ol>\n<p>Zwei herunterladbare, erfundene CSV-Dateien erm\u00f6glichen einen nachvollziehbaren Einstieg mit je einem Fall in allen sechs Ergebnisgruppen. Die Beispieldateien sind unabh\u00e4ngig vom SQL und verwenden zwei Nachkommastellen bei null Toleranz.<\/p>\n<p>Quellen: <a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846?hl=de\">GA4-Exportschema<\/a>, <a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/running-queries\">Abfragepr\u00fcfung und Kostenkontrolle<\/a> sowie <a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/export-file\">Abfrageergebnisse als CSV speichern<\/a>.<\/p>\n<p><!-- lw-revenue-export-guide:end --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>E-Commerce schrittweise auf serverseitiges GTM umstellen: mit getrenntem Testziel, gezieltem Kaufversand aus dem Backend und Abgleich einzelner Bestellungen. Browserrouting und Backendversand sind getrennte \u00c4nderungen.<\/p>\n","protected":false},"author":1,"featured_media":13837,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[115],"tags":[92107,92091,92145,92148,92235],"class_list":["post-10135","post","type-post","status-publish","format-standard","hentry","category-tutorials-de","tag-e-commerce-de","tag-google-analytics-4-de","tag-google-tag-manager-de","tag-server-side-gtm-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: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.\" \/>\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-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-13T10:37:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T10:42:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.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:description\" content=\"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.\" \/>\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-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren\",\"datePublished\":\"2026-09-13T10:37:00+00:00\",\"dateModified\":\"2026-10-26T10:42:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/\"},\"wordCount\":1683,\"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-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png\",\"keywords\":[\"E-Commerce\",\"Google Analytics 4\",\"Google Tag Manager\",\"Server-Side GTM\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/\",\"name\":\"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png\",\"datePublished\":\"2026-09-13T10:37:00+00:00\",\"dateModified\":\"2026-10-26T10:42:01+00:00\",\"description\":\"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren\"}]},{\"@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: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren | Lukas Wojcik","description":"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.","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-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren | Lukas Wojcik","og_description":"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-13T10:37:00+00:00","article_modified_time":"2026-10-26T10:42:01+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_description":"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.","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-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren","datePublished":"2026-09-13T10:37:00+00:00","dateModified":"2026-10-26T10:42:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/"},"wordCount":1683,"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-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png","keywords":["E-Commerce","Google Analytics 4","Google Tag Manager","Server-Side GTM","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/","name":"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png","datePublished":"2026-09-13T10:37:00+00:00","dateModified":"2026-10-26T10:42:01+00:00","description":"E-Commerce-Messung zu Server-Side GTM migrieren: GA4-Client, explizite server_container_url, Vorschau und parallele Kontrolle.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10135-tutorial-e-commerce-analytics-von-cl-g.png","width":1200,"height":630,"caption":"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-e-commerce-analytics-von-client-side-auf-server-side-gtm-migrieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: E-Commerce-Analytics von Client-Side auf Server-Side GTM migrieren"}]},{"@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\/10135","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=10135"}],"version-history":[{"count":11,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10135\/revisions"}],"predecessor-version":[{"id":27575,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10135\/revisions\/27575"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13837"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}