Formularz kontaktowy to najprostszy element strony do momentu, w którym przestaje dostarczać wiadomości. A robi to po cichu: odwiedzająca widzi "wiadomość wysłana", Ty nie widzisz nic, i dopiero po tygodniach ktoś wspomina, że "pisał przez formularz". W tym artykule rozłożę problem na części na przykładzie Contact Form 7, choć zasady dotyczą każdej wtyczki formularzy, bo sedno prawie nigdy nie leży w formularzu. Leży w tym, jak Twój WordPress wysyła maile.
Najważniejszy test: czy Twój WordPress w ogóle wysyła maile?
Zanim zaczniesz grzebać w formularzu, wykonaj test, który ustawia całą diagnozę: sprawdź, czy jakiekolwiek maile z Twojej strony docierają. Najprościej: wyloguj się i użyj opcji "Nie pamiętasz hasła?" na stronie logowania. Mail z resetem hasła to wiadomość systemowa WordPressa, niezależna od wtyczek formularzy.
- Mail z resetem dotarł: WordPress wysyła poprawnie, więc problem leży w konfiguracji formularza. Przejdź do sekcji o polach Nadawca i Odbiorca.
- Mail z resetem nie dotarł: formularz jest niewinny, a problem leży w wysyłce maili z serwera. Przejdź do sekcji o SMTP. To dokładnie ten przypadek z mojego forum, w którym kursantka tygodniami poprawiała formularz, a ostatecznie sprawę rozwiązała konfiguracja poczty z pomocą hostingu.
Ten jeden test oszczędza dni błądzenia, bo rozdziela dwa zupełnie różne problemy udające jeden.
Problem w formularzu: pola Nadawca i Odbiorca
Jeśli maile systemowe działają, sprawdź konfigurację wysyłki w formularzu (w Contact Form 7: zakładka Mail w edycji formularza).
Zasada numer 1: Nadawca (From) musi być adresem w domenie Twojej strony. Jeśli strona działa pod twojadomena.pl, a w polu Nadawca wpisany jest adres z Gmaila albo z innej Twojej domeny, serwery pocztowe odrzucają taką wiadomość jako podszywanie się. Brzmi znajomo? To ten sam mechanizm uwierzytelniania nadawcy (SPF i DKIM), który opisywałam przy migracji MailerLite: nikt nie może wysyłać maili "w imieniu" domeny bez jej upoważnienia, nawet Twój własny formularz. W polu Nadawca ustaw adres w domenie witryny (np. [email protected] lub shortcode [_site_admin_email]), a prawdziwy adres piszącej osoby umieść w polu Reply-To, żeby odpowiadać jednym kliknięciem.
Pole Odbiorca (To): tu możesz wpisać dowolny adres, na który chcesz dostawać wiadomości, także spoza domeny. Sprawdzony wariant to shortcode [_site_admin_email], pobierający aktualny adres administratora, dzięki czemu zmiana adresu w jednym miejscu (Użytkownicy → Twoje konto) obejmuje wszystkie formularze.
Folder spam: sprawdzaj go w każdym teście. Wiadomości z formularzy to częsty pensjonariusz spamu, zwłaszcza przed wdrożeniem SMTP.
Problem w wysyłce: SMTP, czyli poczta jak należy
WordPress domyślnie wysyła maile prymitywną metodą serwerową, bez uwierzytelnienia, i skrzynki odbiorcze coraz częściej traktują takie wiadomości jako podejrzane albo wcale ich nie przyjmują. Rozwiązanie docelowe, które polecam każdej stronie z formularzem, to wysyłka przez SMTP, czyli przez prawdziwą, uwierzytelnioną skrzynkę pocztową:
- Załóż skrzynkę w domenie strony (np. [email protected]) w panelu hostingu.
- Zainstaluj wtyczkę SMTP, np. WP Mail SMTP.
- W konfiguracji wtyczki podaj dane skrzynki: serwer SMTP hostingu, port, login i hasło (dane znajdziesz w panelu hostingu przy skrzynce).
- Użyj wbudowanego w wtyczkę testu wysyłki i sprawdź dostarczenie.
Od tej chwili wszystkie maile z WordPressa (formularze, powiadomienia sklepu, resety haseł) wychodzą jak zwykła poczta z uwierzytelnionej skrzynki, z pełnym błogosławieństwem SPF i DKIM. Jeśli sprzedajesz przez WooCommerce, ta zmiana jest podwójnie ważna: maile z zamówieniami muszą docierać, bo od nich zależy dostęp klientek do produktów.
A gdy mimo SMTP maile nie wychodzą, pora na support hostingu: napisz, że maile z WordPressa nie są dostarczane, podaj wynik testu SMTP i poproś o sprawdzenie konfiguracji poczty oraz ewentualnych blokad. Tak właśnie zakończyła się historia z forum: hosting poprawił konfigurację i wszystko ruszyło.
Spam z formularza: quiz zamiast męczącej captchy
Działający formularz szybko odkrywa ciemną stronę sukcesu: boty. Zanim sięgniesz po captchę z rozmazanymi przejściami dla pieszych, wypróbuj rozwiązanie wbudowane w Contact Form 7, które polecam za skuteczność i prostotę: pole quizu. W edycji formularza dodajesz pole Quiz z pytaniem, na które człowiek odpowie bez zastanowienia:
[quiz quiz-1 "Ile to dwa plus dwa?|4"]
Format jest prosty: pytanie, pionowa kreska, poprawna odpowiedź. Możesz podać kilka par pytanie-odpowiedź, a formularz wylosuje jedną. Proste działanie arytmetyczne albo pytanie w stylu "Jaka jest stolica Polski?" zatrzymuje zdecydowaną większość automatów, a żywej osobie zajmuje dwie sekundy i nie irytuje jak zewnętrzne captche. Uzupełnieniem niech będzie checkbox zgody na przetwarzanie danych (pole acceptance w Contact Form 7), o którym łatwo zapomnieć, a który w formularzu kontaktowym po prostu wypada mieć.
Debugowanie formularza z AI: od objawu do działającej wysyłki
Problemy z pocztą mają to do siebie, że objaw ("mail nie dochodzi") jest jeden, a przyczyn kilkanaście. Czat AI świetnie prowadzi taką diagnozę, o ile dostanie wyniki testów zamiast ogólników. Mój prompt:
Diagnozuję formularz kontaktowy na WordPressie (wtyczka: [nazwa], hosting: [nazwa]). Objaw: formularz pokazuje wysłanie, ale wiadomość nie dociera. Wyniki testów: mail z resetem hasła [dochodzi/nie dochodzi]; pole Nadawca ustawione na [adres, w domenie strony czy poza nią]; pole Odbiorca: [adres lub shortcode]; folder spam [sprawdzony, pusty/są tam wiadomości]; wtyczka SMTP [brak/nazwa, wynik testu wysyłki]. Podaj kolejne kroki diagnozy od najbardziej prawdopodobnej przyczyny, a przy każdym kroku napisz, jaki wynik co oznacza. Nie proponuj zmian w rekordach DNS bez wyjaśnienia ryzyka.
Zauważ, że prompt zawiera wyniki testów z tego artykułu: reset hasła, domena nadawcy, spam, SMTP. To one zamieniają odpowiedź z listy ogólnych porad w drzewo decyzyjne dopasowane do Twojego przypadku. Schemat "objaw + wykonane testy + wyniki" to uniwersalny klucz do diagnozy z AI, który pokazywałam już przy niezapisywaniu zmian, i który wraca w każdym technicznym artykule z tej serii, bo po prostu działa.
Krok po kroku
- Wykonaj test rozstrzygający: reset hasła WordPressa i sprawdzenie, czy mail systemowy dociera.
- Ustaw pole Nadawca formularza na adres w domenie strony, a adres piszącej osoby przenieś do Reply-To.
- Wdróż wysyłkę przez SMTP: skrzynka w domenie, wtyczka WP Mail SMTP, test wysyłki.
- Wyślij wiadomość testową przez formularz i sprawdź odbiór oraz folder spam.
- Dodaj pole quizu przeciw botom i checkbox zgody na przetwarzanie danych.
- Wpisz do kalendarza kwartalny test formularza, bo o jego awarii inaczej dowiesz się ostatnia.




