Spam w formularzu kontaktowym zwykle zaczyna się niewinnie: kilka ofert pozycjonowania dziennie, potem setki wiadomości z linkami. Odruchową reakcją jest dodanie najmocniejszej zagadki, jaką da się znaleźć. Problem w tym, że każda warstwa ochrony ma koszt, a płacą go ludzie, nie boty. Zbyt ostry filtr odrzuca prawdziwe zapytania po cichu i nikt w firmie się o tym nie dowiaduje.
Ten poradnik układa ochronę od warstw niewidocznych dla klienta do tych, które go spowalniają, i pokazuje, jak sprawdzić, czy nie wyrzucasz dobrych wiadomości. Pola, teksty przy polach i komunikat po wysłaniu omawia osobny poradnik o formularzu kontaktowym na stronie. Tutaj zajmujemy się tylko tym, co dzieje się z wiadomością między kliknięciem „wyślij” a skrzynką zespołu.
Zanim dodasz ochronę, sprawdź, jaki spam przychodzi
Przejrzyj wiadomości z ostatnich dwóch tygodni i rozdziel je na grupy. Bot wysyłający setki identycznych zgłoszeń wymaga innej odpowiedzi niż człowiek, który ręcznie wkleja ofertę współpracy. Bez tego podziału łatwo dobrać zabezpieczenie, które zatrzyma mniejszą część problemu i doda przeszkodę wszystkim klientom. Zapisz też, ile z tych wiadomości było prawdziwymi pytaniami, bo to one wyznaczają granicę dopuszczalnego ryzyka.
Przesuń tabelę w bok, aby zobaczyć wszystkie kolumny.
| Rodzaj wiadomości | Typowy sygnał | Pierwsza warstwa do sprawdzenia |
|---|---|---|
| Masowa wysyłka bota | Wypełnione wszystkie pola, wysyłka w ułamku sekundy | Ukryte pole i czas wypełnienia |
| Seria z jednego źródła | Dziesiątki zgłoszeń w krótkim czasie | Limit wysyłek z jednego adresu IP |
| Spam z linkami | Kilka adresów URL w treści, brak pytania | Filtr linków z kwarantanną |
| Ręczne oferty handlowe | Poprawny tekst, sprzedaż usług firmie | Reguła w skrzynce, nie blokada formularza |
Ostatni wiersz jest ważny: żadna techniczna bariera nie odróżni ręcznie pisanej oferty od zapytania klienta. Takie wiadomości lepiej sortować po przyjęciu, niż próbować zatrzymać je w formularzu.
Warstwy niewidoczne: ukryte pole, czas i limit z IP
Honeypot to pole, którego człowiek nie widzi, a prosty bot wypełnia, bo uzupełnia wszystko, co znajdzie w kodzie. Zgłoszenie z wypełnionym polem odkładasz na bok. Ukryj je tak, by nie trafił do niego czytnik ekranu ani autouzupełnianie przeglądarki, i nadaj mu nazwę, która nie kusi menedżera haseł. Inaczej pułapka złapie właśnie te osoby, które chciałeś obsłużyć bez przeszkód.
Drugi sygnał to czas od wyświetlenia formularza do wysyłki. Człowiek potrzebuje chwili na przeczytanie i wpisanie danych, bot często wysyła natychmiast. Trzecia warstwa to limit wysyłek z jednego adresu IP w zadanym oknie czasu. Ustaw go z zapasem: w biurze, szkole czy sieci komórkowej wiele osób może korzystać z tego samego adresu.
Notatka W3C o niedostępności CAPTCHA wymienia pułapki typu honeypot, heurystyki, ograniczanie częstotliwości i filtrowanie spamu jako alternatywy lub uzupełnienie tradycyjnej CAPTCHA. Nie podaje skuteczności tych metod dla konkretnej strony. W3C.
Filtr linków i słów: kwarantanna zamiast kasowania
Klienci rzadko wklejają do pierwszej wiadomości kilka adresów URL, spamerzy robią to stale. Reguła „więcej niż jeden link oznacza wiadomość do sprawdzenia” odsiewa dużą część śmieci. Słowo „do sprawdzenia” jest tu kluczowe. Klient może wkleić link do produktu, który chce zamówić, albo do strony, którą masz przebudować. Filtr powinien przesuwać takie wiadomości do osobnego folderu, a nie usuwać ich bez śladu.
- Każda odrzucona wiadomość trafia do kwarantanny, a nie do kosza.
- Ktoś przegląda kwarantannę w stałym terminie, np. raz w tygodniu.
- Lista słów blokujących nie zawiera nazw twoich usług ani produktów.
- Osoba wysyłająca widzi to samo potwierdzenie, niezależnie od decyzji filtra.
- Zapisujesz, ile prawdziwych wiadomości znalazło się w kwarantannie.
Ostatni punkt jest twoim wskaźnikiem jakości ochrony. Jeżeli w kwarantannie regularnie leżą zapytania klientów, reguła jest za ostra i trzeba ją poluzować, a nie dokładać kolejną.
CAPTCHA: kiedy ma sens i ile kosztuje
Zagadka obrazkowa lub tekstowa zatrzymuje część botów, ale obciąża przede wszystkim ludzi. Osoba niewidoma nie odczyta zniekształconych znaków, osoba niesłysząca nie skorzysta z wersji dźwiękowej, a na małym ekranie każda kolejna próba zniechęca bardziej. Jeśli klient nie przejdzie testu, zwykle nie napisze do ciebie innym kanałem, tylko zamknie kartę. Szerzej o tym, jak sprawdzić drogę kontaktu z klawiatury i czytnikiem, piszemy w przewodniku o dostępności ścieżek kontaktu.
Rozwiązania działające w tle oceniają zachowanie odwiedzającego bez zadawania pytań. Wynik nie jest wyrokiem: nisko ocenione zgłoszenie można przyjąć i oznaczyć do sprawdzenia, zamiast odrzucać. Sięgaj po widoczną zagadkę dopiero wtedy, gdy warstwy niewidoczne zawiodły, a po jej włączeniu porównaj liczbę prawdziwych zapytań przed zmianą i po niej.
Dokumentacja Google opisuje, że reCAPTCHA v3 działa bez interakcji użytkownika i zwraca wynik od 0,0 do 1,0, a domyślnie można przyjąć próg 0,5 i dostroić go do własnego ruchu. Nie mówi, jaki odsetek prawdziwych zgłoszeń zostanie przy tym odrzucony. Google for Developers.
Sprawdź, czy nie odrzucasz prawdziwych zapytań
Spadek spamu do zera to podejrzany wynik. Może oznaczać, że ochrona działa, ale równie dobrze, że formularz przestał przyjmować cokolwiek. Raz na jakiś czas wyślij zgłoszenie tak, jak zrobiłby to klient, i prześledź je do końca. Ten sam test warto powtórzyć po każdej zmianie wtyczki, motywu lub reguł filtra.
- Wyślij zwykłe pytanie.Z telefonu, w oknie prywatnym i przez sieć komórkową. Sprawdź, czy dotarło do osoby, która ma odpowiedzieć.
- Wyślij pytanie z linkiem.Dodaj jeden adres do produktu. Zobacz, czy wiadomość trafiła do skrzynki, czy do kwarantanny.
- Wypełnij formularz z klawiatury.Przejdź tabulatorem przez wszystkie pola. Upewnij się, że fokus nie wpada w ukryte pole.
- Wyślij dwa zgłoszenia z rzędu.Sprawdź, czy limit z IP nie blokuje osoby, która poprawia literówkę w pierwszej wiadomości.
- Zapisz wynik i datę.Notuj, co dotarło, gdzie i po jakim czasie. Bez zapisu kolejny test nie powie, co się zmieniło.
„Test formularza z dnia [data], [urządzenie]. Odpowiedzcie na adres [e-mail testowy] i nie dodawajcie go do bazy klientów.” Taka treść nie myli zespołu i łatwo ją potem odnaleźć.
Jeżeli test pokaże, że wiadomość utknęła, potraktuj to jak każdy inny wyciek na drodze do rozmowy. Pozostałe miejsca, w których znikają kontakty, zebraliśmy w artykule o tym, gdzie tracisz zapytania.
Druga droga kontaktu i jedna kolejka zamiast skrzynki
Nawet najlepiej ustawiony formularz czasem kogoś odrzuci. Dlatego dobrze, gdy obok niego istnieje kanał, w którym bot ma trudniej, a człowiek łatwiej. Czat wymaga rozmowy, a prośba o oddzwonienie ze strony kończy się telefonem, który zespół i tak weryfikuje głosem. Jak rozłożyć te kanały na podstronie, opisujemy w poradniku o stronie kontakt.
Drugi problem to miejsce, do którego trafiają wiadomości. Wspólna skrzynka pełna spamu sprawia, że prawdziwe zapytanie leży między ofertami i nikt nie wie, czy już ktoś odpisał. Kolejka, w której każde zgłoszenie ma status i osobę odpowiedzialną, ułatwia odróżnienie sprawy klienta od śmieci. Zasady takiego obiegu opisuje przewodnik o systemie zgłoszeń w obsłudze klienta.
W widżecie Meetlead czat, oddzwonienie i formularz offline tworzą zgłoszenia w jednej kolejce panelu, zamiast w osobnych skrzynkach. Połączenia z widżetem i tworzenie nowych odwiedzających mają limity po stronie serwera, które chronią usługę przed masowym ruchem. Nie jest to filtr antyspamowy: Meetlead nie ocenia treści wiadomości i nie blokuje kontaktów, więc decyzję o tym, co jest spamem, nadal podejmuje twój zespół.
Pytania o spam w formularzu
Czy sam honeypot wystarczy? Zatrzyma najprostsze automatyczne wysyłki, ale nie poradzi sobie z botami, które pomijają ukryte pola, ani z ludźmi wklejającymi oferty. Połącz go z kontrolą czasu i limitem z IP. Dopiero gdy te trzy warstwy nie wystarczą, rozważ CAPTCHA, najlepiej taką, która działa w tle.
Czy kasować wiadomości oznaczone jako spam? Nie od razu. Trzymaj je w kwarantannie przez ustalony czas i przeglądaj regularnie, bo tylko tak zobaczysz fałszywe odrzucenia. Usuwaj je po przeglądzie, zgodnie z przyjętym w firmie okresem przechowywania danych z formularza.

