Eigenes Erweiterungsplugin für MailPoet, das für ausgewählte Listen eine separate Bestätigung jeder neuen Listenanmeldung erzwingt – auch dann, wenn die E-Mail-Adresse in MailPoet bereits als bestätigter Abonnent existiert.
Das Plugin wurde ursprünglich für Webinar-Anmeldungen entwickelt, ist aber nicht auf Webinare beschränkt. Es kann für beliebige MailPoet-Listen verwendet werden, bei denen jede neue Listenzuordnung separat bestätigt werden soll.
Wann das Plugin notwendig ist
MailPoets Double-Opt-in bezieht sich grundsätzlich auf den Status des Abonnenten. Ist eine E-Mail-Adresse bereits bestätigt, kann sie einer weiteren Liste hinzugefügt werden, ohne erneut eine Bestätigungsmail zu erhalten.
Das ist problematisch, wenn für unterschiedliche Angebote eine jeweils eigene Einwilligung bzw. Bestätigung gewünscht ist – zum Beispiel bei einzelnen Webinaren oder einer zusätzlichen Newsletter-Anmeldung.
Das Plugin setzt deshalb eine eigene Bestätigungsebene vor die eigentliche MailPoet-Listenzuordnung.
Ablauf einer geschützten Anmeldung
- Der Benutzer sendet ein MailPoet-Formular ab.
- Das Plugin prüft, ob eine der ausgewählten MailPoet-Listen geschützt ist.
- Die Anmeldung wird zunächst in einer eigenen Pending-Tabelle gespeichert.
- MailPoet erhält zu diesem Zeitpunkt noch keine Listenzuordnung.
- Das Plugin verschickt eine eigene Bestätigungsmail.
- Der Benutzer klickt auf den Bestätigungslink.
- Erst jetzt wird der Abonnent angelegt bzw. aktualisiert und der gewünschten MailPoet-Liste zugeordnet.
- MailPoet-Automationen können anschließend normal auf die erfolgte Listenzuordnung reagieren.
- Optional erfolgt danach eine Weiterleitung auf eine definierte WordPress-Seite.
Wichtig: Listenzuordnung erst nach Bestätigung
Die geschützte Liste darf nicht zunächst zugewiesen und anschließend wieder entfernt werden. Eine solche vorübergehende Listenzuordnung könnte bereits MailPoet-Automationen auslösen.
Deshalb fängt das Plugin die Anmeldung vor der eigentlichen MailPoet-Zuordnung ab. Die Listenzuordnung findet ausschließlich nach einem gültigen Klick auf den Bestätigungslink statt.
Neue und bestehende MailPoet-Abonnenten
Das Plugin funktioniert sowohl mit neuen E-Mail-Adressen als auch mit bereits vorhandenen und bestätigten MailPoet-Abonnenten.
Bei einem bestehenden Abonnenten werden die übermittelten Formulardaten aktualisiert. Bei einem neuen Abonnenten wird ein neuer MailPoet-Abonnent angelegt. Anschließend wird der Abonnent als bestätigt gespeichert und der gewünschten Liste zugeordnet.
Dadurch funktioniert die listenspezifische Bestätigung unabhängig davon, ob die betreffende E-Mail-Adresse bereits über ein anderes Formular oder eine andere Liste in MailPoet vorhanden ist.
Pending-Bestätigungen
Noch nicht bestätigte Anmeldungen werden in einer eigenen Datenbanktabelle gespeichert:
wp_i2_mp_pending_confirmationsDer tatsächliche Tabellenname verwendet den jeweiligen WordPress-Tabellenpräfix. Gespeichert werden unter anderem:
- E-Mail-Adresse
- vorhandene MailPoet Subscriber-ID, falls vorhanden
- gewählte Listen-ID
- übermittelte Formulardaten
- Seitentitel der Anmeldung
- Hash des Bestätigungstokens
- Zeitpunkt der Anmeldung
- Zeitpunkt der Bestätigung
Ein Bestätigungslink ist 48 Stunden gültig.
Fargo-Sicherungen
Das Plugin enthält bewusst serverseitige Sicherungen. Die Frontend-Logik allein darf nicht darüber entscheiden, ob eine Anmeldung gültig ist.
Besonders wichtig: Eine einzelne Anmeldung darf nicht gleichzeitig mehrere geschützte Listen bestätigen. Erkennt der Server mehr als eine geschützte Zielliste, wird die Anmeldung abgebrochen.
Dadurch bleibt die Regel erhalten:
Eine bewusste Auswahl = eine Bestätigung = eine Listenzuordnung.
Zusätzlich wird die eigentliche MailPoet-Anmeldung bewusst gestoppt, solange noch keine gültige Bestätigung vorliegt. Dadurch kann MailPoet die geschützte Liste nicht versehentlich vorzeitig zuweisen.
Administration
Das Plugin legt im WordPress-Backend einen eigenen Menüpunkt Listen-Bestätigung an.
Dort werden die vorhandenen MailPoet-Listen angezeigt. Für jede Liste kann festgelegt werden:
- ob eine separate Bestätigung erforderlich ist
- auf welche WordPress-Seite nach erfolgreicher Bestätigung weitergeleitet werden soll
Eine Weiterleitung ist optional. Ist keine Seite hinterlegt, zeigt das Plugin nach erfolgreicher Bestätigung seine eigene Seite „Anmeldung bestätigt“ an.
Bestätigungsmail
Das Plugin verschickt für geschützte Listen eine eigene HTML-Bestätigungsmail. Diese wird nicht über MailPoets normales Double-Opt-in ausgelöst.
Aktuell verwendet das Plugin einen gemeinsamen Betreff und einen gemeinsamen Mailtext für alle geschützten Listen. Der Seitentitel, über den die Anmeldung erfolgt ist, kann in der Nachricht ausgegeben werden.
Individuelle Mailtexte, Logos oder unterschiedliche Mailtemplates pro Liste sind im aktuellen Stand nicht vorgesehen und müssten bei Bedarf separat ergänzt werden.
MailPoet-Automationen
Die MailPoet-Listenzuordnung erfolgt erst nach erfolgreicher Bestätigung. Dadurch können Automationen, deren Trigger die Anmeldung zu einer bestimmten Liste ist, anschließend normal starten.
Wichtig bei umbenannten oder neu angelegten Listen:
Die Trigger bestehender MailPoet-Automationen kontrollieren und gegebenenfalls auf die richtige Liste setzen.
MailPoet-Formulare verwenden
Geschützte Listen sollten über echte MailPoet-Formulare angemeldet werden.
Elementor-Formulare mit einer MailPoet-Aktion durchlaufen nicht zuverlässig denselben MailPoet-Formularprozess, an dem dieses Plugin ansetzt. Bei einem bereits bestätigten MailPoet-Abonnenten kann dadurch wieder das ursprüngliche Problem entstehen: Die neue Liste wird zugewiesen, ohne dass die eigene Listenbestätigung ausgelöst wird.
Deshalb gilt:
Für Listen, die über dieses Plugin geschützt werden, MailPoet-Formulare verwenden und vorhandene Elementor-Anmeldeformulare entsprechend ersetzen.
Listenauswahl im Formular
Bei Formularen mit einer sichtbaren MailPoet-Listenauswahl erhält der entsprechende Block die zusätzliche CSS-Klasse:
mplistDiese Klasse dient nicht nur dem Styling. Das JavaScript des Plugins erkennt darüber die Listenauswahl und sorgt dafür, dass trotz der von MailPoet ausgegebenen Checkboxen immer nur eine Auswahl gleichzeitig aktiv sein kann.
Die Klasse mplist ist deshalb funktionaler Bestandteil des Plugins und darf bei entsprechenden Formularen nicht fehlen.
Die serverseitige Fargo-Sicherung bleibt davon unabhängig aktiv. Manipuliert ein Benutzer das Formular und sendet trotzdem mehrere geschützte Listen, wird die Anmeldung serverseitig abgelehnt.
CSS-Klassen für MailPoet-Formulare
Für ein einfaches projektspezifisches Styling können den einzelnen Blöcken im MailPoet-Formulareditor unter Block → Erweitert → Zusätzliche CSS-Klasse(n) eigene Klassen gegeben werden.
mpinput = normale Eingabefelder
mpmail = E-Mail-Feld
mplist = Listenauswahl
mpclick = Absende-ButtonFarben, Schriftarten, Abstände und Rundungen werden pro Projekt angepasst. Die folgenden Regeln dienen nur als Basis.
/* =========================================
MailPoet Formular – Basis-Styling
CSS-Klassen im MailPoet-Formular unter:
Block > Erweitert > Zusätzliche CSS-Klasse(n)
mpinput = normale Eingabefelder
mpmail = E-Mail-Feld
mplist = Listenauswahl
mpclick = Absende-Button
WICHTIG:
.mplist wird vom Plugin
"image² MailPoet List Confirmation"
auch funktional verwendet.
========================================= */
/* Eingabefelder */
.mpinput input,
.mpmail input {
width: 100%;
min-height: 46px;
padding: 10px 15px;
color: #TEXTFARBE;
background: #HINTERGRUND;
border: 1px solid #RANDFARBE;
border-radius: 0;
box-shadow: none;
font: inherit;
}
/* Placeholder */
.mpinput input::placeholder,
.mpmail input::placeholder {
color: #TEXTFARBE;
opacity: 1;
}
/* Listenauswahl */
.mplist {
margin: 16px 0;
padding: 0;
color: #TEXTFARBE;
background: transparent;
border: 0;
}
.mplist legend,
.mplist label {
color: #TEXTFARBE;
font: inherit;
}
/* Submit-Button */
.mpclick .mailpoet_submit,
.mpclick .mailpoet_submit:hover,
.mpclick .mailpoet_submit:focus,
.mpclick .mailpoet_submit:active {
width: 100%;
min-height: 40px;
color: #BUTTON_TEXT;
background: #BUTTON_HINTERGRUND;
border: 0;
border-radius: 0;
box-shadow: none;
font: inherit;
cursor: pointer;
}Projektspezifisches CSS
Projektspezifische Anpassungen wie Schriftfamilien, Farben, Buttonformen oder geänderte Beschriftungen gehören nicht in das Plugin.
Beispiel: Soll die von MailPoet ausgegebene Legende einer Listenauswahl optisch durch einen anderen Text ersetzt werden, kann dies projektspezifisch per CSS erfolgen. Solche Anpassungen sind kein Bestandteil der Plugin-Funktionalität.
Technischer Ablauf der Bestätigung
Für jede Anmeldung erzeugt das Plugin ein zufälliges Bestätigungstoken. In der Datenbank wird nur der Hash dieses Tokens gespeichert.
Der Link in der Bestätigungsmail enthält das ursprüngliche Token. Beim Aufruf wird dessen Hash mit dem gespeicherten Wert verglichen. Nur eine gültige, noch nicht bestätigte und nicht abgelaufene Anmeldung wird verarbeitet.
Nach erfolgreicher Prüfung:
- wird ein vorhandener MailPoet-Abonnent aktualisiert oder ein neuer angelegt,
- wird der Abonnentenstatus als bestätigt gespeichert,
- wird die gewünschte Liste zugewiesen,
- wird die Pending-Anmeldung als bestätigt markiert,
- erfolgt gegebenenfalls die konfigurierte Weiterleitung.
Wichtige Tests nach Installation oder Änderung
- Neue E-Mail-Adresse meldet sich für eine geschützte Liste an.
- Bereits bestätigte MailPoet-Adresse meldet sich für eine weitere geschützte Liste an.
- Vor der Bestätigung besteht noch keine Listenzuordnung.
- Bestätigungsmail kommt korrekt an.
- Bestätigungslink ordnet die richtige Liste zu.
- MailPoet-Automation startet erst nach der Bestätigung.
- Konfigurierte Weiterleitung funktioniert.
- Ohne konfigurierte Weiterleitung erscheint „Anmeldung bestätigt“.
- Bei sichtbarer Listenauswahl lässt sich nur ein Eintrag gleichzeitig auswählen.
- Mehrere manipuliert übermittelte geschützte Listen werden serverseitig abgelehnt.
Dateien
i2-mailpoet-list-confirmation/
├── i2-mailpoet-list-confirmation.php
└── assets/
└── frontend.jsDas projektspezifische Formular-CSS gehört nicht zum Plugin und wird auf der jeweiligen Website separat hinterlegt.
Abhängigkeiten
- WordPress
- MailPoet
- MailPoet-Formulare für geschützte Anmeldungen
Wartungshinweise
Nach größeren MailPoet-Updates insbesondere prüfen, ob der verwendete Subscription-Hook und die MailPoet-API für das Anlegen, Aktualisieren und Zuordnen von Abonnenten weiterhin wie erwartet funktionieren.
Außerdem nach Änderungen an MailPoet-Formularen kontrollieren, ob die erforderlichen CSS-Klassen – insbesondere mplist – weiterhin gesetzt sind.
Änderungen an der Bestätigungslogik immer sowohl mit einer neuen als auch mit einer bereits in MailPoet bestätigten E-Mail-Adresse testen.