Спам-заявки в Яндекс Директе: почему мы платили за мусор больше, чем за реальные лиды
Мы перешли в Яндекс Директе на оплату за конверсии — по 1500 ₽ за заявку.
Через месяц сверили оплаченные конверсии со статусами в CRM и получили неприятную арифметику: 13 оплаченных заявок, из них 8 — спам и только 5 — реальные заказы.
В деньгах это выглядело ещё неприятнее:
12 000 ₽ ушло на спам. 7500 ₽ — на нормальные заявки.
То есть за мусор мы заплатили больше, чем за людей, которые действительно пришли за услугой.
Самое интересное: защита от ботов на сайте у нас уже была. Она даже правильно понимала, что форму отправляет бот.
Просто деньги это никак не останавливало.
Меня зовут Евгений Александров. Я занимаюсь развитием digital-агентства и последние несколько лет активно внедряю автоматизацию и ИИ в маркетинг, продажи и операционку. Здесь разбираю не теорию, а вещи, на которых мы сами успели потерять или сэкономить деньги.
Как работает оплата за конверсии в Яндекс Директе
До этого всё было привычно: платили за клики.
Потом решили попробовать модель, где Директ списывает деньги не за переход на сайт, а за конкретную конверсию — отправленную заявку.
Цена одной заявки у нас была 1500 ₽.
Логика казалась железной:
объявление → человек переходит на сайт → заполняет форму → заявка попадает в CRM → платим за результат.
На бумаге это намного приятнее оплаты за клики: бюджет вроде бы напрямую привязан к лидам.
Проблему мы заметили только через месяц, когда решили посмотреть не просто количество оплаченных заявок, а что с этими заявками потом происходило в CRM.
Сверили Директ с CRM — и увидели 8 против 5
В Метрике у нас были две CRM-цели:
- «Заказ создан»;
- «Спам-заказ».
За 30 дней картина получилась такой:
5 заявок CRM посчитала нормальными. 8 заявок CRM отправила в спам.
Но для рекламной системы до этого момента разницы практически не было.
Форма отправилась — конверсия произошла — деньги списались.
Заявка с бессмысленным текстом и мусорным номером обходилась нам ровно в те же 1500 ₽, что и заявка от человека, который потом становился клиентом.
После этого мы пошли смотреть не рекламу, а сам путь заявки.
И довольно быстро нашли первую дыру.
Почему защита от спама не спасала рекламный бюджет
На форме уже стояла классическая ловушка для ботов — скрытое поле.
Обычный посетитель его не видит и не заполняет. Автоматический скрипт видит все поля формы и часто заполняет его вместе с остальными.
Заполнил скрытое поле → почти наверняка бот.
Механика нормальная.
Ошибка была в другом.
Когда бот попадал в ловушку, сайт фактически говорил ему:
«Всё успешно, форма отправлена».
И заявка действительно продолжала путь: попадала в CRM и засчитывалась в Метрике как конверсия.
То есть наша защита умела сказать:
«Это бот».
Но после этого система всё равно делала:
«Отлично. Вот ваша оплаченная заявка».
Первое, что мы исправили, — разорвали эту цепочку. Попадание в антибот-ловушку больше не должно автоматически превращаться в платное целевое событие.
Но одной защиты оказалось мало.
Как мы защищаем формы от спам-заявок: 4 уровня фильтрации
Самая полезная вещь, которую мы поняли в процессе: «спам» — это не один тип заявок.
Одни формы массово отправляют скрипты. Другие заявки — дубли. Где-то указан несуществующий телефон. А иногда подозрительно выглядит вполне живой человек.
Поэтому одного фильтра недостаточно.
1. Починили скрытую ловушку
Первый рубеж ловит простые автоматические скрипты, которые заполняют скрытое поле.
Главная правка была не в самом распознавании бота, а в том, что происходит после распознавания.
Если ловушка сработала, заявка больше не должна вести себя для рекламной системы как обычная целевая конверсия.
2. Начали искать заявки-двойники
Часть мусора оказалась повторными отправками.
Причины разные: автоматический скрипт может стучаться в форму несколько раз, а живой человек — дважды нажать кнопку.
Мы добавили два простых правила:
- если заявка с того же номера или адреса приходит повторно в течение 6 часов — помечаем её как подозрительную;
- если с одного адреса приходит больше 5 заявок за час — тоже отправляем на дополнительную проверку.
Простая дедупликация, но заметная часть мусора обнаружилась именно здесь.
3. Добавили невидимую капчу
Следующий слой — капча, которую нормальный посетитель вообще не замечает.
Никаких картинок со светофорами и «выберите все велосипеды».
Она работает в фоне и пытается отсечь типовые автоматические отправки ещё до того, как форма нормально уйдёт дальше.
Для человека ничего не меняется.
Для массового скрипта появляется ещё один барьер.
4. Начали проверять телефон
Последний фильтр — проверка существования номера.
Одна проверка стоит 90 копеек.
Для сравнения: наша оплаченная заявка в Директе стоит 1500 ₽.
Даже тысяча проверок номеров обойдётся в 900 ₽ — дешевле одной оплаченной заявки.
Если номер не существует или явно неработоспособен, это сильный сигнал, что заявку стоит пометить как подозрительную.
Но здесь появляется другая проблема.
Живой человек тоже может ошибиться в одной цифре.
Именно поэтому мы не стали просто уничтожать всё, что не прошло проверку.
Форма → антибот-ловушка → проверка дублей → невидимая капча → проверка телефона → CRM
Подозрительная заявка не удаляется
Это, пожалуй, главное решение во всей схеме.
Самый очевидный вариант:
проверка не пройдена → заявку блокируем.
Мы сделали иначе.
Подозрительная заявка всё равно попадает в CRM.
Менеджер её видит и при необходимости может проверить руками.
Разница в другом: такая заявка не должна автоматически проходить весь путь как обычная оплачиваемая целевая конверсия.
Почему так?
Потому что любой автоматический фильтр иногда ошибается.
Человек может:
- случайно отправить форму два раза;
- ошибиться в номере;
- попасть под подозрительный технический признак.
Если в этот момент просто выбросить заявку, можно потерять реального клиента.
А это уже совсем другая цена ошибки.
Наш принцип: лучше пропустить часть спама, чем автоматически отрезать настоящего клиента.
Поэтому все проверки настроены с перекосом в одну сторону: при сомнении заявка проходит дальше, а не исчезает.
Четыре фильтра решают четыре разные проблемы
В итоге цепочка выглядит так:
Скрытая ловушка ловит простые автоматические скрипты.
Проверка повторов ловит дубли и массовые отправки из одного источника.
Невидимая капча режет типовую автоматизацию ещё на форме.
Проверка телефона помогает находить заявки с несуществующими или явно нерабочими номерами.
По отдельности ни один из этих рубежей проблему не закрывает.
Вместе они позволяют гораздо точнее отделять заявку, за которую действительно имеет смысл платить, от технического шума.
Я собрал отдельную инструкцию по защите заявок от фрода — с проверкой повторов, невидимой капчей и проверкой существования мобильного номера. Внутри — схема, чек-лист внедрения и то, что стоит передать разработчику, чтобы подозрительные заявки не превращались в оплачиваемые конверсии, но при этом не терялись реальные клиенты.
А где график «было 62%, стало 3%»?
Его здесь не будет.
По первому месяцу у нас есть нормальная, проверенная цифра:
8 из 13 оплаченных заявок оказались спамом — примерно 62%.
А вот красивую конверсию «после внедрения» я не хочу рисовать из короткого периода или несопоставимых данных.
Когда накопится нормальный отрезок, где можно честно сравнить одинаковые периоды до и после, тогда уже имеет смысл показывать динамику.
Пока для меня важнее другое: мы нашли конкретное место, где сами распознавали мусор, но продолжали платить за него как за нормальный лид, и перестроили цепочку проверки заявки.
Что я бы проверил у себя, если вы тоже платите за заявки
Это можно сделать без разработки.
Возьмите последние 30 дней и сведите рядом две цифры:
- сколько конверсий рекламная система посчитала оплачиваемыми;
- сколько из этих заявок CRM в итоге считает нормальными лидами.
А потом отдельно посчитайте:
- спам;
- дубли;
- несуществующие номера;
- заявки, с которыми менеджер вообще не смог связаться.
Мы долго смотрели только на первую цифру — «сколько получили заявок».
Стоило посмотреть на их состав, и оказалось, что за спам мы отдавали больше денег, чем за реальные заявки.
Забрать инструкцию по защите заявок от фрода
Для меня главный вывод из этого кейса даже не в конкретном наборе фильтров. Проблема была в разрыве между рекламой, сайтом и CRM: сайт уже понимал, что заявка подозрительная, но рекламная система продолжала получать её как нормальную конверсию.
Больше таких разборов про рекламу, аналитику, ИИ и автоматизацию я публикую в Telegram-канале «Александров про диджитал»
Если у вас тоже есть ощущение, что Директ получает слишком много мусорных конверсий или цифры по заявкам не сходятся с тем, что реально видят менеджеры в CRM, напишите в Telegram-бот — посмотрю, где может рваться цепочка.