Anzeigen aus Mailaktivität auslösen, und Mails aus Anzeigenaktivität

Kurz gesagt

Niveau: Fortgeschritten

Newsletter und Anzeigen treffen sich über Kundenlisten: gehashte Kontaktdaten, die du zu Google und Meta hochlädst und die dort mit deren Nutzern abgeglichen werden.

  • Öffnungen sind seit Apples Mail Privacy Protection Rauschen. Bau auf Klicks und Käufen auf.
  • Bei Google liegen Abgleichraten meist zwischen 29 % und 62 %, und Listen brauchen mindestens 100 aktive Nutzer, winzige Verhaltenssegmente laufen also nie.
  • Kürzliche Käufer auszuschließen lohnt sich zuerst. Mehr Kennungen pro Zeile schlagen häufigere Uploads.
  • UTM Parameter tragen das Versprechen der Anzeige in die Willkommensmail.
  • In Deutschland ist die Einwilligung die sichere Grundlage für den Upload, und Werbepixel brauchen eine Einwilligung nach § 25 TDDDG.

Dein Newsletter Tool und deine Werbekonten reden über dieselben Kunden, und trotzdem lassen die meisten Shops sie einander ignorieren. In diesem Artikel gleicht eine erfundene Hamburger Kaffeerösterei ihre Liste mit Google und Meta ab: Hashen, Abgleichraten, Mindestgrößen, kürzliche Käufer ausschließen, der Takt der Aktualisierung und die deutschen Regeln, die entscheiden, was überhaupt hochgeladen werden darf.

Deine Mailingliste und deine Werbekonten reden über dieselben Menschen

Die meisten Shops führen Newsletter und bezahlte Anzeigen als zwei getrennte Spuren. Die eine gehört dir, die andere mietest du. Der Kundin ist egal, aus welchem Budgettopf eine Nachricht kommt. Sie merkt aber, wenn die Anzeige für das Produkt, das sie am Dienstag gekauft hat, ihr die ganze Woche hinterherläuft. Und sie merkt, wenn die Willkommensmail so tut, als hätte es die Anzeige, über die sie gekommen ist, nie gegeben.

Die beiden Spuren zu verbinden ist unspektakulärer, als die alte Fassung dieses Artikels es klingen ließ. Es gibt keine magische Brücke in Echtzeit zwischen einer Mail, die um 9:00 Uhr geöffnet wird, und einer Anzeige um 9:05 Uhr. Es gibt Kundenlisten, die du zu den Werbeplattformen hochlädst und die dort mit deren Nutzern abgeglichen werden, mit echten Mindestgrößen, echten Verzögerungen und echten rechtlichen Pflichten. Und es gibt die andere Richtung, in der das, was jemand in einer Anzeige angeklickt hat, darüber entscheidet, welche Mails er bekommt. Dieser Artikel geht beide Richtungen durch, mit den Zahlen, die jede Plattform heute veröffentlicht.

Durchgehend nutze ich ein erfundenes Unternehmen. Die Ottensener Kaffeerösterei ist ein Onlineshop für Kaffee in Hamburg, geführt von Hanna, unter ottensenkaffee.example. Sie verkauft Bohnen und ein Monatsabo, hat 12.000 Newsletter Abonnenten und bekommt rund 3.000 Bestellungen im Monat. Niemand davon ist echt, und jede Zahl unten ist erfunden, damit ich jeden Schritt zeigen kann. Eine Annahme halte ich gleich fest: In den Rechenbeispielen haben alle 12.000 bei der Anmeldung zugestimmt, dass ihre Mailadresse an Google und Meta übermittelt wird. Warum genau diese Annahme in Deutschland den Unterschied macht, steht im Abschnitt zum Recht.

Eine Mailöffnung ist kein verlässliches Signal mehr

Die alte Fassung dieses Artikels begann mit einer hübschen Idee: Jemand öffnet eine Mail, klickt aber nicht, hat also gezögert, also zeigst du ihm eine Anzeige. Diese Idee ist schlecht gealtert, aus zwei Gründen.

Der erste ist Apple. Mail Privacy Protection, der Datenschutz in Apples Mail App, lädt entfernte Inhalte standardmäßig im Hintergrund, auch das unsichtbare Bild, mit dem ein Newsletter Tool eine Öffnung zählt, und zwar unabhängig davon, ob der Mensch die Nachricht je liest.1 Bei jedem Leser, der Apple Mail mit eingeschaltetem Schutz nutzt, heißt "geöffnet" also "Apple hat das Pixel abgerufen", nicht "ein Mensch hat die Mail angesehen". Dein Newsletter Tool kann die beiden Fälle nicht unterscheiden.

Der zweite ist das Recht. In Deutschland regelt § 25 des Telekommunikation Digitale Dienste Datenschutz Gesetzes (TDDDG), dass das Speichern von Informationen auf dem Endgerät und der Zugriff auf Informationen, die dort schon gespeichert sind, nur mit Einwilligung erlaubt sind. Ausgenommen sind nur die Übertragung einer Nachricht und das, was unbedingt erforderlich ist, um einen vom Nutzer ausdrücklich gewünschten Dienst bereitzustellen.2 Die deutschen Datenschutzbehörden lesen die Vorschrift technikneutral. In ihrer Orientierungshilfe zu digitalen Diensten nennen sie als Instrumente, die die Regel erfassen soll, ausdrücklich auch "Web Bugs", also unsichtbare Zählbilder, und sie stellen klar, dass wirtschaftliche Notwendigkeit für ein Geschäftsmodell keine Ausnahme begründet.3 Wer ein Öffnungspixel in einer Werbemail einsetzt, das auf dem Gerät etwas speichert oder ausliest, sollte also mit der Einwilligungspflicht rechnen. Eine Öffnung ist damit ein schwaches Signal und obendrein ein reguliertes.

Ein Klick ist etwas anderes. Den hat ein Mensch getan, und er landet damit auf deiner Website, wo deine eigenen Tags, für die er eingewilligt hat, sehen können, was er als Nächstes tut.

