Wie sich Akismet mit Contact Form 7 (CF7) verbinden lässt, woran man erkennt, dass die Prüfung tatsächlich greift, und warum ich einen Honeypot vorerst zurückgestellt habe, gibt es hier etwas ausführlicher zu lesen.

Mehr Formular-Spam, was jetzt?

Reicht Akismet vielleicht doch nicht aus für den Spam-Schutz? Ich hatte aus früheren WordPress-Projekten noch im Kopf, dass es für Contact Form 7 Honeypot-Plugins gibt. CF7 selbst bringt so etwas nicht mit. Inzwischen gibt es dafür sogar CF7 Apps – eines von vielen ergänzenden Plugins zu Contact Form 7. Aber ich hatte Akismet doch installiert. Musste ich jetzt wirklich noch ein zweites Plugin dazuholen oder war die eigentliche Frage eine andere: Prüft Akismet das Formular überhaupt?

Was ist der Unterschied zwischen Honeypot und Akismet?

Die beiden arbeiten auf verschiedenen Ebenen: Ein Honeypot fängt Bots ab, Akismet bewertet den Inhalt einer Einsendung.

Ein Honeypot ist ein verstecktes Feld im Formular, das ein Mensch nie sieht und deshalb nie ausfüllt – ein Bot dagegen schon. Ist das versteckte Feld ausgefüllt, meldet das Honeypot-Plugin die Einsendung an Contact Form 7 als Spam, unabhängig vom Inhalt. Ein Honeypot hält damit simplen Massen-Spam ab. Gilt eine Einsendung schon als Spam, sendet Contact Form 7 gar nichts an Akismet – nachlesen lässt sich das im Quellcode des Akismet-Moduls.

Akismet schaut dagegen auf den Inhalt. Das greift auch bei Bots, die das versteckte Feld auslassen, und bei Spam, der von Hand eingetippt wird. Die beiden ergänzen sich also, statt sich zu ersetzen.

Warum schützt ein aktives Akismet das Formular nicht automatisch?

Weil Contact Form 7 eine Einsendung nur dann an Akismet weiterleitet, wenn die Form-Tags die passenden Akismet-Optionen enthalten. Form-Tags sind die Felder im Formular-Code von CF7, geschrieben in eckigen Klammern. Die Form-Tags sind in den Formular-Einstellungen von CF7 im WordPress-Adminbereich zu finden.

Fehlen diese Optionen, sendet CF7 schlichtweg nichts an Akismet. Das Formular ist dann ungeschützt, obwohl Akismet aktiv ist. Prominent vermerkt ist das nirgends – allerdings lässt es sich in der Dokumentation von CF7 auf der Seite «Spam filtering with Akismet» nachlesen.

Wichtig: Davon ist nicht jedes Formular betroffen. Wird in Contact Form 7 ein neues Formular angelegt, während Akismet bereits mit einem API-Schlüssel aktiv ist, setzt CF7 die Akismet-Optionen am Namensfeld und am E-Mail-Feld der Standardvorlage automatisch – auch das steht im Quellcode des Akismet-Moduls. Ohne die Akismet-Optionen bleiben Formulare, die vor der Aktivierung von Akismet angelegt wurden, und Formulare, deren Felder man selbst neu geschrieben hat.

Vermutlich hatte ich also Contact Form 7 bereits installiert und das Formular angelegt, bevor Akismet aktiv war – daher fehlten bei mir die Akismet-Optionen an den Feldern.

Welche Akismet-Optionen gibt es?

Drei – je eine für Name, E-Mail-Adresse und URL:

  • akismet:author setzt man am Namensfeld.
  • akismet:author_email setzt man am E-Mail-Feld.
  • akismet:author_url setzt man an einem URL-Feld, falls das Formular eines hat.

Betreff und Nachricht brauchen keine Option, weil CF7 den übrigen Inhalt ohnehin an Akismet mitschickt. Die Dokumentation empfiehlt, möglichst viele der Optionen zu setzen, weil die Erkennung dadurch genauer wird.

Bei mir sah das Formular vorher etwa so aus:

[text* your-name autocomplete:name]
[email* your-email autocomplete:email]
[text* your-subject]
[textarea* your-message]

Und so nachher:

[text* your-name autocomplete:name akismet:author]
[email* your-email autocomplete:email akismet:author_email]
[text* your-subject]
[textarea* your-message]

Bitte beachte: Mit den Akismet-Optionen gehen bei jeder Einsendung alle Eingaben aus dem Formular an Akismet (Automattic Inc., USA) – bei mir sind das Name, E-Mail-Adresse, Betreff und Nachrichtentext. Dazu kommen die IP-Adresse, die Browserkennung, die verweisende Seite (Referrer) und weitere technische Angaben zur Anfrage. Die Datenschutzerklärung sollte das erwähnen. Bei mir stand dort bisher nur die Prüfung der Kommentare, das Kontaktformular fehlte ganz. Ich habe den Abschnitt ergänzt: Datenschutzerklärung, Abschnitt Kontaktformular. Ich bin Webdesigner, kein Jurist – dies ist keine verlässliche Rechtsberatung.

Wie lässt sich testen, ob Akismet das Formular jetzt prüft?

