Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Россия +7 (909) 261-97-71
Вчера в 13:51

Семь заявок из девяти оказались ботами: почему цифра конверсий в отчете почти всегда неправда

Россия +7 (909) 261-97-71
0 276
Подпишитесь на нас в MAX
Максим Волков
Основатель студии Volkov Digital

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

Разработкой и поисковым продвижением занимаюсь с 2005 года, сейчас в работе тринадцать сайтов в разных нишах, от медицины до промышленного оборудования.

Дело было так. Сайт лифтовой компании, месячный отчет, все как всегда. В Яндекс Метрике за окно 15 достижений цели «Отправил форму» из органики. Цифра приятная, ее можно нести клиенту. Но перед отправкой я по привычке залез в базу форм посмотреть, о чем люди пишут.

Реальных заявок там было три. Остальные 80% написал бот.

С этого началась история, которая закончилась проверкой всех тринадцати счетчиков. Выяснилось, что цифра «заявок» врет как минимум тремя разными способами, причем два из них никак не связаны со спамом.

Как выглядит бот, который заполняет ваши формы?

Первое, что бросается в глаза, когда читаешь такие заявки подряд: они написаны по шаблону, в котором автор не подставил значения.

«Добрый день! Нужен расчет: ваша услуга / ваше предложение. Важно уложиться в бюджет. Жду звонка».

Живой человек так не пишет никогда. Он пишет предметно: сколько этажей в доме, какого года постройка, что именно сломалось. Разница видна с первой строки, если эти строки вообще кто-то читает.

Дальше признаки, которые видно уже в базе:

  • Один номер под разными именами. На лифтовом сайте один номер (привожу его частично, +7 968 554-XX-XX) пришел сначала как Максим, потом как Полина. На втором сайте, о котором ниже, один номер отметился как Альбина, Екатерина и Елена.

  • Датацентровые подсети. Заявки шли с 196.244.192.43-46 и 82.118.29.64/66. Это не домашние провайдеры и не мобильный интернет, это хостинг.

  • Ротация браузеров. Chrome 122, Firefox 123, Edge 122 по кругу, при одинаковом поведении на сайте.

  • Одна и та же форма. Все заявки пришли через форму на главной, хотя на сайте их несколько.

Как отличить ботовую заявку от живой

Ни один признак сам по себе не приговор. У человека тоже может быть корпоративный прокси, а номер он мог продиктовать жене. Работает связка: шаблон плюс повтор номера под другим именем плюс подсеть.

Второй сайт: бот, который надувал не только заявки

Когда я пошел проверять остальные проекты, на сайте компании по водоочистке нашлось то же самое, но в масштабе побольше и с другим почерком.

Из 79 заявок за три месяца ботами оказались 71, то есть 90%. Реальных обращений за тот же период было восемь записей от пяти человек, а в июле не было ни одной. При этом отчеты за июнь и июль я уже отправил, и цифры в них были «хорошие».

Почерк отличался от первого случая, и это важно. Никаких датацентров: заявки шли с обычных провайдерских подсетей, часть из них принадлежит Ростелекому в Перми. Номера были валидные, российские, из дальних регионов. Имена случайные, комментария нет вовсе, форма обратного звонка на главной. Если смотреть на одну такую заявку, она неотличима от настоящей.

Отличается она в массе: шесть разных подсетей за два месяца, номера повторяются под разными именами, ни одного вопроса по делу.

Но самое интересное на этом сайте было не в формах. Тот же бот с зимы надувал посещаемость, и вот это проверяется способом, который доступен каждому за две минуты.

В феврале Метрика показывала 324 визита из органики, из них 153 из Google. Search Console за тот же февраль отдавала 9 кликов. Девять.

Расхождение между Метрикой и Search Console бывает всегда, атрибуция разная, и двух-трехкратная разница никого не удивляет. Семнадцатикратная означает, что кто-то ходит на сайт мимо поиска и представляется поисковым трафиком.