Ein Beispiel: Hanna schickt 12.000 Abonnenten eine Mail über einen neuen entkoffeinierten Kaffee. Das Newsletter Tool meldet 6.000 Öffnungen und 240 Klicks. Baut sie ein Segment "geöffnet, nicht geklickt", bekommt sie 5.760 Menschen und kann nicht sagen, wie viele davon Apples Server sind statt zögernder Kaffeetrinker. Baut sie stattdessen "geklickt, innerhalb von sieben Tagen nicht gekauft", bekommt sie die Menschen, die tatsächlich nachgesehen haben. Von den 240 haben 60 gekauft, das Segment hat also 180 Menschen. Kleiner, und jeder davon hat eine Entscheidung getroffen. Mit diesem Segment arbeitet der Rest des Artikels.

Über Kundenlisten kommen Maildaten zu den Werbeplattformen

Die Werbeplattformen können dein Newsletter Tool nicht lesen. Sie können aber eine Liste mit den Kontaktdaten deiner Kunden nehmen, sie mit ihren eigenen Nutzern vergleichen und aus denen, die sie wiedererkennen, eine Zielgruppe bauen. Google nennt das Kundenabgleich (Customer Match). Meta nennt es eine Custom Audience aus einer Kundenliste.

Googles Listen wirken in der Suche, im Shopping Tab, auf YouTube, in Gmail und im Displaynetzwerk, und sie erfassen nur die Menschen auf deiner Datei, die als Google Nutzer in ihrem Konto angemeldet sind.4 Vor dem Hochladen wird jede Mailadresse, jeder Name und jede Telefonnummer normalisiert und mit SHA256 gehasht: Leerzeichen entfernen, in Kleinbuchstaben umwandeln, Telefonnummern im internationalen Format E.164 schreiben, dann hashen.5 Meta verlangt dasselbe: nur SHA256, Mailadressen ohne Leerzeichen und in Kleinbuchstaben, das Ergebnis als hexadezimale Zeichenkette in Kleinbuchstaben.6 Das Hashen macht aus der Adresse einen langen Fingerabdruck. Die Plattform hasht die Adressen ihrer eigenen Nutzer auf dieselbe Weise und vergleicht die Fingerabdrücke, sodass die Adresse im Klartext nie übertragen werden muss.

An dieser Stelle hatte die alte Fassung einen Fehler, den ich öffentlich korrigieren will. Ihr Code legte für jede einzelne Mailadresse eine neue Meta Zielgruppe an, benannt nach der Adresse, und schickte die ungehashte Adresse in der Anfrage zum Anlegen mit. Metas tatsächlicher Ablauf hat zwei Schritte: Du legst eine Zielgruppe einmal an und fügst ihr dann über den Endpunkt users gehashte Mitglieder hinzu, bis zu 10.000 auf einmal.6 Eine Zielgruppe, viele Mitglieder, und nirgends eine Adresse im Klartext.

Rechenbeispiel: einen Abonnenten hashen

Jonas ist einer von Hannas Abonnenten. Er hat sich als Jonas.Weber@Example.com eingetragen, mit einem verirrten Leerzeichen an jedem Ende und mit Großbuchstaben, weil Menschen eben tippen, wie sie tippen.

Schritt eins, Leerzeichen entfernen: Jonas.Weber@Example.com.

Schritt zwei, Kleinbuchstaben: jonas.weber@example.com.

Schritt drei, mit SHA256 hashen. Das Ergebnis:

0874a506e975e942d1f2555f3a6693e46e3da4c9ee73c704f43ffd493a6bc25a

Hätte Hanna die Schritte eins und zwei übersprungen und die Adresse genau so gehasht, wie sie getippt wurde, hätte sie 7673c43415e47d9f4fe9f138127b5f66e71f5c75bc99994573799f4bd35540e5 geschickt. Dieser Fingerabdruck passt zu niemandem, weil die Plattform die bereinigte Fassung gehasht hat. Ein einziges Leerzeichen kostet einen Treffer, und Google nennt "vor dem Hashen nicht korrekt formatiert" unter den Hauptgründen für eine niedrige Abgleichrate.7

Hier der korrigierte Upload zu Meta, in Python. Er geht davon aus, dass die Zielgruppe einmal angelegt wurde, von Hand oder mit einem eigenen Aufruf, und fügt nur Mitglieder hinzu.

import hashlib
import json
import os

import requests

GRAPH = "https://graph.facebook.com/v27.0"
AUDIENCE_ID = os.environ["META_AUDIENCE_ID"]  # Zielgruppe wurde einmal vorab angelegt
TOKEN = os.environ["META_ACCESS_TOKEN"]


def normalise_and_hash(email: str) -> str:
    # Leerzeichen weg, Kleinbuchstaben, dann SHA256 als Hex
    clean = email.strip().lower()
    return hashlib.sha256(clean.encode("utf-8")).hexdigest()


def add_members(emails: list[str]) -> None:
    hashed = [[normalise_and_hash(e)] for e in emails]
    # Meta nimmt höchstens 10.000 Mitglieder pro Anfrage
    for start in range(0, len(hashed), 10_000):
        batch = hashed[start:start + 10_000]
        payload = {"schema": ["EMAIL"], "data": batch}
        response = requests.post(
            f"{GRAPH}/{AUDIENCE_ID}/users",
            data={"payload": json.dumps(payload), "access_token": TOKEN},
            timeout=30,
        )
        response.raise_for_status()


add_members(["jonas.weber@example.com", "lea.hoffmann@example.com"])

Bei mehr als 10.000 Mitgliedern will Meta die Pakete in einer Sitzung zusammengefasst haben, mit einer laufenden Nummer und einer Markierung am letzten Paket.6 Die Schleife oben zeigt die Form. Ein Job im echten Betrieb ergänzt die Sitzungsfelder und protokolliert jede Antwort.

Abgleichrate und Mindestgröße entscheiden, ob ein Segment überhaupt existiert

