Drei Datensätze, ein Kunde: warum Ihre Automatisierung Duplikate erzeugt
Ihre Automatisierung legt bei jeder Bestellung einen neuen Kontakt an, auch wenn der Kunde längst existiert. Woran das liegt, und wie Sie mit Matching-Schlüssel und Upsert Dubletten verhindern, bevor sie sich stapeln.
Der Vertrieb rief an, weil im CRM drei Kunden standen, wo einer sein sollte
Ein Handwerksbetrieb mit angeschlossenem Onlineshop hatte sich eine praktische Automatisierung gebaut. Jede Bestellung legte im CRM einen Kontakt an, damit der Vertrieb den Kunden weiterbetreuen konnte. Sauber gedacht, und monatelang lief es unauffällig. Dann meldete sich die Vertriebsleiterin: Für einen Stammkunden gab es plötzlich drei Einträge. Einmal mit der Firmen-E-Mail, einmal mit der privaten, einmal mit einem Tippfehler im Nachnamen. Drei Karten, drei Verläufe, drei Kollegen, die alle glaubten, den vollständigen Überblick zu haben.
Die Automatisierung hatte keinen Fehler geworfen. Sie hat genau das getan, was in ihr stand: Bestellung rein, Kontakt anlegen. Bei jeder Bestellung. Dass derselbe Mensch beim dritten Kauf eine andere Adresse benutzt hat, war ihr gleichgültig, weil ihr niemand gesagt hatte, woran sie erkennt, dass zwei Bestellungen zur selben Person gehören.
Das ist einer der häufigsten Fälle, die ich in fremden Automatisierungen finde. Kein spektakulärer Absturz, sondern ein CRM, das langsam mit Dubletten volläuft, bis niemand mehr weiß, welcher Datensatz der richtige ist.
Automatisierungen erzeugen keine Duplikate, sie führen einen Befehl aus
Der Denkfehler steckt schon in der Formulierung. Eine Automatisierung erzeugt keine Duplikate, so wie ein Kopierer keine Fehler macht, wenn er kopiert, was Sie hineinlegen. Sie führt einen Schreibbefehl aus, und der lautet in den meisten Fällen schlicht: lege einen neuen Datensatz an. Genau das tut sie, zuverlässig, jedes Mal.
Das Duplikat entsteht in dem Moment, in dem zwei Vorgänge zur selben Person gehören, die Automatisierung das aber nicht weiß. Sie hat keinen Begriff davon, wer schon existiert. Ohne eine ausdrückliche Prüfung ist jede eingehende Bestellung, jedes Formular, jeder Lead ein neuer Kontakt, auch wenn dieselbe Person vor zwei Wochen schon einmal da war.
Der Baustein, der hier fehlt, heißt Upsert: erst nachsehen, ob es den Datensatz schon gibt, dann entscheiden, ob angelegt oder aktualisiert wird. Viele No-Code-Plattformen bieten das an, oft heißt die Aktion Create or Update oder Find or Create. Nur ist sie nicht die Voreinstellung. Die Voreinstellung ist Create, weil sie einfacher ist und im Test immer funktioniert. Im Test gibt es ja auch nie einen zweiten Kontakt mit derselben Adresse.
Woran erkennt die Automatisierung denselben Kunden?
Hier liegt die eigentliche Arbeit, und sie ist kein technisches, sondern ein fachliches Problem. Bevor eine Automatisierung Duplikate vermeiden kann, muss jemand festlegen, woran zwei Datensätze als dieselbe Person oder dieselbe Firma zu erkennen sind. Das nennt sich Matching-Schlüssel, und die Wahl dieses Schlüssels entscheidet über alles Weitere.
Die E-Mail-Adresse ist der übliche Kandidat. Sie ist besser als nichts, trägt aber weniger weit, als man denkt. Menschen haben mehrere Adressen. Eine Firma bestellt mal über info@, mal über die persönliche Adresse der Assistenz. Ein Großbuchstabe zu viel, ein Leerzeichen am Ende, und schon ist es für einen exakten Vergleich nicht mehr dieselbe Adresse. Die Telefonnummer ist noch tückischer, weil dieselbe Nummer in fünf Schreibweisen vorkommt, mit Ländervorwahl, mit Null, mit Leerzeichen, mit Klammern.
Für Firmenkontakte ist der Name als Schlüssel eine Falle für sich. Müller GmbH, Müller GmbH & Co. KG, mueller gmbh und Müller sind für einen Menschen offensichtlich derselbe Betrieb und für einen exakten Abgleich vier verschiedene. Wer den Firmennamen als alleinigen Schlüssel nimmt, bekommt entweder Dubletten, weil die Schreibweisen abweichen, oder falsche Zusammenführungen, weil zwei echte Meyer GmbH in verschiedenen Städten plötzlich ein Datensatz werden.
Die drei Stellen, an denen es kippt
In der Praxis entstehen Duplikate aus drei Richtungen, und sie brauchen unterschiedliche Antworten.
Der erste und häufigste Fall ist der fehlende Schlüssel. Die Automatisierung prüft gar nicht, ob es den Kontakt schon gibt. Sie legt an. Das ist der Handwerksbetrieb von oben. Die Lösung ist eine Suchabfrage vor dem Schreiben, und die ist meist in einer halben Stunde eingebaut.
Der zweite Fall ist der schlechte Schlüssel. Es gibt eine Prüfung, aber sie greift zu eng oder zu weit. Zu eng heißt, sie vergleicht exakt und übersieht dieselbe E-Mail in anderer Schreibweise. Zu weit heißt, sie führt zusammen, was nicht zusammengehört. Beides ist schlimmer als gar keine Prüfung, weil es wie Sorgfalt aussieht und trotzdem falsch liegt.
Der dritte Fall ist das Timing, und der ist der unangenehmste. Zwei Vorgänge treffen fast gleichzeitig ein, ein Kunde füllt ein Formular aus und bestellt eine Minute später. Beide Abläufe suchen zur selben Zeit nach dem Kontakt, beide finden nichts, beide legen an. Die Suchabfrage war korrekt, sie kam nur zu früh, weil der andere Vorgang seinen Datensatz noch nicht geschrieben hatte. Diese Duplikate sind selten, aber sie tauchen genau dann auf, wenn das System stärker genutzt wird, und mit reiner Suchlogik sind sie nicht sauber zu verhindern. Dafür braucht es eine eindeutige Sperre auf Ebene der Datenbank, ein Feld, das doppelte Werte grundsätzlich ablehnt.
Match zuerst, dann schreiben
So bauen wir es, wenn ein Datenfluss neue Kontakte anlegt. Zuerst legen wir fest, was den Kunden eindeutig macht, und zwar bevor ein einziger Schritt gebaut wird. Bei Privatkunden ist das oft die normalisierte E-Mail, bei Firmen eine Kombination aus normalisiertem Namen und Postleitzahl oder, wenn vorhanden, eine externe Kennung wie die Kundennummer aus dem Shop.
Normalisieren heißt, den Wert vor dem Vergleich in eine einheitliche Form zu bringen. E-Mail komplett kleingeschrieben, Leerzeichen entfernt. Telefonnummer auf reine Ziffern mit Ländervorwahl reduziert. Firmenname ohne Rechtsformzusatz und ohne doppelte Leerzeichen. Dieser eine Schritt beseitigt den Großteil der Dubletten, die aus Schreibvarianten entstehen, und er kostet fast nichts.
Dann kommt die Suche vor dem Schreiben. Existiert ein Kontakt mit diesem Schlüssel, wird er aktualisiert, sonst neu angelegt. Wichtig ist, dass die Automatisierung den Fall behandelt, dass die Suche mehr als einen Treffer liefert. Dann haben Sie bereits Dubletten, und der Workflow sollte das melden, statt willkürlich den ersten zu nehmen.
Gegen das Timing-Problem setzen wir die eindeutige Sperre direkt im Zielsystem. Die meisten CRMs und Datenbanken erlauben, ein Feld als eindeutig zu markieren. Dann kann selbst eine gleichzeitige Anfrage keinen zweiten Datensatz mit derselben E-Mail anlegen, die Datenbank weist ihn ab, und die Automatisierung fängt diesen Konflikt ab und aktualisiert stattdessen. Das ist die einzige Ebene, die auch bei zwei zeitgleichen Vorgängen hält.
Duplikate entstehen schneller, als sie sich beseitigen lassen
Der Grund, warum sich der Aufwand am Anfang lohnt, ist die Asymmetrie. Duplikate anzulegen ist billig und passiert automatisch. Sie wieder zu entwirren ist teuer und passiert von Hand.
Sobald zwei Datensätze für dieselbe Person existieren, hängen an beiden Daten. An der einen Karte eine Bestellung, an der anderen ein Support-Ticket, an der dritten eine Notiz aus einem Telefonat. Zusammenführen heißt jetzt entscheiden, welche Adresse gilt, welche Historie erhalten bleibt, welche verknüpften Vorgänge umgehängt werden müssen. Bei ein paar Dutzend Dubletten macht man das an einem Nachmittag. Bei ein paar tausend, die sich über zwei Jahre angesammelt haben, wird es ein Projekt mit eigenem Budget.
Dazu kommt der Schaden, solange die Dubletten leben. Der Vertrieb ruft an, ohne zu sehen, dass ein Kollege den Kunden schon betreut. Eine Rechnung geht an die alte Adresse. Eine Kündigung wird übersehen, weil sie am zweiten Datensatz hängt. Die Marketing-Auswertung zählt einen Kunden dreifach, und die Zahlen stimmen nicht mehr. Ein Duplikat ist kein Schönheitsfehler in der Datenbank. Es führt zu falschen Entscheidungen bei Menschen, die den Daten vertrauen.
Das Muster dahinter
Eine Automatisierung, die schreibt, ohne vorher zu suchen, ist ein Duplikat-Generator mit Anlaufzeit. Am ersten Tag sieht alles gut aus, weil es noch keinen zweiten Datensatz gibt, an dem sich das Problem zeigen könnte. Der Fehler wächst mit der Nutzung, und er wird genau dann sichtbar, wenn genug Daten zusammengekommen sind, dass das Aufräumen wehtut.
Die Frage, die vor jedem Datenfluss steht, der Kontakte oder Firmen anlegt, ist einfach: Woran erkennt dieser Workflow, dass er jemanden schon kennt? Wenn Sie darauf keine klare Antwort haben, legt er neu an, zuverlässig, bei jedem Vorgang, bis jemand aus dem Vertrieb anruft und fragt, warum ein Kunde jetzt dreimal im System steht.