Платный трафик на лендинг с формой захвата — это почти всегда мусорные заявки. Номер 123, номер 1111111, четыре цифры вместо телефона. Заявка засчитана, деньги за клик списаны, позвонить некому.

Часть людей заполняет форму абы как — случайно, не хотят оставлять настоящий номер, просто проверяют работает ли кнопка. Причина не важна — важно что за каждую такую заявку вы платите как за нормальный лид. Это типичная проблема для любого кто работает с платным трафиком.

Почему WPForms и почему в нём нет защиты

Для форм я использую WPForms. Остановился на нём из-за аддона Form Abandonment — он сохраняет в базу незавершённые заявки, те где человек начал заполнять форму но не нажал «Отправить». При платном трафике это полезно.

Но встроенной защиты от мусорных номеров в WPForms нет. Стандартное поле «Телефон» проверяет только формат, но спокойно пропустит 123, 9999999 и любой другой набор цифр похожий на номер.

От костыля к нормальному решению

Поначалу я решал эту проблему руками — добавлял код валидации прямо в functions.php темы. Работало, но каждый раз при создании нового лендинга нужно было лезть в код, копировать, адаптировать. Не универсально и легко сломать при обновлении темы.

В какой-то момент решил причесать это в нормальный плагин — чтобы на любой новый лендинг устанавливалось за минуту и сразу работало без лишних телодвижений.

Что я сделал

Готового решения под мою задачу я не нашёл — пришлось написать плагин самому. Назвал его Phone Validator for WPForms, выложил на WordPress.org где он и доступен бесплатно.

Плагин перехватывает отправку формы и проверяет номер телефона по нескольким правилам:

Длина номера. Минимальное и максимальное количество цифр настраивается. 123 или 55 просто не пройдут.

Страница настроек
Страница настроек

Повторяющиеся цифры. Блокирует номера вроде 1111111 или 9999999 — классический паттерн когда человек не хочет оставлять настоящий номер но форма требует заполнить поле.

Блэклист. Список конкретных номеров которые всегда блокируются. Можно добавлять свои.

Фильтр по коду страны. Если работаете только на СНГ — можно разрешить только +7, +375 и отсечь всё остальное.

Троттлинг по IP. Ограничивает количество успешных отправок с одного адреса за заданный промежуток времени. Защита от ботов и повторных сабмитов.

Страница настроек
Страница настроек

Логирование. Все заблокированные попытки пишутся в файл — можно посмотреть что именно блокируется и откуда.

Лог ошибок
Лог ошибок

После установки и активации в админке появляется пункт меню Phone Validator. Там два раздела — настройки и история валидации.

Интеграция с WPForms

Плагин работает бесшовно — никакой дополнительной настройки на уровне форм не требуется. Установил, активировал, настроил правила — и всё, плагин автоматически подключается ко всем полям телефона во всех формах WPForms на сайте.

Планы на развитие

Плагин решает свою задачу, но есть что улучшить.

Маска ввода. Планирую добавить возможность задать шаблон номера — например +7 (___) ___-__-__. Человек сможет вводить только цифры в нужные позиции, всё остальное подставляется автоматически. Это одновременно улучшает UX и дополнительно отсекает мусор на этапе ввода.

Настройки на уровне отдельной формы. Сейчас правила глобальные — одни для всех форм на сайте. Но если у вас несколько лендингов на одном WordPress с разными аудиториями, нужны разные правила для каждой формы. Это и планирую добавить.

Где взять

Плагин бесплатный и доступен в официальном репозитории WordPress.org:

wordpress.org/plugins/phone-validator-for-wpforms

Исходный код открыт и доступен на GitHub:

github.com/Ilyntiy/phone-validator-for-wpforms

Плагин переведён на английский и испанский язык.

Если столкнулись с той же проблемой мусорных лидов — попробуйте. Если найдёте баг или есть идеи по функционалу — Issues на GitHub открыты.