Nicht jeder auf deiner Liste wird gefunden. Der Anteil, den die Plattform erkennt, ist die Abgleichrate. Google schreibt, dass die meisten Werbetreibenden Abgleichraten zwischen 29 % und 62 % sehen.8 Meta veröffentlicht keine Zahl, und Klaviyo, das Listen zu Meta synchronisiert, warnt schlicht, dass die Zielgruppe oft kleiner als die Liste sein wird, weil nur Adressen passen, die mit einem Meta Login verknüpft sind.9

Dann kommt die Untergrenze. Googles Display, Such und YouTube Netzwerk brauchen jeweils mindestens 100 aktive Nutzer in den letzten 30 Tagen, bevor eine Liste ausgespielt wird, für Kundenlisten, die nach dem 1. Februar 2024 hochgeladen oder aktualisiert wurden.10 Googles eigene Zählweise hat noch einen Haken: Die Abgleichrate zählt jeden mit einem Google Konto, die Listengröße zählt nur aktive Nutzer, die mit personalisierter Werbung tatsächlich erreichbar sind, die nutzbare Zahl ist also noch einmal kleiner.7 Meta braucht mindestens 100 Menschen für eine Zielgruppe aus einer Kundenliste, so steht es in Klaviyos Dokumentation der Meta Synchronisierung.9

Die erwartete Zahl der erkannten Menschen ist eine einfache Rate mal eine Anzahl:

nmatched=nuploaded×mn_{\text{matched}} = n_{\text{uploaded}} \times m

Dabei ist nmatchedn_{\text{matched}} die erwartete Zahl der Menschen, die die Plattform erkennt, nuploadedn_{\text{uploaded}} die Zahl der Menschen auf der Liste, die du hochlädst, und mm die Abgleichrate, geschrieben als Anteil zwischen 00 und 11. Eine Rate ist Ereignisse geteilt durch Gelegenheiten, von Grund auf erklärt in Grundlagen: Verhältnisse und Raten.

Rechenbeispiel: zwei von Hannas Segmenten

Hanna hat noch keine eigene Abgleichrate, also nimmt sie m=0,45m = 0{,}45 an, die Mitte von Googles veröffentlichter Spanne.

Ihre ganze Liste mit 12.000 Abonnenten:

12.000×0,45=5.40012.000 \times 0{,}45 = 5.400

Hier ist 12.00012.000 die Liste und 0,450{,}45 die angenommene Abgleichrate, also rund 5.400 erkannte Menschen. Bequem über der Untergrenze, auch nachdem Google die inaktiven aussortiert hat.

Ihr schlaues kleines Segment von vorhin, die 180, die auf die Mail zum entkoffeinierten Kaffee geklickt und nicht gekauft haben:

180×0,45=81180 \times 0{,}45 = 81

Hier ist 180180 das Segment und 0,450{,}45 dieselbe angenommene Abgleichrate, also rund 81 erkannte Menschen. Das liegt unter 100, weder Google noch Meta zeigen dieser Gruppe eine Anzeige. Der präzise, befriedigende, verhaltensbasierte Auslöser aus dem alten Artikel existiert als Zielgruppe gar nicht. Um ihn zu nutzen, bräuchte Hanna vor dem Abgleich ein Segment von rund 223 Menschen (100/0,45100 / 0{,}45), in der Praxis mehr, weil Google nur die aktiven zählt. Kleine Segmente sind in der Mail selbst besser aufgehoben.

Kürzliche Käufer auszuschließen ist der Abgleich, der sich zuerst lohnt

Jemandem eine Aktion zu zeigen, der gestern gekauft hat, ist der häufigste Weg, mit Kundenlisten Geld zu verschwenden, und der am leichtesten zu stoppende. Du lädst eine zweite Liste hoch, deine kürzlichen Käufer, und hinterlegst sie in der Kampagne als Ausschluss. Googles Richtlinie zum Kundenabgleich hilft hier auf unerwartete Weise: Jeder Werbetreibende, der die Richtlinien einhält und keine Zahlungsprobleme hatte, darf Listen zum Ausschließen und Beobachten nutzen, für das Ausrichten dagegen braucht es mindestens 90 Tage Werbung mit Google Ads und insgesamt mehr als 50.000 US Dollar Ausgaben.11 Für einen Shop in Hannas Größe ist der Ausschluss also nicht nur der nützliche Fall. Bei Google ist er der verfügbare.

Was kostet es, nicht auszuschließen? Nimm an, das Budget verteilt sich gleichmäßig über die Zielgruppe. Dann ist das Geld, das auf kürzliche Käufer entfällt, das Budget mal ihr Anteil an der Zielgruppe. Mit Ausschluss bleiben zwei Lecks: Käufer, die die Ausschlussliste nicht erkennt, und Käufer, die noch nicht auf der Ausschlussliste angekommen sind.

W=B×s×[(1−c)+c×LT]W = B \times s \times \left[(1 - c) + c \times \frac{L}{T}\right]

Dabei ist WW das monatliche Budget, das an kürzliche Käufer verschwendet wird, in Euro, BB das monatliche Budget, ss der Anteil der Zielgruppe, der im Zeitfenster gekauft hat, cc die Abdeckung, also der Anteil dieser Käufer, den die Ausschlussliste tatsächlich erwischt, LL die durchschnittliche Verzögerung in Tagen zwischen einem Kauf und dem Moment, in dem der Ausschluss greift, und TT die Länge des Zeitfensters in Tagen. Ohne Ausschluss ist c=0c = 0 und die Klammer ist 11. Der erste Term in der Klammer ist der Anteil, der durchrutscht, der zweite der Anteil, der erwischt wird, aber zu spät. Anteile und ihre Veränderungen erkläre ich in Grundlagen: Prozente.

Rechenbeispiel: Hannas Aboaktion

