LW IT Solutions
« Blog Overview /Digital Marketing / Hashing in der Conversions API: Kundendaten vor...
This post in other languages:

Hashing in der Conversions API: Kundendaten vor SHA-256 normalisieren und welche Felder ungehasht bleiben

Hashing in der Conversions API: Kundendaten vor SHA-256 normalisieren und welche Felder ungehasht bleiben
Inhalt
  1. Warum ein kleiner Unterschied ein vollständiger ist
  2. Die Form, in der jeder Parameter stehen muss
  3. Die Parameter, die nicht gestreut werden dürfen
  4. Wie sich das von außen zeigt
  5. Wohin die Normalisierung gehört
  6. Quellen

Ein Conversions-API-Ereignis mit einer gestreuten E-Mail-Adresse sieht gleich aus, ob richtig oder falsch gestreut wurde. Die Nutzlast ist gültig, die Schnittstelle antwortet mit einem Erfolg, der Ereigniszähler steigt, und die Übereinstimmungsgüte bleibt, wo sie war – weil die Adresse, korrekt zu einer Zeichenkette gestreut, die keiner entspricht, mit einem Kundenbestand verglichen und in keinem gefunden wurde.

Das ist die Art des Scheiterns, die vor aller Verrohrung verstanden sein sollte: Streuen scheitert nicht laut, es scheitert, indem es etwas hervorbringt, das technisch einwandfrei und inhaltlich leer ist.

Dieselbe E-Mail-Adresse zweimal gestreut: einmal beschnitten und kleingeschrieben, einmal so wie aus dem Formular, mit zwei völlig verschiedenen SHA-256-Werten, von denen nur einer zum gespeicherten Eintrag passt
Zwei echte SHA-256-Werte derselben Adresse. Drei Zeichen Leerraum und ein paar Großbuchstaben trennen sie.

Warum ein kleiner Unterschied ein vollständiger ist

Eine Streufunktion ist so gebaut, dass eine winzige Änderung der Eingabe eine bis zur Unkenntlichkeit verschiedene Ausgabe erzeugt. Diese Eigenschaft macht das Streuen brauchbar, und genau sie macht einen Normalisierungsfehler tödlich: Beinahe-Übereinstimmung gibt es nicht. Zwei Streuwerte sind gleich, oder sie haben nichts miteinander zu tun, und keine noch so unscharfe Zuordnung weiter hinten holt den Unterschied wieder ein.

Ob ein Ereignis eine Person findet, entscheidet sich also, bevor die Streufunktion überhaupt aufgerufen wird – in den wenigen Zeilen, die festlegen, was genau hineingeht.

Die Form, in der jeder Parameter stehen muss

Parameter Verlangte Form Was schiefgeht
em beschnitten, klein ein Großbuchstabe aus dem Formular, ein Leerzeichen aus der Zwischenablage
ph nur Ziffern, mit Ländervorwahl die nationale Null in +49 (0)170 überlebt
fn, ln klein, ohne Satzzeichen und Leerraum der Bindestrich in einem Doppelnamen
ct klein, ohne Leerzeichen Frankfurt am Main behält seine Leerzeichen
st, country zweibuchstabiges Kürzel, klein das Land steht ausgeschrieben da
ge genau f oder m alles andere, gestreut als wäre es ein Wert
db JJJJMMTT ein landesübliches Datumsformat, lautlos umsortiert

Die Telefonnummer verdient eine eigene Anmerkung, denn sie ist der eine Fall, der sich nicht maschinell normalisieren lässt. Aus +49 (0)170 1234567 alle Nichtziffern zu entfernen ergibt 4901701234567, und die Null hinter der Ländervorwahl ist eine nationale Vorwahlkennziffer, die in einer internationalen Nummer nichts zu suchen hat. Keine Regel entscheidet das für jedes Land verlässlich, weshalb die ehrliche Behandlung darin besteht, zu entfernen und das verdächtige Muster einem Menschen zu melden, statt zu raten.

Die Parameter, die nicht gestreut werden dürfen

Der umgekehrte Fehler ist seltener und ebenso endgültig. client_ip_address, client_user_agent, fbp und fbc werden im Klartext gesendet. Sie sind keine Kennungen in dem Sinn, in dem die gestreuten Felder es sind; sie sind Werte, die Meta gegen die eigenen Aufzeichnungen hält, und ein gestreuter davon ist eine Zeichenkette, der auf der anderen Seite nichts entspricht.

Am häufigsten passiert das, wenn eine Streuhilfe auf das gesamte Nutzerdatenobjekt auf einmal angewandt wird – ein vernünftig aussehendes Stück Code, das in genau vier Feldern falsch ist. Eine Hilfe, die nach Feldnamen streut statt nach Objekt, ist die Fassung, die eine Schemaänderung übersteht.

Wie sich das von außen zeigt

# dieselbe Adresse, drei Wege
"  Max.Mustermann@Example.COM "   → 524d6368ceb086b2b1d8fed14ee75313…
"  max.mustermann@example.com "   → de4c5edc5348280eedb5b029d7851764…
"max.mustermann@example.com"      → dd432348e6c3373c5f646913fa94ae79…

# verglichen wird nur der dritte mit irgendetwas

Keiner davon erzeugt einen Fehler. Die Ereigniszahl im Ereignismanager ist in allen drei Fällen gleich, die Zustellung wird in allen drei Fällen bestätigt, und die einzige Größe, die sich bewegt, ist die Übereinstimmungsgüte – nach unten, langsam, und auf eine Weise, die sich bequem der Jahreszeit oder einer Änderung an der Einwilligung zuschreiben lässt.

Die brauchbare Prüfung ist deshalb nicht die Antwort der Schnittstelle, sondern ein Vergleich gegen einen bekannten Wert. Eine Adresse aus dem Kundenbestand nehmen, sie so streuen, wie der Shop es tut, sie so streuen, wie die Vorschrift es verlangt, und die beiden Zeichenketten vergleichen. Sie stimmen überein, oder die Verarbeitungskette hat einen Normalisierungsfehler – und die Antwort dauert eine Minute.

Wohin die Normalisierung gehört

Die letzte Entscheidung ist eine des Aufbaus. Normalisieren lässt sich im Browser, im Servercontainer oder in dem System, das den Kundeneintrag führt – und nur das letzte hat den ursprünglichen Wert in der Form vorliegen, in der ihn auch der Kundenbestand hält.

Es im serverseitigen Container zu tun, ist der übliche Mittelweg und trägt, sofern der Container den Rohwert bekommt und nicht etwas, das ein Formular bereits zugerichtet hat. Es im Browser zu tun, ist die eine Anordnung, die zu vermeiden ist: Sie legt die Adresse im Klartext in eine Anfrage, die das Gerät des Besuchers verlässt – genau das, was das Streuen verhindern sollte.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Kommentar schreiben

Die E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit einem Stern versehen.

ALL ARTICLES & CATEGORIES

CCTV

Diese Rubrik per RSS verfolgen

Cloud & AI

Diese Rubrik per RSS verfolgen

Data Privacy

Alle 12 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Digital Analytics

Alle 47 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Digital Marketing

Alle 29 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

IT & Networks

Alle 16 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Music Production

Diese Rubrik per RSS verfolgen

Raspberry Pi

Diese Rubrik per RSS verfolgen

Smart Home

Alle 18 Artikel dieser Rubrik Diese Rubrik per RSS verfolgen

Web Entwicklung

Diese Rubrik per RSS verfolgen

WordPress-Plugins & Tricks

Diese Rubrik per RSS verfolgen