Was ist Mailchimp?
Mailchimp ist ein weit verbreiteter Dienst für E-Mail-Marketing. Kontakte liegen dort in einer Audience — Mailchimp selbst beschreibt sie als die Sammlung deiner Kontakte und empfiehlt, mit einer einzigen auszukommen. An jedem Kontakt hängen Merge-Felder für zusätzliche Daten wie Vor- und Nachname und Tags zur Einordnung. Für die Website ist vor allem eines wichtig: Mailchimp dokumentiert seine Marketing-API öffentlich, sodass eine Anmeldung nicht über ein eingebettetes Fremdformular laufen muss, sondern über ein eigenes Formular und einen serverseitigen Endpunkt gehen kann.
Wie kommt eine Newsletter-Anmeldung von der Website nach Mailchimp?
Über einen serverseitigen Zwischenschritt. Das Anmeldeformular gehört zur Website, ist also im eigenen Design gebaut und im eigenen Markup verankert. Abgeschickt wird es an einen eigenen Endpunkt auf demselben Server. Dort wird die Eingabe geprüft, und erst von dort geht der Aufruf an die Marketing-API. Die Basis-URL ist dabei kontospezifisch: Sie beginnt mit dem Serverpräfix des Kontos, gefolgt von .api.mailchimp.com/3.0/ — also etwa us6.api.mailchimp.com/3.0/. Das Serverpräfix steht laut Dokumentation hinter dem Bindestrich am Ende des API-Schlüssels. Authentifiziert wird per HTTP-Basic-Authentifizierung, bei der ein beliebiger Benutzername und der API-Schlüssel als Passwort übergeben werden; alternativ ist ein OAuth-2-Token möglich. Der Kontakt selbst entsteht über einen POST-Aufruf auf /lists/{list_id}/members mit E-Mail-Adresse und Status.
Löst die API die Bestätigungsmail für das Double-Opt-in aus?
Ja, und zwar über den Status, mit dem der Kontakt angelegt wird. Die Dokumentation nennt vier Werte: subscribed für einen Kontakt, der Kampagnen empfangen kann, unsubscribed für einen abgemeldeten, cleaned für einen, dessen Adresse zurückgekommen ist, und pending für einen, der die Aufnahme mit Double-Opt-in angefragt, aber noch nicht bestätigt hat. Zu pending steht dort wörtlich, dass dieser Wert zu verwenden ist, um eine Bestätigungsmail zu senden, und dass der Status nach der Bestätigung auf subscribed wechselt. Für eine Anmeldung über die Website ist deshalb pending der richtige Weg: Die Bestätigungsmail verschickt Mailchimp, der Link darin führt zurück zum Dienst, und erst danach ist der Kontakt eingetragen. Der Wert subscribed trägt dagegen direkt ein, ohne Bestätigungsschritt.
Was sind Audience, Merge-Felder und Tags?
Die drei Bausteine des Datenmodells. Die Audience ist der Verteiler, in dem die Kontakte liegen; jeder API-Aufruf für Kontakte trägt ihre Kennung als list_id im Pfad. Merge-Felder sind die zusätzlichen Datenfelder am Kontakt, verwaltet je Audience unter /lists/{list_id}/merge-fields und angesprochen über ihr Merge-Tag, etwa FNAME und LNAME. Tags sind Etiketten zur Einordnung; sie werden über /lists/{list_id}/members/{subscriber_hash}/tags gesetzt, mit dem Status active zum Setzen und inactive zum Entfernen, und ein noch nicht vorhandener Tag wird beim Setzen neu angelegt. Für die Website heißt das: Welches Formularfeld auf welches Merge-Feld geht und welcher Tag ein Anmeldeformular kennzeichnet, wird vor dem Bauen festgelegt — nicht nachträglich im Verteiler aufgeräumt.
Was passiert, wenn eine Adresse schon in der Audience liegt?
Dafür gibt es einen eigenen, dokumentierten Weg. Neben dem POST-Aufruf zum Anlegen kennt die API den PUT-Aufruf auf /lists/{list_id}/members/{subscriber_hash}: Existiert der Kontakt, wird er aktualisiert; existiert er nicht, wird er mit dem Wert aus status_if_new angelegt — auch hier stehen subscribed, unsubscribed, cleaned und pending zur Auswahl. Der subscriber_hash ist dabei kein Zufallswert, sondern der MD5-Hash der kleingeschriebenen E-Mail-Adresse, lässt sich also auf dem eigenen Server berechnen. Wichtig ist die Rückmeldung nach vorn: Der Absender bekommt eine verständliche Antwort, statt in einen technischen Fehler zu laufen, und bei einem bereits eingetragenen oder abgemeldeten Kontakt entscheidet die Fehlerbehandlung, was angezeigt wird.
Wie laufen Abmeldung und Löschung?
Beides sind zwei verschiedene Dinge, und beide sind dokumentiert. Die Abmeldung ist eine Statusänderung: Der Kontakt bekommt den Status unsubscribed und bleibt mit seiner Historie erhalten. Daneben steht das Archivieren über einen DELETE-Aufruf auf /lists/{list_id}/members/{subscriber_hash}. Und schließlich gibt es das endgültige Löschen über /lists/{list_id}/members/{subscriber_hash}/actions/delete-permanent, das alle personenbezogenen Daten des Kontakts entfernt; die Dokumentation weist darauf hin, dass sich dieser Kontakt danach nicht wieder importieren lässt. Auf der Website planen wir beide Wege mit ein: den Abmeldelink in jeder Mail und einen Ablauf für Auskunfts- und Löschanfragen, damit sie nicht am Support hängen bleiben.
Was ist beim Datenschutz zu beachten, wenn Mailchimp ein US-Anbieter ist?
Mailchimp wird von der The Rocket Science Group LLC betrieben, einem Unternehmen aus den USA. Damit sind zwei Punkte zu klären, bevor die Anbindung live geht: die Auftragsverarbeitung und der Datentransfer. Der Anbieter stellt dafür ein Data Processing Addendum bereit, in dem er sich als Auftragsverarbeiter beschreibt und das die Standardvertragsklauseln sowie den EU-US Data Privacy Framework als Grundlagen für die Übermittlung benennt. Was davon im konkreten Fall trägt, gehört in die Bewertung durch die eigene Rechtsberatung — wir liefern die technische Seite: Datensparsamkeit im Formular, serverseitige Übertragung, dokumentiertes Double-Opt-in, benannte Löschwege. Wer die Verarbeitung innerhalb der EU halten möchte, entscheidet sich für einen Anbieter, der genau das zusichert; die Technik der Anbindung bleibt dieselbe.
Lässt sich Mailchimp in TYPO3, WordPress oder Statamic integrieren?
Ja, in allen dreien — und zwar so, dass die Anbindung Teil der Website ist und nicht daneben liegt. In TYPO3 bauen wir eine eigene Extension: das Anmeldeformular als Plugin-Element, das die Redaktion auf jeder Seite platziert, eine serverseitige Route mit passender Middleware als Endpunkt, Fluid für die Ausgabe und den API-Schlüssel in der Extension-Konfiguration. In WordPress entsteht ein eigenes Plugin statt Theme-Code, damit die Anbindung einen Theme-Wechsel übersteht: eine eigene REST-Route nimmt das Formular entgegen, der Schlüssel liegt in der wp-config.php oder in einer Umgebungsvariablen, ausgegeben wird über Template-Dateien und Blocks für den Editor. In Statamic liegt Laravel darunter: Route plus Controller als Endpunkt, ein Blueprint für das Formularmodell, der Schlüssel in der .env-Datei, gerendert mit Antlers oder Blade. Gemeinsam ist allen dreien, dass der Schlüssel serverseitig bleibt und im Browser der Besucherin kein Fremdcode geladen wird.