Hanna gibt 900 € im Monat für eine Meta Kampagne aus, die ihren eigenen Abonnenten das Monatsabo anbietet. Von ihren 12.000 Abonnenten haben 3.000 in den letzten 30 Tagen gekauft, also s=3.000/12.000=0,25s = 3.000 / 12.000 = 0{,}25. Die Abgleichrate ändert diesen Anteil nicht, weil Käufer und Nichtkäufer mit derselben angenommenen Rate erkannt werden: Von 5.400 erkannten Abonnenten sind 1.350 kürzliche Käufer, immer noch ein Viertel. Die gleichmäßige Verteilung ist die Annahme des Beispiels. Metas Auslieferung entscheidet, wer was sieht, und der echte Anteil kann höher oder niedriger liegen.

Ohne Ausschluss:

W=900×0,25×1=225W = 900 \times 0{,}25 \times 1 = 225

Hier ist 900900 das Budget und 0,250{,}25 der Anteil der Käufer, also fließen 225 € im Monat in Anzeigen an Menschen, die schon gekauft haben.

Jetzt der Ausschluss. Die Ausschlussliste gleicht über dieselbe Mailadresse ab wie die Zielliste, wer in der einen erkannt wird, wird also auch in der anderen erkannt. Das Leck sind Käufer, die mit einer anderen Adresse bestellt haben als der, mit der sie den Newsletter abonniert haben. Hannas Shop verknüpft Bestellungen über das Kundenkonto mit den Abonnentenprofilen, und sie zählt 450 ihrer 3.000 Käufer, deren Bestelladresse abweicht. Lädt sie nur die Bestelladressen hoch, ergibt das eine Abdeckung von c=2.550/3.000=0,85c = 2.550 / 3.000 = 0{,}85.

Sie lädt einmal pro Woche hoch. Ein Kauf wartet im Schnitt ein halbes Intervall auf den nächsten Upload, 3,5 Tage, das ist der Mittelwert einer Verzögerung, die gleichmäßig zwischen null und sieben Tagen verteilt ist, erklärt in Grundlagen: der Mittelwert. Meta schreibt, dass Änderungen in der Regel bis zu 24 Stunden brauchen,6 also rechnet sie einen Tag dazu: L=4,5L = 4{,}5.

W=900×0,25×[(1−0,85)+0,85×4,530]=225×(0,15+0,1275)=62,44W = 900 \times 0{,}25 \times \left[(1 - 0{,}85) + 0{,}85 \times \frac{4{,}5}{30}\right] = 225 \times (0{,}15 + 0{,}1275) = 62{,}44

Hier ist 0,150{,}15 der Anteil, der durchrutscht, und 0,85×4,5/30=0,12750{,}85 \times 4{,}5 / 30 = 0{,}1275 der Anteil, der zu spät erwischt wird. Rund 62 € im Monat gehen weiter verloren.

Mit täglichem Upload sinkt die Verzögerung auf 0,5+1=1,50{,}5 + 1 = 1{,}5 Tage:

W=225×[0,15+0,85×1,530]=225×(0,15+0,0425)=43,31W = 225 \times \left[0{,}15 + 0{,}85 \times \frac{1{,}5}{30}\right] = 225 \times (0{,}15 + 0{,}0425) = 43{,}31

Hier ist 0,04250{,}0425 der Anteil, der bei täglichem Upload zu spät erwischt wird. Rund 43 €.

Zuletzt lädt sie jede Adresse aus dem Kundenkonto plus die Telefonnummer hoch, mehrere Kennungen in derselben Zeile, was Google ausdrücklich empfiehlt.8 Ihre Annahme, die sie am Abgleichbericht des nächsten Monats prüfen kann: Damit steigt die Abdeckung auf c=0,97c = 0{,}97.

W=225×[0,03+0,97×1,530]=225×(0,03+0,0485)=17,66W = 225 \times \left[0{,}03 + 0{,}97 \times \frac{1{,}5}{30}\right] = 225 \times (0{,}03 + 0{,}0485) = 17{,}66

Hier ist 0,030{,}03 der Anteil, der noch durchrutscht, und 0,04850{,}0485 der Anteil, der zu spät erwischt wird. Rund 18 € im Monat.

Monatliche Ausgaben für Anzeigen an kürzliche Käufer, nach Art des AusschlussesOhne Ausschluss gibt die Ottensener Kaffeerösterei 225 € im Monat dafür aus, kürzlichen Käufern die Aboaktion zu zeigen. Ein wöchentlicher Ausschluss mit Bestelladressen senkt das auf rund 62 €, ein täglicher Upload auf rund 43 € und ein täglicher Upload mit jeder Adresse und der Telefonnummer auf rund 18 €.Ottensener Kaffeerösterei, Aktion mit 900 € im Monat, Verlust an kürzliche Käufer0 €62,5 €125 €187,5 €250 €225 €KeinAusschluss62,4 €Wöchentlich,Bestelladresse43,3 €Täglich,Bestelladresse17,7 €Täglich, alleKennungenVerlorene Ausgaben pro Monat (€)

Jeder Balken ist eine Art, den Ausschluss zu betreiben. Die senkrechte Achse zeigt die monatlichen Ausgaben für Anzeigen an Menschen, die in den letzten 30 Tagen gekauft haben. Die Erkenntnis hat zwei Teile. Den Ausschluss überhaupt einzuschalten spart am meisten, rund 163 €. Danach schlägt es häufigeres Hochladen, mehr deiner Käufer zu erkennen (mehr Kennungen pro Zeile): Der Wechsel von wöchentlich auf täglich spart rund 19 €, die zusätzlichen Kennungen weitere 26 €. Aufs Jahr gerechnet liegt zwischen keinem Ausschluss und dem letzten Balken bei 900 € Budget ein Unterschied von rund 2.500 €.

Eine Abkürzung solltest du kennen. Richtet sich die Kampagne an Besucher deiner Website statt an deine Liste, kann Meta eine Zielgruppe direkt aus den Purchase Events deines Pixels bauen, mit einem Aufbewahrungszeitraum,12 und dieselbe Kennung, die jemanden in die Besucherzielgruppe gebracht hat, nimmt ihn auch wieder heraus. Das deckt nur Besucher ab, die dem Werbecookie zugestimmt haben, und darum geht es im Abschnitt zum Recht weiter unten.

