Zurück zum Blog WordPress

Contact Form 7: Spam stoppen ohne Captcha

14. Dezember 2025 Dominik Baurhenn 7 min Min. Lesezeit
Contact Form 7: Spam stoppen ohne Captcha

Spam in Contact Form 7 ist nervig. Hier sind effektive Methoden, um Spam zu stoppen – ganz ohne nervige Captchas.

1. Honeypot-Feld (Am effektivsten!)

Ein unsichtbares Feld, das nur Bots ausfüllen:

/* Im Contact Form 7 Formular: */
[text honeypot class:honeypot]

/* CSS um es zu verstecken: */
.honeypot {
    position: absolute;
    left: -9999px;
    opacity: 0;
    height: 0;
}

Dann in functions.php prüfen:

add_filter('wpcf7_validate', 'honeypot_check', 10, 2);
function honeypot_check($result, $tags) {
    $honeypot = isset($_POST['honeypot']) ? $_POST['honeypot'] : '';
    
    if (!empty($honeypot)) {
        $result->invalidate('', 'Spam erkannt');
    }
    
    return $result;
}

2. Zeit-basierte Validierung

Menschen brauchen Zeit zum Ausfüllen, Bots nicht:

// Hidden field mit Timestamp:
[hidden timestamp default:get]
add_filter('wpcf7_validate', 'time_check', 10, 2);
function time_check($result, $tags) {
    $timestamp = intval($_POST['timestamp']);
    $now = time();
    
    // Wenn weniger als 3 Sekunden vergangen sind
    if (($now - $timestamp) < 3) {
        $result->invalidate('', 'Zu schnell ausgefüllt');
    }
    
    return $result;
}

3. Bestimmte Keywords blockieren

add_filter('wpcf7_spam', 'block_spam_keywords', 10, 2);
function block_spam_keywords($spam, $submission) {
    $message = $submission->get_posted_data('your-message');
    
    $spam_keywords = array(
        'viagra', 'casino', 'crypto', 'bitcoin', 
        'SEO services', 'link building'
    );
    
    foreach ($spam_keywords as $keyword) {
        if (stripos($message, $keyword) !== false) {
            return true; // Ist Spam
        }
    }
    
    return $spam;
}

4. Absender-Domain prüfen

add_filter('wpcf7_validate_email*', 'block_spam_domains', 20, 2);
function block_spam_domains($result, $tag) {
    $email = isset($_POST[$tag->name]) ? $_POST[$tag->name] : '';
    
    $blocked_domains = array(
        'tempmail.com', 'guerrillamail.com', 
        'mailinator.com', '10minutemail.com'
    );
    
    $domain = substr(strrchr($email, '@'), 1);
    
    if (in_array($domain, $blocked_domains)) {
        $result->invalidate($tag, 'Diese E-Mail-Domain ist nicht erlaubt.');
    }
    
    return $result;
}

5. Flamingo für Logging

Installiere das Plugin "Flamingo" – es speichert alle Einträge in der Datenbank, auch die als Spam markierten. So kannst du Muster erkennen.

Kombiniere mehrere Methoden für maximalen Schutz – ein Honeypot allein stoppt 90% des Spams!

Warum Captcha allein nicht reicht

Google reCAPTCHA war jahrelang der Standard-Spam-Schutz. Aber 2026 gibt es Probleme: reCAPTCHA v2 (das „Ich bin kein Roboter"-Häkchen) nervt Nutzer und senkt die Conversion-Rate. reCAPTCHA v3 (unsichtbar) hat Datenschutzbedenken — es sendet Nutzerdaten an Google, was nach DSGVO problematisch ist. Und: Moderne Spam-Bots umgehen Captchas routiniert. Deshalb nutze ich eine Kombination aus mehreren Techniken statt nur Captcha.

Meine Anti-Spam-Strategie für CF7

In meinen Kundenprojekten setze ich auf eine mehrschichtige Abwehr: Honeypot-Felder (ein unsichtbares Feld das nur Bots ausfüllen — sofort erkennbar), Zeitbasierte Validierung (wenn das Formular in unter 3 Sekunden abgeschickt wird, ist es ein Bot), CF7 Akismet-Integration (Akismet prüft Inhalte gegen eine globale Spam-Datenbank), und als letzte Stufe: Quiz-Fragen (eine einfache Frage wie „Welche Farbe hat Gras?" stoppt fast alle Bots). Diese Kombination eliminiert in meiner Erfahrung 99,5 % des Spams — ohne Captcha und ohne DSGVO-Risiko.

Alternative: Eigenes Kontaktformular statt CF7

Für Kunden die maximale Performance wollen, entwickle ich oft ein schlankes Custom-Kontaktformular ohne Plugin. Der Vorteil: Kein Plugin-Overhead (CF7 lädt CSS und JS auf JEDER Seite), volle Kontrolle über Validierung und Spam-Schutz, und keine Abhängigkeit von Plugin-Updates. Der Code ist leichtgewichtiger und schneller — wichtig für Core Web Vitals.

Fazit: Wann du einen Profi brauchst

Die Tipps in diesem Artikel kannst du selbst umsetzen — wenn du die Zeit und das technische Verständnis hast. Wenn nicht, ist das kein Problem: Genau dafür gibt es Webentwickler. In meiner Arbeit löse ich diese Art von Aufgaben routinemäßig — meistens innerhalb weniger Stunden. Der Vorteil: Kein Trial-and-Error auf deiner Live-Seite, kein Risiko dass etwas kaputtgeht, und du kannst dich auf dein Kerngeschäft konzentrieren. Melde dich bei mir für eine unverbindliche Einschätzung.

Aus meiner Erfahrung mit über 50 WordPress- und Custom-PHP-Projekten kann ich sagen: Die meisten technischen Probleme haben einfache Lösungen — man muss nur wissen wo man suchen muss. Und genau das ist der Unterschied zwischen stundenlangem Googeln und einem 15-Minuten-Fix vom Profi. Investiere deine Zeit in dein Business, nicht in technische Rabbit Holes.

Passende Leistungen & Tools

Teilen: