{"id":13110,"date":"2026-09-20T12:45:00","date_gmt":"2026-09-20T10:45:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13110"},"modified":"2026-10-26T13:29:23","modified_gmt":"2026-10-26T12:29:23","slug":"tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/","title":{"rendered":"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen"},"content":{"rendered":"<p>Eine E-Mail-Adresse im URL-Pfad, ein Suchbegriff mit Telefonnummer oder ein personenbezogener Bestellverweis kann zusammen mit einem Ereignis an GA4 gelangen. Der Befund betrifft zwei getrennte Aufgaben: weitere \u00dcbertragungen verhindern und bereits gespeicherte Daten behandeln. Eine \u00c4nderung am Tag bereinigt keinen historischen Bericht.<\/p>\n<p>Der folgende Ablauf beginnt mit einer Bestandsaufnahme, begrenzt anschlie\u00dfend die Erfassung und behandelt zuletzt die L\u00f6schm\u00f6glichkeiten. Kein einzelner Bericht und kein regul\u00e4rer Ausdruck kann die Abwesenheit personenbezogener Daten beweisen.<\/p>\n<figure class=\"lw-diagram\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-13110-review-20261024-v2.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\" alt=\"Personenbezogene GA4-Daten: drei Aufgaben\"><figcaption>Quellen finden, weitere \u00dcbertragung verhindern und gespeicherte Daten getrennt behandeln. Jeder Schritt hat Grenzen.<\/figcaption><\/figure>\n<h2>1. Betroffene Werte und \u00dcbertragungswege bestimmen<\/h2>\n<p>E-Mail-Adressen und pers\u00f6nliche Telefonnummern sind offensichtliche F\u00e4lle. Auch eine Bestellnummer oder ein Passwort-Reset-Token kann mit verf\u00fcgbaren Zusatzinformationen einer Person zugeordnet werden. Ein Token ist au\u00dferdem ein Geheimnis. Die Bezeichnung \u201epseudonym\u201c oder eine Hashfunktion beseitigt den Personenbezug nicht automatisch. PII steht f\u00fcr \u201epersonally identifiable information\u201c, also Angaben zur Identifizierung einer Person. Googles PII-Regeln und der datenschutzrechtliche Begriff personenbezogener Daten sind nicht deckungsgleich.<\/p>\n<p>F\u00fcr die Untersuchung sind vollst\u00e4ndige Seitenadresse, Pfad, Query-Parameter, Referrer, Seitentitel, Suchbegriffe und benutzerdefinierte Ereignisparameter relevant. Die GA4-Standardbelegung von <code>page_location<\/code> schlie\u00dft das URL-Fragment nach <code>#<\/code> aus. JavaScript oder eine abweichende Implementierung kann Fragmente trotzdem ausdr\u00fccklich \u00fcbertragen. Ein Fragment ist daher kein sicherer Ablageort f\u00fcr Geheimnisse.<\/p>\n<p>Ein Befundprotokoll ben\u00f6tigt Quelle, Parameter, Zeitraum, betroffene Datenziele und einen bereinigten Beispielwert. Vollst\u00e4ndige Tokens oder Adressen geh\u00f6ren nicht in Tickets, frei zug\u00e4ngliche Tabellen oder \u00f6ffentliche Online-Pr\u00fcfer. Bei kompromittierten Zugangs- oder Reset-Tokens geh\u00f6rt au\u00dferdem die Ung\u00fcltigmachung zum Vorfall; eine sp\u00e4tere Berichtsl\u00f6schung reicht daf\u00fcr nicht.<\/p>\n<h2>2. Vorhandene Berichte gezielt abfragen<\/h2>\n<p>Die Data API liefert Berichtsdaten, keinen vollst\u00e4ndigen Rohdatenbestand. <code>pageLocation<\/code> enth\u00e4lt die Seitenadresse einschlie\u00dflich Host und Query, <code>pagePathPlusQueryString<\/code> Pfad und Query. <code>pagePath<\/code> allein l\u00e4sst Query-Parameter aus. Erg\u00e4nzende Abfragen mit <code>pageReferrer<\/code> und <code>searchTerm<\/code> erfassen andere m\u00f6gliche Fundstellen. Benutzerdefinierte Parameter erscheinen nicht allein durch die \u00dcbertragung als abfragbare benutzerdefinierte Dimension.<\/p>\n<p>Dieses Beispiel geh\u00f6rt in den JSON-Body eines authentifizierten POST-Aufrufs an <code>https:\/\/analyticsdata.googleapis.com\/v1beta\/properties\/PROPERTY_ID:runReport<\/code>. Erforderlich sind die passende numerische Property-ID, Lesezugriff und etwa der OAuth-Bereich <code>analytics.readonly<\/code>. Der feste Zeitraum ist ein Beispiel und muss zum untersuchten Vorfall passen.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"json\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JSON<\/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-json\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">{\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"dateRanges\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"startDate\"<\/span>: <span class=\"cbb-string\">\"2026-10-01\"<\/span>,\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"endDate\"<\/span>: <span class=\"cbb-string\">\"2026-10-07\"<\/span>\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"dimensions\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"name\"<\/span>: <span class=\"cbb-string\">\"pageLocation\"<\/span>\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"metrics\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"name\"<\/span>: <span class=\"cbb-string\">\"eventCount\"<\/span>\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"orderBys\"<\/span>: &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-attr\">\"dimension\"<\/span>: {\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-attr\">\"dimensionName\"<\/span>: <span class=\"cbb-string\">\"pageLocation\"<\/span>,\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-attr\">\"orderType\"<\/span>: <span class=\"cbb-string\">\"ALPHANUMERIC\"<\/span>\n<\/span><span class=\"cbb-line\">      }\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"limit\"<\/span>: <span class=\"cbb-string\">\"10000\"<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"offset\"<\/span>: <span class=\"cbb-string\">\"0\"<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">\"returnPropertyQuota\"<\/span>: <span class=\"cbb-constant\">true<\/span>\n<\/span><span class=\"cbb-line\">}<\/span><\/code><\/pre><\/figure>\n<p><code>eventCount<\/code> z\u00e4hlt Ereignisse; Seitenaufrufe w\u00e4ren f\u00fcr eine getrennte Suchbegriffsabfrage unpassend. Weitere Seiten entstehen durch <code>offset<\/code> gleich der bisher gelesenen Zeilenzahl, bis die gemeldete <code>rowCount<\/code> erreicht ist. Alphabetische Sortierung und ein fester Zeitraum erleichtern den seitenweisen Abruf, verhindern aber keine \u00c4nderungen durch nachgelieferte Daten. Die API erlaubt h\u00f6chstens 250.000 Zeilen pro Anfrage; Quoten gelten weiterhin.<\/p>\n<p>Zur Antwortpr\u00fcfung geh\u00f6ren <code>dataLossFromOtherRow<\/code>, <code>samplingMetadatas<\/code>, <code>dataTruncationReasons<\/code> und <code>subjectToThresholding<\/code>. Der letzte Wert bedeutet, dass Schwellenwerte gelten; tats\u00e4chlich fehlende Zeilen folgen daraus nicht zwingend. Weitere Seiten stellen weder zusammengefasste Werte aus \u201e(other)\u201c noch abgeschnittene oder nicht mehr verf\u00fcgbare Daten wieder her. Auch unauff\u00e4llige Metadaten ergeben keinen vollst\u00e4ndigen Datenschutznachweis.<\/p>\n<h2>3. Hinweise erkennen, anschlie\u00dfend fachlich bewerten<\/h2>\n<p>Prozentkodierung stellt Zeichen in einer URL durch Codes dar: %40 steht beispielsweise f\u00fcr @. Die Dekodierung wandelt solche Codes wieder in Zeichen um. Das Python-Beispiel untersucht den Originaltext und bis zu zwei zus\u00e4tzliche Prozentdekodierungen. Die Query-Auswertung ber\u00fccksichtigt wiederholte und leere Parameter sowie kodierte Schl\u00fcsselnamen. Eine Fragmentpr\u00fcfung liefert lediglich einen Hinweis auf den Eingabetext, keinen Beleg f\u00fcr eine tats\u00e4chliche GA4-\u00dcbertragung.<\/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> re\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">from<\/span> urllib.parse <span class=\"cbb-keyword\">import<\/span> parse_qsl, unquote, urlsplit\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">EMAIL = re.<span class=\"cbb-function\">compile<\/span>(<span class=\"cbb-string\">r\"&#91;A-Z0-9.!#$%&amp;'*+\/=?^_`{|}~-&#93;+@&#91;A-Z0-9-&#93;+(?:\\.&#91;A-Z0-9-&#93;+)+\"<\/span>, re.I)\n<\/span><span class=\"cbb-line\">FIELDS = {\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"secret_field\"<\/span>: {<span class=\"cbb-string\">\"token\"<\/span>, <span class=\"cbb-string\">\"hash\"<\/span>, <span class=\"cbb-string\">\"auth\"<\/span>, <span class=\"cbb-string\">\"key\"<\/span>, <span class=\"cbb-string\">\"sig\"<\/span>, <span class=\"cbb-string\">\"pwd\"<\/span>, <span class=\"cbb-string\">\"password\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"name_field\"<\/span>: {<span class=\"cbb-string\">\"name\"<\/span>, <span class=\"cbb-string\">\"vorname\"<\/span>, <span class=\"cbb-string\">\"nachname\"<\/span>, <span class=\"cbb-string\">\"firstname\"<\/span>, <span class=\"cbb-string\">\"lastname\"<\/span>, <span class=\"cbb-string\">\"user\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"phone_field\"<\/span>: {<span class=\"cbb-string\">\"phone\"<\/span>, <span class=\"cbb-string\">\"tel\"<\/span>, <span class=\"cbb-string\">\"mobile\"<\/span>, <span class=\"cbb-string\">\"telephone\"<\/span>},\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"search_field\"<\/span>: {<span class=\"cbb-string\">\"q\"<\/span>, <span class=\"cbb-string\">\"s\"<\/span>, <span class=\"cbb-string\">\"search\"<\/span>, <span class=\"cbb-string\">\"query\"<\/span>},\n<\/span><span class=\"cbb-line\">}\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\">scan_url<\/span>(text):\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-function\">isinstance<\/span>(text, str):\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">TypeError<\/span>(<span class=\"cbb-string\">\"text must be a string\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">len<\/span>(text) &gt; <span class=\"cbb-number\">16384<\/span>:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">return<\/span> {<span class=\"cbb-string\">\"input_too_long\"<\/span>}\n<\/span><span class=\"cbb-line\">    flags = <span class=\"cbb-function\">set<\/span>()\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> re.<span class=\"cbb-function\">search<\/span>(<span class=\"cbb-string\">r\"%(?!&#91;0-9a-fA-F&#93;{2})\"<\/span>, text):\n<\/span><span class=\"cbb-line\">        flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"invalid_percent_encoding\"<\/span>)\n<\/span><span class=\"cbb-line\">    forms = &#91;text&#93;\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">for<\/span> _ <span class=\"cbb-keyword\">in<\/span> <span class=\"cbb-function\">range<\/span>(<span class=\"cbb-number\">2<\/span>):\n<\/span><span class=\"cbb-line\">        decoded = <span class=\"cbb-function\">unquote<\/span>(forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> decoded == forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;:\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">break<\/span>\n<\/span><span class=\"cbb-line\">        forms.<span class=\"cbb-function\">append<\/span>(decoded)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">if<\/span> <span class=\"cbb-function\">unquote<\/span>(forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;) != forms&#91;<span class=\"cbb-number\">-1<\/span>&#93;:\n<\/span><span class=\"cbb-line\">        flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"further_encoding\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">for<\/span> form <span class=\"cbb-keyword\">in<\/span> forms:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">if<\/span> EMAIL.<span class=\"cbb-function\">search<\/span>(form):\n<\/span><span class=\"cbb-line\">            flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"email_like\"<\/span>)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">try<\/span>:\n<\/span><span class=\"cbb-line\">            parts = <span class=\"cbb-function\">urlsplit<\/span>(form)\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">if<\/span> parts.username <span class=\"cbb-keyword\">is<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-constant\">None<\/span> <span class=\"cbb-keyword\">or<\/span> parts.password <span class=\"cbb-keyword\">is<\/span> <span class=\"cbb-keyword\">not<\/span> <span class=\"cbb-constant\">None<\/span>:\n<\/span><span class=\"cbb-line\">                flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"url_credentials\"<\/span>)\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-comment\"># Fragment query syntax is inspected too, without claiming collection.<\/span>\n<\/span><span class=\"cbb-line\">            queries = &#91;parts.query, parts.fragment.<span class=\"cbb-function\">partition<\/span>(<span class=\"cbb-string\">\"?\"<\/span>)&#91;<span class=\"cbb-number\">2<\/span>&#93; <span class=\"cbb-keyword\">or<\/span> parts.fragment&#93;\n<\/span><span class=\"cbb-line\">            <span class=\"cbb-keyword\">for<\/span> query <span class=\"cbb-keyword\">in<\/span> queries:\n<\/span><span class=\"cbb-line\">                <span class=\"cbb-keyword\">for<\/span> key, value <span class=\"cbb-keyword\">in<\/span> <span class=\"cbb-function\">parse_qsl<\/span>(query, keep_blank_values=<span class=\"cbb-constant\">True<\/span>, max_num_fields=<span class=\"cbb-number\">1000<\/span>):\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-keyword\">for<\/span> label, names <span class=\"cbb-keyword\">in<\/span> FIELDS.<span class=\"cbb-function\">items<\/span>():\n<\/span><span class=\"cbb-line\">                        <span class=\"cbb-keyword\">if<\/span> key.<span class=\"cbb-function\">casefold<\/span>() <span class=\"cbb-keyword\">in<\/span> names:\n<\/span><span class=\"cbb-line\">                            flags.<span class=\"cbb-function\">add<\/span>(label)\n<\/span><span class=\"cbb-line\">                    <span class=\"cbb-keyword\">if<\/span> EMAIL.<span class=\"cbb-function\">search<\/span>(value):\n<\/span><span class=\"cbb-line\">                        flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"email_like\"<\/span>)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">except<\/span> ValueError:\n<\/span><span class=\"cbb-line\">            flags.<span class=\"cbb-function\">add<\/span>(<span class=\"cbb-string\">\"url_parse_error\"<\/span>)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">return<\/span> flags<\/span><\/code><\/pre><\/figure>\n<p>Die Funktion liefert Kategorien statt Rohwerte. <code>email_like<\/code> bezeichnet ein E-Mail-\u00e4hnliches Muster, <code>secret_field<\/code> einen verd\u00e4chtigen Schl\u00fcsselnamen. <code>phone_field<\/code> best\u00e4tigt weder eine g\u00fcltige Telefonnummer noch einen Personenbezug. Auch ein Produktsuchwort oder <code>name=product<\/code> kann einen Pr\u00fcfhinweis erzeugen. Die Zahl <code>20260920<\/code> wird nicht pauschal als Telefonnummer eingestuft.<\/p>\n<p>Grenzen sind unbekannte Parameternamen, personenbezogene Pfadnummern, Unicode-Sonderf\u00e4lle, tiefer verschachtelte Kodierung und verschl\u00fcsselte Inhalte. Dekodierte Trennzeichen k\u00f6nnen zus\u00e4tzliche Fehlalarme erzeugen. <code>input_too_long<\/code>, <code>url_parse_error<\/code> oder <code>further_encoding<\/code> erfordern eine gesonderte Untersuchung. Ein leeres Ergebnisset bedeutet ausschlie\u00dflich: keine Erkennung durch diese begrenzten Regeln. Stichproben helfen bei der Bewertung, ersetzen aber keine Pr\u00fcfung aller relevanten Quellen.<\/p>\n<h2>4. Weitere \u00dcbertragungen an der Quelle verhindern<\/h2>\n<p>Eine URL ohne sensible Werte sch\u00fctzt mehr als die nachgelagerte Korrektur eines Analysefelds. Wo personenbezogene Formulareingaben erforderlich sind, vermeidet POST die \u00fcbliche \u00dcbernahme der Formularfelder in die Query. POST verhindert jedoch weder Tracking von Formulardaten noch Protokolle des Anfrageinhalts, problematische Weiterleitungen oder eine sp\u00e4tere URL mit denselben Werten.<\/p>\n<p>Eine geeignete Erfassung verwendet erlaubte, fachlich ben\u00f6tigte Felder und bereinigt Seitenadresse, Referrer, Titel und freie Eingaben vor dem Versand. Server-seitiges Tagging kann zus\u00e4tzliche Kontrollen vor der Weiterleitung anbieten. Bereits an andere Ziele gesendete Browser-Requests und direkte \u00dcbertragungen am Server-Container vorbei bleiben davon unber\u00fchrt.<\/p>\n<p>Die GA4-Datenentfernung eines Web-Datenstreams erg\u00e4nzt diese Ma\u00dfnahmen. E-Mail-Erkennung erfolgt nach bestem Bem\u00fchen; die Werte angegebener Query-Schl\u00fcssel werden in den dokumentierten URL-Parametern durch einen Platzhalter ersetzt, darunter <code>page_location<\/code> und <code>page_referrer<\/code>. Die Verarbeitung findet clientseitig statt. Measurement Protocol, Datenimport und HTTP-Header sind davon nicht abgedeckt. Die Einstellung bereinigt keine historischen Werte.<\/p>\n<p>F\u00fcr einen kontrollierten Test eignen sich ausschlie\u00dflich erfundene Werte wie <code>test@example.invalid<\/code>. Entscheidend ist der tats\u00e4chlich ausgehende Request nach allen Tag-Regeln: Erstaufruf, Navigation, interne Suche, Formularabschluss und s\u00e4mtliche Versandwege. Ein korrektes Vorschaufenster allein belegt noch keine korrekte produktive \u00dcbertragung.<\/p>\n<h2>5. Historische GA4-Daten: L\u00f6schtyp und Ausnahmen beachten<\/h2>\n<p>Unter Verwaltung stehen Datenl\u00f6schungsanfragen f\u00fcr unterst\u00fctzte Parameter und Zeitr\u00e4ume zur Verf\u00fcgung. Der Zeitraum folgt der Zeitzone der Property. F\u00fcr automatisch erfasste Parameter verlangt die Dokumentation den umfassenden Typ \u201eAlle Parameter in allen Ereignissen l\u00f6schen\u201c; die scheinbar gezielte Auswahl von <code>page_location<\/code> ist kein allgemeiner Ersatz. Eine zus\u00e4tzliche Registrierung als benutzerdefinierte Dimension umgeht diese Einschr\u00e4nkung nicht.<\/p>\n<p><strong>Wichtige Grenze:<\/strong> <code>search_term<\/code> steht ausdr\u00fccklich auf Googles Liste nicht l\u00f6schbarer Parameter f\u00fcr diesen Mechanismus. Weitere dokumentierte Ausnahmen gelten ebenfalls. Ein Vorfall mit Suchbegriffen darf deshalb nicht als erledigt gelten, nur weil eine L\u00f6schanfrage f\u00fcr andere Parameter abgeschlossen wurde. Der konkrete Fall ben\u00f6tigt eine geeignete zus\u00e4tzliche Kl\u00e4rung und gegebenenfalls den Google-Support.<\/p>\n<p>Der Mechanismus betrifft Textwerte, nicht numerische Parameterwerte, und erh\u00e4lt Ereignisz\u00e4hlungen. Die unterst\u00fctzten Werte werden durch einen L\u00f6schvermerk ersetzt; beim umfassenden Typ kann auch der Ereignisname betroffen sein. F\u00fcr User-ID-bezogene L\u00f6schung existiert ein gesonderter Weg. Datenl\u00f6schung ist daher weder gleichbedeutend mit dem Entfernen ganzer Ereignisse noch mit dem L\u00f6schen aller personenbezogenen Daten eines Falls.<\/p>\n<p>Eine Anfrage kann sieben Tage lang widerrufen werden. Die Verarbeitung kann insgesamt sieben bis 63 Tage dauern; Daten m\u00fcssen \u00e4lter als zw\u00f6lf Tage sein. Ein optionaler Enth\u00e4lt-Filter vergleicht Text ohne Beachtung der Gro\u00df-\/Kleinschreibung. Vorschau und vor\u00fcbergehendes Ausblenden belegen noch keinen abgeschlossenen L\u00f6schlauf. Umfang, Status und Berichtsauswirkungen m\u00fcssen dokumentiert werden.<\/p>\n<h2>6. BigQuery und weitere Kopien separat behandeln<\/h2>\n<p>Eine GA4-L\u00f6schanfrage ersetzt keine Bereinigung bereits exportierter Daten. Der folgende Bestandstest z\u00e4hlt Parametervorkommen und Datentypen in genau einer Tabelle, ohne die Werte auszugeben. Projekt, Dataset, Datum und Schl\u00fcssel ben\u00f6tigen einen Abgleich mit dem tats\u00e4chlichen Befund.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/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-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Review one closed daily table; no modification is performed.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> target_keys <span class=\"cbb-keyword\">ARRAY<\/span>&lt;<span class=\"cbb-type\">STRING<\/span>&gt; <span class=\"cbb-keyword\">DEFAULT<\/span>\n<\/span><span class=\"cbb-line\">  &#91;<span class=\"cbb-string\">'page_location'<\/span>, <span class=\"cbb-string\">'page_referrer'<\/span>, <span class=\"cbb-string\">'search_term'<\/span>&#93;;\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  p.<span class=\"cbb-keyword\">key<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> parameter_occurrences,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNTIF<\/span>(p.value.string_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>) <span class=\"cbb-keyword\">AS<\/span> text_values,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNTIF<\/span>(p.value.int_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">       <span class=\"cbb-keyword\">OR<\/span> p.value.float_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">       <span class=\"cbb-keyword\">OR<\/span> p.value.double_value <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>) <span class=\"cbb-keyword\">AS<\/span> numeric_values\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project_id.analytics_123456789.events_20261001`<\/span>,\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> p.<span class=\"cbb-keyword\">key<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> p.<span class=\"cbb-keyword\">key<\/span>;<\/span><\/code><\/pre><\/figure>\n<p>Falls die vollst\u00e4ndige Entfernung dieser drei Parameter fachlich beschlossen ist, zeigt das n\u00e4chste Muster die begrenzte Umsetzung. Mit <code>apply_change = FALSE<\/code> l\u00e4uft nur eine Abfrage der betroffenen Ereignisse. Die Umschaltung auf <code>TRUE<\/code> entfernt s\u00e4mtliche Eintr\u00e4ge der ausgew\u00e4hlten Schl\u00fcssel aus dieser Tabelle, einschlie\u00dflich unauff\u00e4lliger Werte. Das ist eine destruktive \u00c4nderung am aktuellen Tabellenstand, keine pr\u00e4zise Maskierung einzelner E-Mail-Adressen.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/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-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Example for a confirmed full removal of selected parameter values.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Project, dataset, table and key list require case-specific review.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> apply_change <span class=\"cbb-type\">BOOL<\/span> <span class=\"cbb-keyword\">DEFAULT<\/span> <span class=\"cbb-constant\">FALSE<\/span>;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> target_keys <span class=\"cbb-keyword\">ARRAY<\/span>&lt;<span class=\"cbb-type\">STRING<\/span>&gt; <span class=\"cbb-keyword\">DEFAULT<\/span>\n<\/span><span class=\"cbb-line\">  &#91;<span class=\"cbb-string\">'page_location'<\/span>, <span class=\"cbb-string\">'page_referrer'<\/span>, <span class=\"cbb-string\">'search_term'<\/span>&#93;;\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> affected_events\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project_id.analytics_123456789.events_20261001`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> <span class=\"cbb-keyword\">EXISTS<\/span> (\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-number\">1<\/span> <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\">);\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">IF<\/span> apply_change <span class=\"cbb-keyword\">THEN<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">UPDATE<\/span> <span class=\"cbb-variable\">`project_id.analytics_123456789.events_20261001`<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SET<\/span> event_params = <span class=\"cbb-keyword\">ARRAY<\/span>(\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-keyword\">AS<\/span> <span class=\"cbb-keyword\">STRUCT<\/span> p.*\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p <span class=\"cbb-keyword\">WITH<\/span> <span class=\"cbb-keyword\">OFFSET<\/span> <span class=\"cbb-keyword\">AS<\/span> position\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span> <span class=\"cbb-keyword\">OR<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> position\n<\/span><span class=\"cbb-line\">  )\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">WHERE<\/span> <span class=\"cbb-keyword\">EXISTS<\/span> (\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-number\">1<\/span> <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> <span class=\"cbb-keyword\">IN<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(target_keys)\n<\/span><span class=\"cbb-line\">  );\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">END<\/span> <span class=\"cbb-keyword\">IF<\/span>;<\/span><\/code><\/pre><\/figure>\n<p>Andere Parametereintr\u00e4ge, einschlie\u00dflich m\u00f6glicher NULL-Schl\u00fcssel, bleiben samt Reihenfolge erhalten. Die Zielschl\u00fcsselliste darf keine NULL-Werte enthalten. Andere Tabellen, <code>user_properties<\/code>, Nutzerkennungen, weitere Ereignisfelder und nachgelagerte Exporte bleiben unver\u00e4ndert. Vor einer \u00c4nderung sind das Ziel, Berechtigungen, erwartete Anzahl und Auswirkungen in einer isolierten Testtabelle zu pr\u00fcfen; danach folgt die erneute Bestandsabfrage. Laufende oder versp\u00e4tete Exporte k\u00f6nnen Daten wieder erg\u00e4nzen und ben\u00f6tigen eine gesonderte Kontrolle.<\/p>\n<p>BigQuery h\u00e4lt fr\u00fchere Versionen \u00fcber Time Travel vor, standardm\u00e4\u00dfig sieben Tage und konfigurierbar zwischen zwei und sieben Tagen. Danach folgt eine siebent\u00e4gige Fail-safe-Phase. Diese Daten sind nicht unmittelbar abfragbar; eine Wiederherstellung erfordert den dokumentierten Supportprozess. Snapshots, Kopien, Downloads und andere Systeme haben eigene Lebenszyklen. Eine leere aktuelle Abfrage beweist deshalb keine sofortige physische L\u00f6schung s\u00e4mtlicher Kopien.<\/p>\n<h2>7. Collect-Requests ohne erneuten Versand vergleichen<\/h2>\n<p>Der <a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/ga4-parameter-analyser\/\">GA4 Parameter Analyser<\/a> zerlegt vollst\u00e4ndige Collect-URLs oder Query-kodierte Request-Zeilen. Gemeinsame Parameter einer POST-URL k\u00f6nnen im getrennten Eingabefeld stehen. Mehrere Zeilen erm\u00f6glichen den Vergleich von Ereignisnamen, Mess-IDs, wiederholten Schl\u00fcsseln und fehlenden gegen\u00fcber leeren Werten.<\/p>\n<p>Die Analysefunktion dekodiert Prozentkodierung einmal, ersetzt Pluszeichen entsprechend der Formularkodierung und stellt Ergebnisse als Text dar. Die Funktion sendet die eingef\u00fcgten Requests nicht erneut ab. Measurement-Protocol-JSON ist ein anderes Format; zusammengesetzte Produktwerte werden nur heuristisch zerlegt. CSV-Ausgabe ist keine Anonymisierung. F\u00fcr die Untersuchung bleiben bereinigte oder frei erfundene Beispiele angemessen; eine Parameteransicht ist weder ein GA4-Empfangsnachweis noch eine vollst\u00e4ndige PII-Pr\u00fcfung.<\/p>\n<h2>H\u00e4ufige Fragen<\/h2>\n<h3>Reicht das Entfernen eines Query-Parameters?<\/h3>\n<p>Nur f\u00fcr genau diese Fundstelle. Pfad, Referrer, Titel, Suche, andere Parameter und weitere Versandwege k\u00f6nnen denselben Wert enthalten. Die \u00c4nderung wirkt au\u00dferdem nur auf k\u00fcnftige \u00dcbertragungen.<\/p>\n<h3>Verhindert die Referrer-Policy jede Weitergabe?<\/h3>\n<p>Bei <code>strict-origin-when-cross-origin<\/code> bleibt innerhalb derselben Origin die URL als Referrer m\u00f6glich; beim Wechsel der Origin wird normalerweise nur die Origin \u00fcbermittelt, beim HTTPS-zu-HTTP-Wechsel kein Referrer. Origin bedeutet Protokoll, Host und Port, nicht blo\u00df dieselbe Website. Abweichende Policies und ausdr\u00fccklich gesetzte Analyseparameter ben\u00f6tigen eine eigene Pr\u00fcfung.<\/p>\n<h3>Ist eine maskierte Adresse automatisch anonym?<\/h3>\n<p>Eine Maskierung kann den Informationsgehalt reduzieren. Verbleibende Kennungen, Zusatzinformationen und der Zweck der Verarbeitung bestimmen weiterhin den m\u00f6glichen Personenbezug. Ein ersetzter Query-Wert ist kein allgemeiner Anonymit\u00e4tsnachweis.<\/p>\n<h3>Wann ist der Vorfall technisch bearbeitet?<\/h3>\n<p>Wenn die betroffenen Quellen erfasst, k\u00fcnftige \u00dcbertragungen kontrolliert, die verf\u00fcgbaren L\u00f6schwege abgeschlossen und verbleibende Kopien oder technische Grenzen dokumentiert sind. Eine Regex ohne Treffer oder ein einzelner bereinigter Bericht erf\u00fcllt diese Bedingungen nicht allein.<\/p>\n<h2>Quellen und technische Dokumentation<\/h2><ul><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/13544947?hl=en\">GA4: Daten vor dem Versand entfernen<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/9940393?hl=en\">GA4: Datenl\u00f6schungsanfragen<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/rest\/v1beta\/properties\/runReport\">Data API: runReport<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/rest\/v1beta\/ResponseMetaData\">Data API: ResponseMetaData<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/reporting\/data\/v1\/api-schema\">Data API: Dimensionen und Messwerte<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\/views?hl=en\">GA4: Seitenaufrufe<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/time-travel\">BigQuery: Time Travel<\/a><\/li><li><a href=\"https:\/\/eur-lex.europa.eu\/eli\/reg\/2016\/679\/oj\/eng\/\">DSGVO: Artikel 4<\/a><\/li><li><a href=\"https:\/\/eur-lex.europa.eu\/legal-content\/EN\/TXT\/?uri=CELEX%3A62022CJ0604\">EuGH: C-604\/22<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/6366371?hl=en\">Google Analytics: PII<\/a><\/li><li><a href=\"https:\/\/docs.python.org\/3\/library\/urllib.parse.html\">Python: urllib.parse<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/dml-syntax\">BigQuery: DML<\/a><\/li><li><a href=\"https:\/\/developer.chrome.com\/blog\/referrer-policy-new-chrome-default\/\">Chrome: Referrer-Policy<\/a><\/li><li><a href=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/themes\/lw-theme\/js\/collect-analyser.js?v=20260928a\">GA4 Parameter Analyser: JavaScript<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\">GA4: Datenerfassung<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7201382?hl=de\">GA4: DebugView<\/a><\/li><li><a href=\"https:\/\/url.spec.whatwg.org\/#application\/x-www-form-urlencoded\">WHATWG: URL-Kodierung von Formulardaten<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Ein Ablauf zum Auffinden personenbezogener Daten in GA4-Adressen, zum Verhindern weiterer \u00dcbertragungen und zur Pr\u00fcfung der L\u00f6schm\u00f6glichkeiten. Mit Data-API-Grenzen, Datenentfernung im Webstream, GA4-L\u00f6schausnahmen und separater BigQuery-Bereinigung.<\/p>\n","protected":false},"author":1,"featured_media":28499,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[122],"tags":[92265,92241,92091,92154,92235],"class_list":["post-13110","post","type-post","status-publish","format-standard","hentry","category-tutorials-de-data-privacy-de","tag-prywatnosc-danych-pl-de","tag-gdpr-de","tag-google-analytics-4-de","tag-pii-protection-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: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Alle Seitenpfade \u00fcber die Data API auflisten, auf personenbezogene Daten pr\u00fcfen, am Stream schw\u00e4rzen und den Bestand l\u00f6schen lassen.\" \/>\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\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Alle Seitenpfade \u00fcber die Data API auflisten, auf personenbezogene Daten pr\u00fcfen, am Stream schw\u00e4rzen und den Bestand l\u00f6schen lassen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-20T10:45:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:29:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13110-review-20261024-dark.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=\"11 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\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen\",\"datePublished\":\"2026-09-20T10:45:00+00:00\",\"dateModified\":\"2026-10-26T12:29:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/\"},\"wordCount\":1642,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13110.png\",\"keywords\":[\"Data Privacy\",\"GDPR\",\"Google Analytics 4\",\"PII Protection\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/\",\"name\":\"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13110.png\",\"datePublished\":\"2026-09-20T10:45:00+00:00\",\"dateModified\":\"2026-10-26T12:29:23+00:00\",\"description\":\"Alle Seitenpfade \u00fcber die Data API auflisten, auf personenbezogene Daten pr\u00fcfen, am Stream schw\u00e4rzen und den Bestand l\u00f6schen lassen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13110.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/lw-flux3-20261031\\\/hero-13110.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/data-privacy-de\\\/tutorials-de-data-privacy-de\\\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen\"}]},{\"@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: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen | Lukas Wojcik","description":"Alle Seitenpfade \u00fcber die Data API auflisten, auf personenbezogene Daten pr\u00fcfen, am Stream schw\u00e4rzen und den Bestand l\u00f6schen lassen.","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\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen | Lukas Wojcik","og_description":"Alle Seitenpfade \u00fcber die Data API auflisten, auf personenbezogene Daten pr\u00fcfen, am Stream schw\u00e4rzen und den Bestand l\u00f6schen lassen.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-20T10:45:00+00:00","article_modified_time":"2026-10-26T12:29:23+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-13110-review-20261024-dark.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen","datePublished":"2026-09-20T10:45:00+00:00","dateModified":"2026-10-26T12:29:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/"},"wordCount":1642,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13110.png","keywords":["Data Privacy","GDPR","Google Analytics 4","PII Protection","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/","name":"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13110.png","datePublished":"2026-09-20T10:45:00+00:00","dateModified":"2026-10-26T12:29:23+00:00","description":"Alle Seitenpfade \u00fcber die Data API auflisten, auf personenbezogene Daten pr\u00fcfen, am Stream schw\u00e4rzen und den Bestand l\u00f6schen lassen.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13110.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/lw-flux3-20261031\/hero-13110.png","width":1200,"height":630,"caption":"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/data-privacy-de\/tutorials-de-data-privacy-de\/tutorial-personenbezogene-daten-in-ga4-seitenpfaden-finden-und-entfernen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Personenbezogene Daten in GA4-Seitenpfaden finden und entfernen"}]},{"@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\/13110","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=13110"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13110\/revisions"}],"predecessor-version":[{"id":27403,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13110\/revisions\/27403"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/28499"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}