Der Takt der Aktualisierung ist eine Entscheidung, keine Voreinstellung

Jede Liste hat ein Haltbarkeitsdatum. Bei Google laufen Mitgliedschaften im Kundenabgleich nach 540 Tagen ab, und eine Liste braucht in diesem Zeitraum mindestens 100 hinzugefügte oder aktualisierte Mitglieder, um nutzbar zu bleiben.4 Die Google Ads API begrenzt die Mitgliedsdauer einer Liste auf 540 Tage, das ist auch der Standardwert, und seit dem 7. April 2025 ist eine unbegrenzte Dauer nicht mehr möglich.5 Googles Empfehlung ist deutlich: Listen, die nicht aktualisiert werden, veralten, und Uploads über die API sollten mindestens einmal täglich an die Listen anhängen.8 Bei Meta werden Zielgruppen aus Kundendateien, die mehr als zwei Jahre in keiner aktiven Anzeigengruppe genutzt wurden, zur Löschung markiert.6

Die Verarbeitung braucht auf beiden Seiten Zeit. Ein Upload Job bei Google kann in zehn Minuten fertig sein oder bis zu 24 Stunden dauern, danach kann es noch einmal bis zu 24 Stunden dauern, bis die Liste gefüllt ist, und wer öfter als alle zwölf Stunden hochlädt, riskiert, dass sie auf "In Bearbeitung" stehen bleibt.5 Meta schreibt, dass Änderungen in der Regel bis zu 24 Stunden dauern und das Entfernen länger brauchen kann, je größer das Konto wird.6

Ein Beispiel: Hannas Käuferliste soll Menschen 30 Tage nach ihrer letzten Bestellung wieder entlassen, denn nach einem Monat ist der Kaffee alle, und eine Erinnerung ist wieder willkommen. Bei täglichem Upload fügt jede Datei die Käufer von gestern hinzu und entfernt die, deren letzte Bestellung jetzt 31 Tage zurückliegt. Ihre Abonnentenliste für die Ausrichtung ändert sich langsam, also reicht eine wöchentliche Aktualisierung, und der Ablauf nach 540 Tagen greift nie, weil der wöchentliche Job weit mehr als 100 Mitglieder berührt. Die schnelle Liste bekommt den schnellen Takt. Die langsame Liste den langsamen.

Fertige Integration oder eigener Code

Es gibt zwei Wege für die Uploads. Dein Anbieter für Newsletter (der Email Service Provider, kurz ESP) synchronisiert Segmente vielleicht für dich, oder du schreibst den Job selbst gegen die APIs der Plattformen.

Klaviyo, als ein dokumentiertes Beispiel, erledigt die Leitungen in beide Richtungen für dich. Eine Klaviyo Liste oder ein Segment lässt sich eins zu eins mit einer Meta Custom Audience verbinden, die Synchronisierung läuft nur von Klaviyo zu Meta, Änderungen werden fortlaufend gesendet, und Meta kann 24 bis 48 Stunden brauchen, um sie anzuzeigen.9 Auf der Google Seite sendet dieselbe Eins zu eins Synchronisierung Mailadressen und Telefonnummern, Aktualisierungen gehen in Echtzeit raus, Google kann bis zu 48 Stunden für die Verarbeitung brauchen, und das Ganze funktioniert nur, wenn das Google Ads Konto für den Kundenabgleich berechtigt ist. Klaviyo dokumentiert auch, wie man ein Segment synchronisiert und es dann von einer Kampagne ausschließt, also genau den Fall des Ausschlusses.13

Im Kleingedruckten steckt ein Haken. Für Zielgruppen im Europäischen Wirtschaftsraum, also auch in Deutschland, bietet Klaviyo ein Kästchen an, mit dem du erklärst, nur Zielgruppen zu senden, die der Werbeausrichtung zugestimmt haben. Setzt du das Häkchen, sendet Klaviyo ad_user_data und ad_personalization für jedes Profil der Synchronisierung als erteilt, und Klaviyo prüft die Einwilligung der einzelnen Profile nicht selbst.13 Das Kästchen ist ein Versprechen, das du gibst, kein Filter, den es anwendet. Das Filtern muss das Segment übernehmen.

Eigener Code lohnt sich, wenn die Daten in der Datenbank deines Shops oder in einem Data Warehouse liegen statt im ESP, oder wenn du mehrere Kennungen pro Zeile brauchst. Bei Google plane mit der Data Manager API: Seit dem 1. April 2026 schlagen die älteren Dienste für den Kundenabgleich in der Google Ads API für Projekte fehl, die zwischen dem 1. Oktober 2025 und dem 31. März 2026 keine Aktivität im Kundenabgleich hatten, und Googles Dokumentation verweist stattdessen auf die Data Manager API.5 Die sendende Seite eines solchen Jobs, mit signierten Webhooks, Warteschlangen und Wiederholungen, beschreibe ich im Artikel über Webhooks und Serverless für die Logik deiner Kampagnen.

Ein Beispiel: Hannas Abonnentenliste liegt in Klaviyo, also ist die Zielliste eine fertige Synchronisierung eines Klaviyo Segments. Ihre Käuferliste braucht jede Adresse aus dem Kundenkonto und die Telefonnummer, und die liegen im Shop, also ist sie ein nächtlicher Job von 40 Zeilen, der die Bestellungen des Shops liest, die Kennungen hasht und die Zielgruppe ersetzt. Zwei Listen, zwei Wege, jede dort, wo ihre Daten schon liegen.

Die andere Richtung: Die Anzeige entscheidet über die Mail

Bisher hat die Mailseite die Werbung geformt. Der Rückweg ist einfacher und oft nützlicher: Was jemand in einer Anzeige angeklickt hat, entscheidet, welche Mails er bekommt.

