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ź.
<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.