Красивое следствие: когда бот начал истончаться, посещаемость в Метрике «упала» с 324 до 178 визитов, и это выглядело как провал. По Search Console за то же время клики выросли с 9 до 30-42 в месяц, а показы с 2 206 до 6 150. То есть сайт все это время рос, а отчет по Метрике показывал падение.

Что показывает отчет и что лежит в базе

«У нас не девять заявок, у нас поток»

Здесь легко возразить: девять обращений за пять дней это маленький сайт, у нас таких цифр не бывает.

В том и дело. Когда заявок девять, подмену видно глазами за пять минут: сел, прочитал, увидел шаблон. Когда их несколько сотен в месяц, базу подряд не читает никто, а сводка в аналитике выглядит так же убедительно. Те же 80% мусора спокойно живут в отчетах месяцами, просто их некому заметить.

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

Почему это ломает не только отчет?

Дело не в одной некрасивой цифре.

Отчет клиенту. Вы приносите рост заявок, клиент видит рост заявок, а отдел продаж видит мусор. Дальше разговор идет по понятному сценарию: «у вас в отчете пятнадцать, а у нас три, вы там что рисуете».

Работа менеджеров. На лифтовом сайте заявки уходили письмами на весь отдел продаж, четыре адреса. Каждая ботовая заявка это чей-то звонок в никуда.

Оптимизация под цель. Если вы настраиваете рекламу или правите страницы, ориентируясь на цель, в которой 80% мусора, вы оптимизируетесь под поведение бота. Он приходит стабильно, конвертируется прекрасно и никогда ничего не покупает. Автостратегии в рекламных кабинетах учатся на этих же данных, так что дальше система сама начинает искать вам побольше похожей аудитории.

Сравнение периодов. Это самое неприятное. Если бот работал в прошлом году, а в этом его вычистили, любой отчет «год к году» покажет падение там, где был рост. По таким сайтам динамику по Метрике вообще нельзя брать: только Search Console и Вебмастер, где бот не отражается.

Помогает ли здесь рекапча?

Первое, что предлагают в такой ситуации, это поставить reCAPTCHA. Я от нее на своих проектах отказался, и вот почему.

Она тянет около 300 КБ чужого скрипта на каждую страницу сайта, а не только на ту, где форма. Она отправляет данные посетителей в Google, а для 152-ФЗ это трансграничная передача, которую надо описывать в политике, и ее там обычно нет.

И главное: она молча режет заявки с низким «рейтингом доверия». Человек с VPN, старым браузером или просто со странной для Google историей нажимает «Отправить», видит «произошла ошибка» и уходит к конкуренту. Вы об этом никогда не узнаете, потому что в базу такая заявка не попадает и в отчете ее нет.

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

Что работает вместо нее?

Связка из двух дешевых вещей на стороне сайта и правил разбора на стороне базы.

Ловушка. В форму дописывается лишнее поле, которое человек не видит и не заполняет, а бот заполняет исправно. Прятать его надо уводом за экран (`position:absolute; left:-9999px`), а не через `display:none`: часть ботов скрытые display-ом поля пропускает.

Метка времени. К форме прикладывается подписанная метка о моменте ее отрисовки. Если форма ушла быстрее трех секунд, человек физически не успел бы ее заполнить.

Дальше правила разбора в том порядке, в каком они срабатывают:

  1. Блок-лист подсетей, с которых уже прилетало.
  2. Незакрытые плейсхолдеры в тексте («ваша услуга», фигурные скобки).
  3. Шаблон: два и более дежурных оборота из известного банка фраз.
  4. Холодное коммерческое предложение (это отдельный жанр, вам предлагают SEO через вашу же форму).
  5. Ссылка в тексте заявки.
  6. Телефон не российского формата.
  7. Тот же номер под другим именем за последние 90 дней.

Последнее правило самое полезное и самое дешевое: историю можно брать прямо из таблицы с заявками, отдельное хранилище не нужно.