Hier hatte der alte Artikel die richtige Idee. Eine Anzeige trägt UTM Parameter, die Kennzeichen wie utm_campaign und utm_content in der Adresse der Zielseite, die sagen, welche Kampagne und welche Anzeige den Besucher gebracht hat.14 Gibt das Anmeldeformular sie an das Profil des Abonnenten weiter, kann die Willkommensserie die Geschichte der Anzeige weitererzählen, statt eine allgemeine zu beginnen. Die Disziplin bei der Benennung, die UTM Parameter erst nützlich macht, steht in UTM Tracking für deine Kampagnen meistern.

Wie du das Kennzeichen von der Zielseite zum Formular trägst, ist nicht egal. Die deutschen Datenschutzbehörden zählen ausdrücklich Web Storage, also Local Storage und Session Storage, zu den Speichertechniken, die unter § 25 TDDDG fallen, genau wie Cookies.3 Das Snippet im alten Artikel hat utm_term im Local Storage abgelegt. Das ist eine Speicherung auf dem Gerät, und dient sie der Werbemessung, greift keine Ausnahme.2 Der leichtere Weg: Lies die Parameter aus der Adresse der Seite, auf der das Formular sitzt, und schreib sie in versteckte Felder, dann wird auf dem Gerät nichts gespeichert. Am saubersten ist es, wenn dein Server die Parameter direkt aus der Anfrage liest und die versteckten Felder schon beim Ausliefern der Seite füllt. Bewegt sich der Besucher vor der Anmeldung über die Website, heb das Kennzeichen erst auf, nachdem er eingewilligt hat, oder nimm in Kauf, dass es verloren geht.

Ein Beispiel: Hanna schaltet eine Google Suchanzeige für entkoffeinierte Bohnen, mit utm_campaign=decaf in der Adresse der Zielseite. Lea, unter lea.hoffmann@example.com, landet auf der Seite für entkoffeinierten Kaffee und meldet sich über das Formular auf genau dieser Seite an. Der Shop schreibt decaf aus der Adresse in ein verstecktes Feld, und Klaviyo speichert es als Profileigenschaft. Ihre Willkommensserie beginnt mit der entkoffeinierten Auswahl und einer Anleitung zur Zubereitung, nicht mit der Espressomischung, die alle anderen zuerst bekommen. Nichts hat den Speicher ihres Geräts berührt, und das Versprechen der Anzeige ist direkt in ihrem Postfach angekommen.

Das Recht: Einwilligung für die Liste, Einwilligung für das Pixel

Zwei verschiedene Regelwerke gelten, und es lohnt sich, sie auseinanderzuhalten.

Eine Kundenliste hochzuladen ist eine Verarbeitung personenbezogener Daten nach der Datenschutz Grundverordnung (DSGVO), du brauchst also eine Rechtsgrundlage. Auf dem Papier kommen zwei in Frage, die Einwilligung und das berechtigte Interesse nach Artikel 6 Absatz 1 Buchstabe f. Erwägungsgrund 47 sagt, dass die Verarbeitung zum Zweck der Direktwerbung als einem berechtigten Interesse dienend betrachtet werden "kann".15 Das "kann" trägt viel Gewicht. Derselbe Erwägungsgrund verlangt eine sorgfältige Abwägung und stellt auf die vernünftigen Erwartungen der betroffenen Person ab: Muss sie mit einer weiteren Verarbeitung nicht rechnen, können ihre Interessen überwiegen.15

Genau an dieser Abwägung ist in Deutschland der Abgleich von Kundenlisten schon einmal gescheitert. Das Bayerische Landesamt für Datenschutzaufsicht (BayLDA) hat 2016 bei über 40 Unternehmen geprüft, ob und wie sie Facebook Custom Audiences einsetzen, und bei den meisten einen Verstoß gefunden. Einem Onlinehändler, der weitermachen wollte, untersagte es den Einsatz der Custom Audience über die Kundenliste ohne Einwilligung. Das Verwaltungsgericht Bayreuth bestätigte das im Eilverfahren mit Beschluss vom 8. Mai 2018 (Aktenzeichen B 1 S 18.105).16 Laut dem Tätigkeitsbericht des BayLDA für 2017 und 2018 hat danach auch der Bayerische Verwaltungsgerichtshof die Anordnung bestätigt, mit diesen Kernaussagen: SHA256 Hashen anonymisiert personenbezogene Daten nicht, Facebook war in diesem Fall kein Auftragsverarbeiter, sondern eine eigene verantwortliche Stelle, das Hochladen der Kundenliste ist eine Übermittlung, und diese Übermittlung lässt sich nicht auf Artikel 6 Absatz 1 Buchstabe f stützen, weil die Kunden nicht damit rechnen, dass ihre Mailadresse an Facebook geht. Der Einsatz ist deshalb nur mit vorheriger informierter Einwilligung zulässig.17 Die Entscheidungen beruhten auf der Rechtslage vor dem 25. Mai 2018, das BayLDA hält sie aber auch unter der DSGVO für maßgeblich, weil es im Kern um genau diese Abwägung ging.17

Für einen Shop in Deutschland heißt das: Die sichere Rechtsgrundlage für den Upload deiner Liste zu Google und Meta ist die Einwilligung, nicht das berechtigte Interesse. Ein Satz in der Datenschutzerklärung, den niemand liest, reicht dafür nicht. Das ist der wichtigste Unterschied dieses Artikels zur Lage anderswo, und er hat eine praktische Folge: In jede Formel oben gehen nur die Menschen ein, die zugestimmt haben.