Mit einem Wert, den Akismet immer als Spam einstuft. Im Live-Formular kann man zum Beispiel viagra-test-123 als Namen eingeben und das Formular absenden. Laut der Dokumentation von CF7 funktioniert auch akismet-guaranteed-spam@example.com im E-Mail-Feld. Beide Werte sind zum Testen reserviert. Der Testname wirkt dabei nur in dem Feld, das akismet:author trägt, die Test-Adresse nur in dem mit akismet:author_email.

Prüft Akismet das Formular, erscheint im Frontend eine Fehlermeldung: «Beim Versuch, deine Nachricht zu senden, ist ein Fehler aufgetreten. Bitte versuche es später nochmal.»

Die E-Mail wird dabei nicht verschickt und der Test ist schnell gemacht.

Woran erkenne ich, ob Akismet Spam erkannt hat oder der Mailversand gescheitert ist?

Nicht allein am Text der Meldung: Contact Form 7 zeigt bei Spam und bei einem fehlgeschlagenen Mailversand standardmässig denselben Text. Das ist der eigentliche Stolperstein. Wenn man die Meldung sieht, weiss man also noch nicht, ob Akismet wirklich angeschlagen hat oder ob der Mailserver nicht mitspielt.

Unterscheiden lässt es sich am <form>-Element. Bei Spam trägt es die Klasse spam und das Core-CSS von Contact Form 7 setzt einen orangen Rahmen um die Meldung. Bei einem Mailfehler lautet die Klasse failed. In meinem Theme ist die Meldung bei einem Mailfehler rot (alert-danger), bei Spam gelb (alert-warning).

Wie belege ich, dass Akismet die Einsendung als Spam erkannt hat?

Zum Beispiel mit dem Plugin Flamingo. Es speichert die Nachrichten aus CF7 in der Datenbank und legt als Spam erkannte Einsendungen in einem eigenen Ordner ab. Bei mir stand danach unter «Nachrichten-Eingang» «Spam (1)» – mit der Testnachricht von viagra-test-123. Das ist der endgültige Beleg, dass Akismet gegriffen hat. Er hängt nicht von der Meldung im Frontend ab: Die E-Mail wird nicht verschickt, die Nachricht wird aber trotzdem in der Datenbank gespeichert und dort als Spam vermerkt.

Der Spam-Ordner funktioniert auch in die andere Richtung. Rutscht eine Spam-Nachricht in den Eingang, lässt sich ihr Status in Flamingo auf «Spam» setzen. Laut der Dokumentation meldet Flamingo das automatisch an Akismet, damit die Erkennung dazulernt. Für fälschlich aussortierte Nachrichten gilt dasselbe umgekehrt.

Hinweis: Getestet habe ich das mit Contact Form 7 6.1.6, Akismet 5.7 und Flamingo 2.6.2.

Wie sicher ist das jetzt wirklich?

Belegt ist, dass Akismet das Formular jetzt prüft. Nicht belegt ist, dass damit dauerhaft kein Spam mehr durchkommt.

Seit der Änderung am 28.09.2026 ist keine Spam-Nachricht mehr bei mir angekommen. Ein Langzeitbeleg ist das nicht. Dass nichts ankommt, heisst nicht zwingend, dass Akismet es abfängt – der Spam kann auch einfach aufgehört haben. Im Spam-Ordner von Flamingo liegt seit der Umstellung nur meine eigene Testnachricht. Als Spam erkannt wurde seither also nichts Echtes.

Dazu kommt: Akismet ist ein automatischer Filter und der arbeitet nicht fehlerfrei. Laut der Dokumentation gibt es beides, Spam, der durchrutscht, und echte Nachrichten, die fälschlich als Spam eingestuft werden. Bei einem Kontaktformular ist der zweite Fall der unangenehmere. Deshalb lohnt sich die Speicherung der Nachrichten in der Datenbank und erst damit wird ein gelegentlicher Blick in den Spam-Ordner möglich.

Kommt der Honeypot trotzdem noch dazu?

Vorerst nicht. Akismet prüft das Kontaktformular jetzt tatsächlich und der Spam ist ausgeblieben. Den Honeypot habe ich deshalb zurückgestellt. Er kommt erst dazu, falls der Spam trotzdem anhält – dann als Ergänzung auf der Bot-Ebene und nicht als Ersatz.

Fazit

Es war nichts falsch installiert, ich hatte etwas nicht angebunden. Der Unterschied ist klein und trotzdem entscheidend: «Aktiv» sagt im Adminbereich nur, dass ein Plugin läuft – nicht, dass es dort arbeitet, wo man es braucht. Ein Honeypot hätte den Spam vermutlich gebremst und dabei genau die Lücke zugedeckt, die eigentlich zu schliessen war.

Mehr als zwei Optionen an zwei Feldern zu setzen war es am Ende nicht. Und selbst das hätte Contact Form 7 von selbst erledigt, wäre Akismet schon aktiv gewesen, als das Formular angelegt wurde. Der eigentliche Schritt war aber die Frage, die mir davor in den Sinn kam: Sieht Akismet dieses Formular überhaupt?

Vielleicht helfen dir die Infos aus diesem Beitrag auch deinen Formular-Spam zu reduzieren. Lass es mich gerne in den Kommentaren wissen.

Übrigens: Wie das Textarea-Feld meines Kontaktformulars automatisch mit dem Text wächst, habe ich im Beitrag «Auto-Resize Textarea – überarbeitet» im Abschnitt WordPress mit Contact Form 7 beschrieben.