Formularz kontaktowy w WordPress to często jedyne źródło leadów dla małej firmy, dlatego każda awaria oznacza realnie utracone zapytania. Problemy dzielą się na kilka klas: formularz się nie wyświetla, nie reaguje przycisk, zgłoszenie nie dochodzi na maila albo ląduje w spamie. W tym przewodniku przechodzimy diagnostykę krok po kroku, od najprostszych przyczyn po konfigurację SMTP i rekordy DNS.
Krótka odpowiedź
Aby rozwiązać problemy z formularzami w WordPress, najpierw sprawdź, czy używasz odpowiednich wtyczek, takich jak Contact Form 7 lub WPForms. Upewnij się, że formularz jest poprawnie skonfigurowany i że nie ma konfliktów z innymi wtyczkami.
Jeśli wciąż masz problemy, rozważ użycie narzędzi do debugowania, takich jak Query Monitor.
Usługi KC Mobile
Sprawdź naszą ofertę
Potrzebujesz pomocy specjalisty? Skorzystaj z naszych usług i rozwiń swój biznes online.
Najczęstsze problemy z formularzami w WordPress – przegląd typów awarii
Zanim zaczniesz cokolwiek naprawiać, ustal do której klasy należy Twoja awaria. Diagnostyka różni się diametralnie w zależności od objawu, a próba naprawy SMTP w sytuacji, gdy problem leży w JavaScripcie, to strata godzin.
Najczęstsze scenariusze:
- Formularz nie wyświetla się na stronie (pusty obszar, goły shortcode w treści, brak pól).
- Układ jest rozjechany – pola nachodzą na siebie, brakuje stylów, przycisk wygląda jak zwykły link.
- Przycisk nie reaguje po kliknięciu (nic się nie dzieje, brak komunikatu, kręcące się kółko bez końca).
- Formularz pokazuje sukces, ale mail nie dochodzi – najczęstszy i najbardziej podstępny przypadek.
- Maile trafiają do spamu zamiast do skrzynki odbiorczej.
- Błędy walidacji blokują wysyłkę mimo poprawnie wypełnionych pól.
- Zgłoszenia nie zapisują się w bazie (dotyczy wtyczek z modułem leadów, np. WPForms czy Forminator).
Złota zasada diagnostyki: idź od najprostszego do najtrudniejszego. Najpierw cache i ustawienia formularza, potem SMTP, na końcu DNS i konsola przeglądarki. W większości przypadków problem rozwiązuje konfiguracja SMTP, a pozostałe sytuacje to konflikty wtyczek, cache i JavaScript, które łatwo przeoczyć.
Potrzebujesz pomocy z tym problemem?
Naprawimy to za Ciebie. Zostaw kontakt – odezwiemy się w 24h, zdiagnozujemy problem i przygotujemy wycenę naprawy.
- Bezpłatna diagnoza problemu w 24h
- Konkretna wycena naprawy + estymowany czas
- Doświadczenie w 200+ podobnych przypadkach
Dlaczego formularz WordPress nie wysyła wiadomości – przyczyna #1: funkcja mail()
Jeśli formularz wyświetla komunikat o sukcesie, ale mail nigdy nie dociera, w większość przypadków winna jest funkcja PHP `mail()`. To domyślny sposób wysyłki w WordPress i jednocześnie najbardziej zawodny.
Dlaczego `mail()` zawodzi:
- Hostingi współdzielone często blokują lub ograniczają tę funkcję, bo jest nagminnie nadużywana do spamu.
- Maile wysłane przez `mail()` mają niespójny adres nadawcy (np. wordpress@twojadomena.pl), co serwery odbiorcze traktują jak podejrzane.
- Brak uwierzytelnienia – wiadomość nie przechodzi weryfikacji SPF/DKIM, więc Gmail i Outlook odrzucają ją lub wrzucają do spamu jeszcze przed dostarczeniem.
- Niektórzy dostawcy po cichu odrzucają takie maile, nie zwracając żadnego błędu – stąd fałszywy komunikat o sukcesie.
Rozwiązanie jest jedno: przejście na SMTP. Zamiast polegać na zawodnej funkcji serwera, WordPress łączy się z prawdziwym serwerem pocztowym (Twojej domeny lub zewnętrznego dostawcy) i wysyła maile uwierzytelnioną drogą. To eliminuje większość problemów z dostarczalnością. Jeśli zarządzasz wieloma stronami, warto rozważyć opiekę nad WordPress, w ramach której poprawna konfiguracja poczty jest standardem.
Konfiguracja SMTP krok po kroku
SMTP konfigurujesz przez wtyczkę. Najpopularniejsze i sprawdzone to WP Mail SMTP, Fluent SMTP (darmowa, lekka) oraz Easy WP SMTP. Wszystkie działają na tej samej zasadzie.
Kroki konfiguracji:
1. Zainstaluj i aktywuj wybraną wtyczkę SMTP.
2. Pobierz dane serwera od swojego dostawcy poczty. Potrzebujesz: hosta SMTP (np. smtp.twojadomena.pl), portu, typu szyfrowania oraz loginu i hasła skrzynki.
3. Wpisz port i szyfrowanie zgodnie z dokumentacją:
- Port 587 z szyfrowaniem TLS (zalecane, najczęstsze).
- Port 465 z szyfrowaniem SSL (starszy standard, też działa).
- Port 25 bez szyfrowania – nie używaj, często blokowany.
4. Włącz autoryzację (SMTP Authentication) i podaj pełny adres e-mail jako login oraz hasło do skrzynki.
5. Ustaw adres From zgodny z domeną (więcej w kolejnej sekcji).
6. Wyślij maila testowego z poziomu wtyczki.
Dla lepszej dostarczalności wiele firm korzysta z zewnętrznych dostawców SMTP (Brevo, Mailgun, SMTP.com), którzy gwarantują wyższą reputację IP niż skrzynka na hostingu współdzielonym. To rozsądny wybór, gdy formularz to główny kanał leadów.
Błędna konfiguracja formularza – pola Do/Od, mapowanie i powiadomienia
Nawet z poprawnym SMTP formularz nie zadziała, jeśli sama wtyczka formularza ma źle ustawione powiadomienia. To druga najczęstsza przyczyna problemów.
Na co zwrócić uwagę:
- Adres odbiorcy (Do) – sprawdź, czy w ustawieniach powiadomień jest wpisany prawidłowy, działający adres. Literówka albo stary, nieistniejący mail oznacza ciche zniknięcie zgłoszeń.
- Adres nadawcy (Od) – to najczęstszy błąd. Adres From musi być zgodny z domeną strony. Jeśli formularz wysyła z adresu klienta (np. jan@gmail.com wpisany w formularzu), Gmail odrzuci taki mail jako spoofing. Ustaw stały adres nadawcy typu kontakt@twojadomena.pl, a adres klienta umieść w polu Reply-To.
- Mapowanie pól – w treści powiadomienia używasz tzw. smart tagów (np. [field id="email"]). Błędny tag = puste pole w mailu albo całkowity brak wysyłki.
- Reply-To – ustaw na adres e-mail wpisany przez użytkownika, żeby móc odpowiedzieć jednym kliknięciem.
Większość problemów na tym etapie wynika z domyślnych ustawień, których nikt nie sprawdził po instalacji wtyczki.
Konflikty wtyczek i motywu – jak diagnozować
Jeśli SMTP działa, ustawienia są poprawne, a formularz nadal zawodzi, prawdopodobnie masz konflikt wtyczek lub motywu. To częsta przyczyna sytuacji, gdy formularz nagle przestał działać po aktualizacji.
Metoda diagnostyczna (rób to na środowisku staging, nie na produkcji):
1. Dezaktywuj wszystkie wtyczki poza wtyczką formularza i SMTP. Przetestuj. Jeśli zadziała, problem leży w którejś z wyłączonych wtyczek.
2. Włączaj wtyczki pojedynczo, testując formularz po każdej. Wtyczka, która psuje wysyłkę, to winowajca.
3. Przełącz na motyw domyślny (Twenty Twenty-Four/Five). Jeśli formularz nagle działa, problem jest w Twoim motywie (np. konfliktujący JavaScript albo przechwytywanie zdarzeń AJAX).
Najczęstsi sprawcy konfliktów to inne wtyczki SMTP (dwie naraz to gwarantowany chaos), agresywne wtyczki cache, wtyczki bezpieczeństwa blokujące żądania AJAX oraz nadmiarowe optymalizatory JavaScript. Zawsze testuj na kopii staging, żeby nie kładć działającej strony. Profesjonalna pomoc przy WordPress zwykle zaczyna diagnostykę właśnie od tej procedury.
Rekordy DNS dla dostarczalności – SPF, DKIM, DMARC i MX
Maile z formularza technicznie wychodzą, ale lądują w spamie? Problem niemal zawsze leży w rekordach DNS uwierzytelniających pocztę. To czego serwery odbiorcze, jak Gmail i Outlook, używają do oceny, czy wiadomość jest wiarygodna.
Cztery kluczowe rekordy:
- SPF (Sender Policy Framework) – wskazuje, które serwery mają prawo wysyłać pocztę z Twojej domeny. Brak SPF = natychmiastowa utrata zaufania.
- DKIM (DomainKeys Identified Mail) – podpis kryptograficzny potwierdzający, że mail naprawdę pochodzi z Twojej domeny i nie został zmieniony po drodze.
- DMARC – polityka mówiąca serwerom, co zrobić z mailem, który nie przeszedł SPF/DKIM. Wzmacnia reputację domeny.
- Rekord MX – kieruje pocztę przychodzącą na właściwy serwer. Błędny MX oznacza, że nawet odpowiedzi klientów nie dotrą.
Rekordy DNS ustawiasz w panelu domeny lub hostingu. Wielu dostawców SMTP (Brevo, Mailgun) udostępnia gotowe wartości SPF i DKIM do wklejenia. Po zmianie DNS poczekaj do 24-48 godzin na propagację. Poprawne SPF, DKIM i DMARC to różnica między skrzynką odbiorczą a folderem spam.
Formularz się nie wyświetla lub układ jest rozjechany
Jeśli formularz w ogóle nie pojawia się na stronie albo wygląda jak rozsypany zestaw pól bez stylów, problem nie ma nic wspólnego z mailem. To warstwa wyświetlania.
Najczęstsze przyczyny i rozwiązania:
- Goły shortcode w treści (widać [contact-form-7 ...] zamiast formularza) – wtyczka jest nieaktywna, usunięta albo ID formularza się zmieniło. Sprawdź, czy wtyczka działa i czy shortcode/blok wskazuje istniejący formularz.
- Brak stylów CSS – formularz wyświetla się jako surowe pola HTML. Zwykle blokuje to wtyczka cache lub optymalizator, który usunął albo źle połączył pliki CSS. Wyczyść cache i wyłącz minifikację CSS dla testu.
- Konflikt CSS motywu – style motywu nadpisują style formularza. Rozwiązanie to dodatkowy, bardziej szczegółowy CSS celujący w klasy formularza.
- Problem z edytorem blokowym – blok formularza został przypadkowo usunięty przy edycji strony. Wstaw go ponownie.
Zacznij zawsze od wyczyszczenia cache. Bardzo często formularz działa, a Ty po prostu oglądasz starą, zbuforowaną wersję strony.
Formularz się nie wysyła – błędy JavaScript/AJAX i konsola F12
Klikasz przycisk wysyłki i nic się nie dzieje, albo kółko ładowania kręci się w nieskończoność? To prawie zawsze błąd JavaScript lub AJAX. Nowoczesne formularze wysyłają dane asynchronicznie, a jeśli skrypt się wywali, wysyłka nie ruszy.
Diagnostyka przez konsolę przeglądarki:
1. Otwórz stronę z formularzem i naciśnij F12 (Narzędzia deweloperskie).
2. Przejdź do zakładki Console. Czerwone błędy JavaScript wskazują konflikt skryptów (często inna wtyczka albo motyw).
3. Przejdź do zakładki Network, kliknij przycisk wysyłki i obserwuj żądanie AJAX (admin-ajax.php lub endpoint REST API). Sprawdź kod odpowiedzi:
- 403/401 – blokada bezpieczeństwa lub wygasły token nonce.
- 500 – błąd PHP po stronie serwera (sprawdź logi).
- brak żądania – JavaScript nawet się nie uruchomił, konflikt skryptów.
Typowe przyczyny to konflikty bibliotek jQuery, agresywne łączenie i odraczanie JavaScriptu przez wtyczki cache oraz wtyczki bezpieczeństwa blokujące admin-ajax.php. Tymczasowe wyłączenie optymalizacji JS często natychmiast przywraca działanie.
Problemy z anty-spamem – reCAPTCHA, honeypot i błędne klucze API
Zabezpieczenia anty-spamowe potrafią blokować nie tylko boty, ale i prawdziwych klientów. To podstępny problem, bo zgłoszenia po prostu znikają bez śladu.
Najczęstsze przyczyny:
- Błędne klucze reCAPTCHA – jeśli klucz publiczny lub prywatny Google reCAPTCHA jest nieprawidłowy, pomieszany (v2 z v3) albo zarejestrowany dla innej domeny, formularz odrzuca wszystkie zgłoszenia. Wygeneruj nowe klucze dla właściwej domeny.
- reCAPTCHA v3 z agresywnym progiem – v3 ocenia użytkownika w skali 0-1. Zbyt wysoki próg blokuje realnych ludzi traktowanych jak boty.
- Honeypot w konflikcie z autouzupełnianiem – przeglądarka wypełnia ukryte pole pułapki, przez co formularz uznaje człowieka za bota.
- Nadmiarowe warstwy – reCAPTCHA + honeypot + wtyczka antyspamowa + firewall naraz to przepis na fałszywe odrzucenia.
Test diagnostyczny: tymczasowo wyłącz wszystkie zabezpieczenia anty-spam i wyślij formularz. Jeśli zadziała, włączaj je pojedynczo, aż znajdziesz winowajcę. Jedna dobrze skonfigurowana warstwa wystarczy.
Czyszczenie cache i testowanie poprawności wysyłki
Cache to najczęstsza przyczyna pozornych awarii formularza. Widzisz starą wersję strony, podczas gdy poprawki dawno działają. Po każdej zmianie czyść cache na wszystkich poziomach.
Warstwy cache do wyczyszczenia:
- Wtyczka cache (WP Rocket, W3 Total Cache, LiteSpeed) – wyczyść cały cache.
- Cache serwera/hostingu – panele typu cPanel/CloudPanel mają własny cache (Varnish, OPcache, Redis).
- CDN (Cloudflare) – przeczyść cache w panelu CDN, inaczej serwuje starą wersję mimo czystego WordPressa.
- Cache przeglądarki – przetestuj w trybie incognito albo z twardym odświeżeniem (Ctrl+F5).
Testowanie wysyłki maili rób systematycznie:
1. Użyj narzędzia testowego w wtyczce SMTP (Email Test). Pokaże dokładny błąd połączenia, jeśli SMTP jest źle skonfigurowany.
2. Wyślij testowy formularz na różne skrzynki: Gmail, Outlook, WP.pl, własna domena. To ujawnia problemy z dostarczalnością specyficzne dla dostawcy (np. mail dochodzi na firmową, ląduje w spamie na Gmailu = problem z DNS).
Ten prosty test na kilku dostawcach oszczędza godziny zgadywania.
Specyfika popularnych wtyczek, aktualizacje i kiedy zlecić naprawę
Diagnostyka zależy od konkretnej wtyczki formularza, bo każda działa nieco inaczej.
- Contact Form 7 – minimalistyczny, bez zapisu zgłoszeń w bazie (potrzebny dodatek Flamingo). Diagnostyka głównie przez logi i SMTP. Brak wbudowanej walidacji wizualnej.
- WPForms – przyjazny dla początkujących, ma wbudowane logi e-maili i zapis zgłoszeń. Łatwiejsza diagnostyka dzięki dziennikowi wysyłek.
- Forminator – darmowy, z modułem leadów i ankiet. Częste problemy z AJAX przy formularzach wielokrokowych i polami upload.
- Gravity Forms – płatny, profesjonalny, z zaawansowanymi logami. Najlepsza diagnostyka, ale złożoność zwiększa ryzyko konfliktów dodatków.
Aktualizacje jako przyczyna i lekarstwo: niezgodność wersji to częsty sprawca awarii. Sprawdź zgodność wersji PHP (formularze wymagają zwykle PHP 7.4+, najlepiej 8.x), aktualizuj WordPress, motyw i wtyczki. Stare formularze upload i multistep bywają wrażliwe na limity PHP (upload_max_filesize, max_execution_time).
Pamiętaj o RODO: formularz zbierający dane musi mieć checkbox zgody i politykę prywatności. To wymóg prawny, nie opcja.
Kiedy zlecić specjaliście? Gdy przeszedłeś tę checklistę, a formularz nadal nie działa, albo gdy każda godzina bez działającego formularza to utracone zapytania. Wtedy szybsze i tańsze jest zlecenie naprawy. Napisz do nas przez formularz kontaktowy – zdiagnozujemy i naprawimy problem, a w ramach opieki nad WordPress od 299 zł/mies. zadbamy, żeby się nie powtórzył.
Wspomniane narzędzia
Potrzebujesz pomocy z WordPress?
Tworzymy i naprawiamy strony na WordPress. Optymalizacja prędkości, bezpieczeństwo, aktualizacje. 20+ lat doświadczenia.
Najczęściej zadawane pytania
Dlaczego formularz w WordPress nie wysyła wiadomości?
Co zrobić, gdy formularz pokazuje sukces, ale mail nie dochodzi?
Czy SMTP jest lepsze niż domyślna funkcja mail() w WordPress?
Jaki adres nadawcy ustawić w formularzu kontaktowym WordPress?
Co zrobić, gdy test SMTP działa, ale formularz nadal nie wysyła?
Czy reCAPTCHA może blokować prawdziwe zgłoszenia z formularza?
Dlaczego maile z formularza WordPress trafiają do spamu?
Jak sprawdzić konflikt wtyczek powodujący awarię formularza?
Potrzebujesz pomocy?
Potrzebujesz pomocy z tym problemem?
Naprawimy to za Ciebie. Zostaw kontakt – odezwiemy się w 24h, zdiagnozujemy problem i przygotujemy wycenę naprawy.
- Bezpłatna diagnoza problemu w 24h
- Konkretna wycena naprawy + estymowany czas
- Doświadczenie w 200+ podobnych przypadkach