Wer wofür verantwortlich ist, entscheidet der tatsächliche Ablauf, nicht der Vertrag, so das BayLDA.17 Legen zwei Stellen Zwecke und Mittel einer Verarbeitung gemeinsam fest, sind sie nach Artikel 26 DSGVO gemeinsam Verantwortliche und müssen in einer Vereinbarung regeln, wer welche Pflicht erfüllt.18 Metas Bedingungen für Custom Audiences beschreiben dich für Daten aus der EU als Verantwortlichen und Meta Platforms Ireland als deinen Auftragsverarbeiter, und sie lassen dich zusichern, dass du eine Rechtsgrundlage für die Daten hast und dass die Liste niemanden enthält, der einer solchen Nutzung widersprochen hat.19 Googles Richtlinie verlangt, dass deine Datenschutzerklärung die Weitergabe an Dritte offenlegt und dass du die Einwilligung zur Weitergabe einholst, wo das Gesetz sie verlangt.11 Googles Technik setzt einen Teil davon selbst durch: Ein Upload, bei dem eines der Einwilligungsfelder auf verweigert steht, wird abgelehnt, und für Nutzer im EWR zählt ein fehlender Wert als keine Einwilligung.5

Gegen Direktwerbung kann jeder jederzeit Widerspruch einlegen, und nach einem Widerspruch dürfen seine Daten dafür nicht mehr verarbeitet werden. Eine Einwilligung lässt sich jederzeit widerrufen.20 In der Praxis: Wer sich abgemeldet, widersprochen oder seine Einwilligung zurückgezogen hat, bleibt aus jedem Upload draußen, und die Sperrliste wird vor jedem Upload geprüft.

Die Pixelseite regelt § 25 TDDDG. Setzt deine Website Cookies, Pixel oder ähnliche Techniken für Onlinewerbung ein, brauchst du die Einwilligung, denn Werbung ist nicht unbedingt erforderlich, um den Dienst bereitzustellen, den der Besucher ausdrücklich angefordert hat.2 3 Jede Website Zielgruppe, auch die Abkürzung über die Purchase Events oben, steht auf diesem Ja. Wie das Einwilligungssignal zu Googles Tags kommt, steht in Event Tracking und Consent Mode, und was sich ändert, wenn Events über deinen eigenen Server laufen, in Server Side Tracking. Server Side macht das Ja nie überflüssig.

Rechenbeispiel: was die Einwilligung mit Hannas Liste macht

Hanna setzt in ihr Anmeldeformular ein eigenes Kästchen, nicht vorausgewählt: "Ja, meine Mailadresse darf gehasht an Google und Meta übermittelt werden, damit ich weniger Werbung für Dinge sehe, die ich schon gekauft habe, und mehr für das, was mich interessieren könnte. Ich kann das jederzeit widerrufen." Jedes Segment, das sie hochlädt, filtert auf dieses Häkchen. In den Beispielen oben haben alle 12.000 es gesetzt. Setzen es nur 6.000, ergibt dieselbe Formel:

6.000×0,45=2.7006.000 \times 0{,}45 = 2.700

Hier ist 6.0006.000 die Zahl der Abonnenten mit Einwilligung, also das neue nuploadedn_{\text{uploaded}}, und 0,450{,}45 die angenommene Abgleichrate, also rund 2.700 erkannte Menschen statt 5.400. Die Formel ist dieselbe wie oben, erklärt in Grundlagen: Verhältnisse und Raten. Für die Aboaktion ändert sich die Rechnung zum Ausschluss dabei nicht: Wer nicht eingewilligt hat, steht weder auf der Zielliste noch auf der Ausschlussliste, sieht die Aktion über diese Liste also gar nicht. Kleine Segmente fallen dagegen noch schneller unter die Grenze von 100.

Ihr nächtlicher Job baut jede Liste aus einer Abfrage, die jeden auf der Sperrliste und jeden ohne Häkchen auslässt. Meldet sich Jonas an einem Donnerstagabend ab, fehlt er im Upload am Freitag, und der Job am Freitag schickt außerdem eine Löschung für seinen Fingerabdruck. Nichts davon ist Rechtsberatung, und bei einer größeren Liste ist eine Stunde bei einer Anwältin oder einem Anwalt für Datenschutzrecht gut angelegtes Geld.

Der ganze Abgleich auf einer Seite

Wie Kundendaten zwischen Shop, Newsletter Tool und Werbeplattformen fließenEin Ablauf von oben nach unten: Eine Bestellung oder Anmeldung aktualisiert das Kundenprofil, das Profil speist Segmente wie kürzliche Käufer und Abonnenten, eine Prüfung entfernt alle, die widersprochen oder nicht eingewilligt haben, Profile mit Einwilligung werden normalisiert und gehasht, der Upload läuft über die fertige Synchronisierung des Newsletter Tools oder einen eigenen API Job, die Plattform gleicht ab und verarbeitet bis zu 24 bis 48 Stunden, die Zielgruppe dient als Ausschluss oder als Ziel, und eine wöchentliche Prüfung kontrolliert Abgleichraten und Listengrößen, bevor der Kreislauf von vorn beginnt. Profile, die die Prüfung nicht bestehen, werden gezählt, aber nie hochgeladen.Bestellung, Anmeldung oder Klick ineiner Mail aktualisiert dasKundenprofilSegmente neu berechnet: kürzlicheKäufer, Abonnenten, Herkunft ausAnzeigenWidersprochen, abgemeldet oderkeine Einwilligung zurÜbermittlung?jaAus jedem Upload heraushalten, Löschungsenden, falls schon hochgeladenneinMailadresse und Telefonnummernormalisieren und mit SHA256 hashenUpload über die fertigeSynchronisierung des ESP oder eineneigenen API JobPlattform gleicht ab und verarbeitet,bis zu 24 bis 48 StundenZielgruppe dient als Ausschluss oder,wo berechtigt, als ZielWöchentliche Prüfung: Abgleichrate,Listengröße über 100, Verlust ankürzliche Käufer

Lies es von oben nach unten. Die Daten beginnen im Shop und im Newsletter Tool, nie in der Werbeplattform. Die Entscheidung steht vor dem Hashen, sodass nichts, was nicht übertragen werden darf, je einen Fingerabdruck bekommt. Die Verzögerung bei der Verarbeitung ist ein fester Preis, mit dem du planst, und deshalb laufen Listen kürzlicher Käufer täglich und alles andere wöchentlich. Und die Prüfung schließt den Kreis: Fällt die Abgleichrate oder rutscht eine Liste unter 100, hört die Zielgruppe still auf zu wirken, und nur wer hinsieht, bemerkt es.

