Przejdź do treści
Wszystkie artykuły

Integracje

Formularz kontaktowy nie działa: diagnostyka krok po kroku

Sprawdź POST, action, nazwy pól, origin, DNS Free, CAPTCHA, limit i różnicę między zapisem a powiadomieniem.

Niedziałający formularz może zatrzymać się w przeglądarce, zostać odrzucony przez konfigurację albo zostać zapisany, choć e-mail nie dotarł od razu. Najszybciej dojdziesz do przyczyny, testując cały przepływ w tej kolejności: kod strony, odpowiedź wysyłki, panel ZoraForms, a dopiero potem dostawę powiadomienia.

Zacznij od formularza w opublikowanej stronie

Otwórz produkcyjny adres, nie tylko lokalny podgląd, i sprawdź element form. Musi mieć method="POST" i action z aktualnym publicznym identyfikatorem formularza. Każde pole, które ma zostać zapisane, potrzebuje name. Sam id służy JavaScriptowi i etykiecie, ale nie tworzy klucza danych wysyłanych przez zwykły POST.

Jeżeli używasz fetch, sprawdź w narzędziach przeglądarki adres żądania, status odpowiedzi i treść błędu. Nie maskuj błędu komunikatem o sukcesie tylko dlatego, że kliknięto przycisk. Zwykły HTML może przekierować po sukcesie, ale własny skrypt musi sam obsłużyć odpowiedź.

Minimalny punkt kontrolny
<form action="https://forms.example.com/f/TWOJ_PUBLIC_ID" method="POST">
  <input name="email" type="email" required />
  <textarea name="message" required></textarea>
  <button>Wyślij</button>
</form>

Porównaj stronę z konfiguracją formularza

W panelu sprawdź, czy witryna i formularz są aktywne oraz czy konto ma aktywną licencję. Porównaj dozwolony origin z adresem strony: protokół, host i ewentualny port muszą się zgadzać. Wersja www to inny host. Błąd ORIGIN_NOT_ALLOWED oznacza problem konfiguracji źródła, a nie problem z etykietą pola.

W planie Free sprawdź DNS TXT dla domeny. Dopóki potwierdzenie kontroli nad publiczną domeną nie przejdzie, nowe zgłoszenia nie będą przyjmowane. Sprawdź także miesięczne użycie: po osiągnięciu limitu kolejne zgłoszenia są odrzucane, a usunięcie starych rekordów nie zwraca wykorzystania.

  • Witryna i formularz są dostępne.
  • Origin dokładnie odpowiada stronie wysyłającej.
  • Free ma poprawnie potwierdzony rekord DNS TXT.
  • Limit miesięczny nie został osiągnięty.

Odśwież kod zabezpieczeń

Gdy włączysz CAPTCHA, honeypot albo minimalny czas wypełnienia, proste action nie wystarczy. Pobierz pełny kod z Integracji po każdej zmianie ustawień i zastąp nim kod na stronie. Zawiera token CAPTCHA albo pola ochronne, których serwer oczekuje. Stary fragment może wyglądać poprawnie, ale prowadzić do odrzucenia.

Dla CAPTCHA sprawdź również credential i domenę klucza. Weryfikacja odbywa się po stronie serwera; niepoprawny token, timeout dostawcy lub niedopasowany hostname odrzuca zgłoszenie. To zamierzone zachowanie fail closed, dlatego testuj w przeglądarce na rzeczywistej domenie.

  • Zapisz konfigurację ochrony w panelu.
  • Skopiuj świeży wariant HTML albo fetch.
  • Wdróż go na tej samej domenie, dla której utworzono klucz.
  • Wyślij nową próbę, nie używaj starego tokenu.

Rozdziel zgłoszenie, powiadomienie i dostarczenie

Jeśli zgłoszenie jest widoczne w panelu, odbiór formularza zadziałał. Brak e-maila powiadamiającego jest wtedy osobnym problemem dostawy, ustawień rozmowy lub skrzynki odbiorczej. Panel jest miejscem do potwierdzenia faktu zapisu; nie zakładaj, że brak wiadomości w inboxie oznacza brak zgłoszenia.

Przy własnym SMTP najpierw użyj testu połączenia. Potwierdza on połączenie i logowanie, nie gwarantuje doręczenia. Historia rozmowy rozróżnia kolejkę, wysłane i nieudane wiadomości; „wysłano” oznacza przyjęcie przez serwer pocztowy, nie potwierdzenie dotarcia do inboxu. Sprawdź ten status, adres nadawcy i filtr spamu. Odpowiedzi klientów są odbierane przez IMAP ustawiany przez operatora oraz Reply-To, nie przez podpięcie Twojej skrzynki.

Przydatne odnośniki

Formularz kontaktowy nie działa: diagnostyka krok po kroku · ZoraForms Blog