Проверять фильтр надо на прошлых заявках, а не на будущих. Я прогнал через него всю историю формы, 41 запись: все семь ботов и холодное коммерческое предложение отбились, три реальные заявки прошли. Заодно выяснилось, что текстовые правила ловят этих ботов и без блок-листа адресов, то есть смена подсети фильтр не обходит.

Отбитые заявки должны куда-то писаться. Лог отказов в файл вне публичной папки, и первую неделю его надо читать глазами.

Главное правило фильтра: сомневаешься – пропускай

Одну вещь я понял не сразу, и она важнее всех правил вместе взятых.

Пропущенный спам стоит дешево: менеджер потратит минуту и выругается. Отбитая живая заявка стоит клиента, и вы об этом даже не узнаете.

Поэтому асимметрия должна быть заложена в код. У меня, например, если метки времени в запросе нет вообще (кеш, старая вкладка, отключенные скрипты), заявка пропускается без разговоров. И человеку, чью заявку все-таки отбили, показывается телефон офиса и почта отдела продаж, чтобы он не уперся в стену.

Цель, которая считает один клик пять раз

Дальше я пошел по остальным счетчикам и нашел вторую механику вранья, к спаму отношения не имеющую.

На одном сайте пять разных целей показывали за 30 дней ровно по 2 197 достижений. Абсолютно одинаковое число у пяти целей означает одно: условия пересекаются, и один клик засчитывается во все пять сразу. В сумме получилось 11 516 достижений при 1 396 визитах из органики.

Формально в отчете это выглядит как фантастическая конверсия. Практически это значит, что по данному сайту любая цифра «заявок» недостоверна, включая те, по которым мы оценивали результат работ.

Проверяется мгновенно: если у нескольких целей совпадают числа до единицы, они считают одно и то же событие.

Цель, которая молчит два года

И третья механика, самая обидная, потому что врет она в другую сторону.

На одном медицинском сайте форма не отправляла письма двадцать месяцев. Никто не заметил. Не потому что все дураки, а потому что в аналитике не было ни одного ключевого события: ноль заявок выглядел как «ну, ниша такая».

На другом проекте события исправно отправлялись все это время (одних только заявок 737 за месяц), но ни одно не было отмечено ключевым, и аналитика показывала ноль конверсий при почти семи тысячах сессий. Когда события отметили, картина по каналам развернулась: у одного канала конверсия оказалась 21,7%, у органики 2,9%. До этого все каналы выглядели одинаково никак.

Отдельная неприятность: разметка ключевых событий не работает задним числом. История останется нулевой, и считать прошлое придется по сырым событиям.

Как проверить свои цифры за час?

Проверить свои цифры за час

Порядок, в котором я теперь прохожу любой новый проект.

  1. Сравните органику в Метрике и клики в Search Console за один и тот же месяц. Разница в два-три раза нормальна, в десять и больше означает, что на сайт кто-то ходит мимо поиска.
  2. Откройте базу форм и прочитайте последние двадцать заявок подряд. Не сводку, а тексты. Шаблон виден сразу.
  3. Отсортируйте заявки по номеру телефона и посмотрите повторы под разными именами.
  4. Посмотрите на IP отправителей: датацентровые подсети в заявках от частных лиц – это аномалия.
  5. Сравните числа достижений у всех целей. Совпадение до единицы означает дубль.
  6. Отправьте тестовую заявку с каждой формы и убедитесь, что письмо дошло. Не «должно доходить», а дошло.
  7. Проверьте, отмечены ли события ключевыми. Ноль конверсий при живом трафике почти всегда означает разметку, а не нишу.
  8. Если по сайту в прошлом году работал бот, честно скажите клиенту, что сравнение год к году по Метрике не имеет смысла, и покажите Search Console.

Ничего сложного в этом списке нет, весь он делается за час. Обидно не то, что боты существуют, а то, что цифры, по которым принимаются решения о деньгах, обычно никто не перепроверяет.

Если вы ловили такие же заявки или знаете другие способы отличить бота от человека, расскажите в комментариях: тема живая, а банк признаков лишним не бывает.

0 комментариев
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.

Отправьте отзыв!
X | Закрыть