Ein Beispiel: Jonas bestellt an einem Montag um 14:00 Uhr eine Tüte der Hausmischung. Der Shop aktualisiert sein Profil, und der Job in dieser Nacht nimmt ihn ins Segment der kürzlichen Käufer auf. Er hat bei der Anmeldung eingewilligt und nicht widersprochen, also werden seine Adresse und seine Telefonnummer gehasht und hochgeladen. Spätestens am Mittwoch haben Meta und Google die Datei verarbeitet, und er sieht die Aboaktion nicht mehr. An Tag 31 nimmt ihn der Job aus der Käuferliste, die Aktion darf ihn wieder erreichen, und in derselben Woche geht seine Mail mit der Erinnerung an Nachschub raus. Ein Kunde, zwei Kanäle, eine Geschichte.

Kontinuität schlägt Raffinesse

Der Instinkt des alten Artikels stimmt noch immer: Eine Anzeige und eine Mail, die einander ignorieren, verschwenden Geld und Wohlwollen. Geändert hat sich der Mechanismus. Schließ kürzliche Käufer mit jeder Kennung aus, die du hast, aktualisiere schnelle Listen täglich und langsame wöchentlich, trag das Versprechen der Anzeige in die Willkommensmail, hol in Deutschland vor dem ersten Upload die Einwilligung ein, und halte die Menschen, die nein gesagt haben, aus jeder Datei heraus, jedes Mal.

Quellen

Footnotes

  1. Apple, Mail Privacy Protection and privacy, Apple Legal, https://www.apple.com/legal/privacy/data/en/mail-privacy-protection/

  2. Bundesministerium der Justiz, Telekommunikation Digitale Dienste Datenschutz Gesetz (TDDDG), § 25 Schutz der Privatsphäre bei Endeinrichtungen, Absätze 1 und 2, Gesetze im Internet, https://www.gesetze-im-internet.de/ttdsg/__25.html

  3. Konferenz der unabhängigen Datenschutzaufsichtsbehörden des Bundes und der Länder (DSK), Orientierungshilfe der Aufsichtsbehörden für Anbieter:innen von digitalen Diensten (OH Digitale Dienste), Version 1.2, Randnummern 21, 74 und 78, DSK, November 2024, https://www.datenschutzkonferenz-online.de/media/oh/OH_Digitale_Dienste.pdf

  4. Google, About Customer Match, Google Ads Help, 2026, https://support.google.com/google-ads/answer/6379332

  5. Google, Get started with Customer Match, Google Ads API documentation, Google for Developers, 2026, https://developers.google.com/google-ads/api/docs/remarketing/audience-segments/customer-match/get-started

  6. Meta, Customer file Custom Audiences, Marketing API documentation, Meta for Developers, 2026, https://developers.facebook.com/docs/marketing-api/audiences/guides/custom-audiences

  7. Google, Troubleshoot customer list issues, Google Ads API documentation, Google for Developers, 2026, https://developers.google.com/google-ads/api/docs/remarketing/audience-segments/customer-match/troubleshoot

  8. Google, Customer Match best practices, Google Ads Help, https://support.google.com/google-ads/answer/10010286

  9. Klaviyo, Getting started with Meta Ads, Klaviyo Help Center, 2026, https://help.klaviyo.com/hc/en-us/articles/115005082127

  10. Google, About audience segments in Audience manager, Google Ads Help, 2026, https://support.google.com/google-ads/answer/7558048

  11. Google, Richtlinie zum Kundenabgleich, Google Ads Hilfe, 2026, https://support.google.com/google-ads/answer/6299717?hl=de

  12. Meta, Website Custom Audiences, Marketing API documentation, Meta for Developers, 2026, https://developers.facebook.com/docs/marketing-api/audiences/guides/website-custom-audiences

  13. Klaviyo, Getting started with Google Ads, Klaviyo Help Center, 2026, https://help.klaviyo.com/hc/en-us/articles/6353315757211

  14. Google, URL builders: collect campaign data with custom URLs, Google Analytics Help, https://support.google.com/analytics/answer/10917952

  15. Europäisches Parlament und Rat, Verordnung (EU) 2016/679 (Datenschutz Grundverordnung), Artikel 6 Absatz 1 Buchstabe f und Erwägungsgrund 47, EUR Lex, 2016, https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32016R0679

  16. Bayerisches Landesamt für Datenschutzaufsicht, Pressemitteilung: Verwaltungsgericht Bayreuth bestätigt, Facebook Custom Audience ohne Einwilligung unzulässig, 15. Juni 2018, https://www.lda.bayern.de/media/pm2018_09.pdf

  17. Bayerisches Landesamt für Datenschutzaufsicht, 8. Tätigkeitsbericht für die Jahre 2017 und 2018, Abschnitt 8.7 Facebook Custom Audience über die Kundenliste, Seiten 58 und 59, 2019, https://www.lda.bayern.de/media/baylda_report_08.pdf

  18. Europäisches Parlament und Rat, Verordnung (EU) 2016/679 (Datenschutz Grundverordnung), Artikel 26 Absatz 1 Gemeinsam Verantwortliche, EUR Lex, 2016, https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32016R0679

  19. Meta, Custom Audience terms, Abschnitte 1, 4 und 11, Meta, https://www.facebook.com/legal/terms/customaudience

  20. Europäisches Parlament und Rat, Verordnung (EU) 2016/679 (Datenschutz Grundverordnung), Artikel 21 Absätze 2 und 3 Widerspruchsrecht und Artikel 7 Absatz 3, EUR Lex, 2016, https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32016R0679

Wenn deine Anzeigen noch Menschen hinterherlaufen, die letzte Woche gekauft haben, zeige ich dir in einem kostenlosen Workshop, welche Listen wohin fließen sollten und was du in Deutschland überhaupt hochladen darfst. Die ersten zwei Wochen Arbeit gehen auf meine Rechnung.