Как победить фрод в Яндекс Директе, нужно всего лишь...

Как победить фрод в Яндекс Директе, нужно всего лишь...

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

В данной статье не будут рассмотрены методы возврата средств при оплате за конверсии. Там ничего сложного, выгружаете, обращаетесь в Яндекс и ждете их ответа.

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

Если интересно еще больше технических штук, то можно подписаться на мой ТГ канал:

А теперь продолжим.

Откуда они возникают?

У нас есть несколько гипотез по этому поводу:

  • Владельцы площадок в РСЯ сами оставляют заявки — вполне вменяемый кейс, больше конверсий — больше заработок владельца.
  • Коллекторские агентства, у которых есть задача «задолбать» должника.
  • Заказ от конкурентов, скликивание существует как услуга на многих биржах по выполнению заданий, и в целом ее легко найти в SEO.
  • Сам Яндекс — фрод в последнее время идет не только с плейсмента РСЯ, а вполне себе существует в больших объемах и на поиске. Учитывая, что 90% причин отказа по таким заявкам — «Не оставлял заявку», «Некорректный номер», а также изменение самих правил в Директе как бы намекают на это. Если с оплатой за конверсии всё понятно, то вопросы к автоматическим стратегиям с оптимизацией за конверсии и оплатой за клики остаются, выгоды нет.
"Совпадение, не думаю" (с)
"Совпадение, не думаю" (с)

Фрод оставляют: 1 — живые люди, которые оставляют фрод-заявку, 2 — боты. В основном сейчас тренд смещается в сторону живых людей (или продвинутых ботов) с нормальной активностью на сайте и живыми номерами телефонов, которые, к слову, даже проходят лид-чек (проверку на корректность номера, доступность и прочие моменты), но рассмотрим способы для обоих случаев.

Какие методы борьбы существуют?

На каждом из этих пунктов остановимся подробнее.

Оффлайн-конверсии

Оффлайн-конверсии — все те конверсии, которые мы передаем в Я.Метрику из внешних источников, например CRM.

Самым эффективным методом борьбы с фродом является обучение РК (рекламные кампании) на этих конверсиях. С учетом того, что раньше процесс обработки Яндекс Метрикой (а значит, и попадание в Яндекс Директ) был в районе 24 часов, то сейчас время сократилось до 1 часа. Если раньше стратегии на оффлайн-конверсиях работали только при наличии очень большого объема данных — десятки конверсий в день, судя по нашей практике, то сейчас требования такие же, как и к фронт-целям с сайта.

Требования к количеству целей от 10 конверсий в неделю, но лучше больше.

Интеграция тоже простая в большинстве случаев, если у вас стоит Б24 или АМОСРМ, нужно сделать:

  • Заходим в “Интеграции” в Метрике, ищем пункт “Передача данных из CRM”
Как победить фрод в Яндекс Директе, нужно всего лишь...
  • Находим нашу систему
Как победить фрод в Яндекс Директе, нужно всего лишь...
  • Следуем инструкциям. Надо быть залогиненным под системой, проверить передачу clientid (ID клиента, который присвается Метрикой при заходе пользователя на сайт) в лиде/сделке (обычно передается автоматически конструкторами и формами, если они построены на базе Битрикса, если clientid нет, то ставим ТЗ программисту — я дам ниже) и проставить статусы лидов. Для лидов в работе будет создана цель CRM: заказ создан, для оплат — CRM: заказ оплачен. Также появятся возможность создавать сегменты на спам и отмененные в любом из отчетов и использовать их для корректировок.
Здесь нужно выбрать статусы из вашей CRM и привязать их к этапам Метрики.
Здесь нужно выбрать статусы из вашей CRM и привязать их к этапам Метрики.

Если вам не повезло с CRM, то используем мое ТЗ на передачу офлайн-конверсий в Яндекс метрику для проект

По статусам обычно передаем квалифицированный лид. Связано с тем, что событие должно быть «частотным» (достаточный объем) + не очень большое окно до определения квалификации (события привязываются только в окне — 21 день с момента завершения сессии, всё, что совершено позже, не учитывается). Иногда можно подмешивать статусы: договор отправлен, договор заключен, оплата и так далее, но по практике в окно атрибуции это не попадает.

Мы говорим алгоритму: «Хотим больше квалифицированных лидов», и алгоритм пытается обучиться, то есть привести максимальное количество целевых действий или попасть в нужную нам стоимость. Решает ли это полностью вопрос касаемо фрода? Конечно же нет, но может сильно помочь его сократить.

Поможет ли это с маленькими проектами, где обычных лидов-то немного, а оффлайн-конверсий практически нет? Ответ — нет, помним про объем данных и про обучение. Можно попробовать схитрить, сделать дубли конверсий: условно, создаем 10–20 целей с теми же идентификаторами и всех их добавить в стратегию для обучения, тогда 100% зеленую плашку, что кампания обучилась, вы получите, а вот реальную пользу для ML (Machine Learning) обучения — сомневаюсь. Пока данных в чистом эксперименте — добавили и стало лучше — нет. Попробуйте и поделитесь в комментариях, что получилось.

Реальные конверсии за период - 7 шт.
Реальные конверсии за период - 7 шт.
А тут 32 и видно, что кампания обучилась.
А тут 32 и видно, что кампания обучилась.

Дополнительным методом оптимизации может стать использование отрицательной корректировки -100% на СПАМ сегмент.

Перезапуск РК с целью переобучения

Тут стандартный прием: если что-то не работает, то лучше перезапустить обучение. Самое простое и эффективное — просто копирование текущей РК. Если вы попали под волну фрода, сам объем конверсий (датасет) становится грязным, в ML обучении более свежие данные имеют больший вес, и в итоге мы ищем людей, которые оставляют фрод. Перезапуская, даем шанс зацепиться за более чистую аудиторию, хорошо работает в комбинации со всеми методами из данной статьи: внедрили и перезалили для обучения.

Анализ поведенческой и демографической части трафика (пол/возраст/площадки)

Будет хорошо, если вы ранее сегментировали группы по срезам возраста или пола и передавали эти данные в CRM, тем самым обеспечив себе информацию о качестве каждого возраста, писал об этом тут - https://vc.ru/marketing/1665039-cpisok-podhodov-dlya-kontekstnoi-reklamy-kotorye-vy-ne-ispolzuete.

Если нет, то включаем стандартную логику, сначала проверяем ЦА. Вы знаете, что ваш продукт не предназначен для аудитории 18–24? И видите, что существенная доля трафика с него? При этом у вас сплошной фрод? Поздравляю, с очень высокой долей вероятности с этого возраста льется фрод. Аналогично и для пола.

Также дополнительно можно проверить площадки: images.yandex.ru, gdz.ru (и прочее), game.yandex.ru, m.games.yandex.ru, video.like — обычно дает фрод в 100% случаях. Их стоит исключить из кампаний сразу со старта. Ну а если нужно сместить перфоманс на нужные вайт-площадки, то напомню о статье - https://vc.ru/marketing/1210634-kak-poluchat-do-85-trafika-s-nuzhnyh-ploshadok-v-rsya-keis-ot-idtoneru.

Усложнение форм поведенческими факторами (скроллы + формы, время + формы и т.д.)

Основная идея метода — передавать в Метрику только те формы, цели, которые удовлетворяют нескольким условиям, обычно используем группу триггеров в GTM (Google Tag Manager): поведенческие характеристики + отправка формы, можно также использовать составные цели в Метрике.

Тут нужно погрузиться в отчеты Метрики, выбрать сегмент «Спам-заявок», посмотреть поведение пользователей через Вебвизор, стандартные отчеты и постараться найти паттерны поведения, также этот спам-сегмент можно использовать отрицательными корректировками: -100% на текущие РК, чтобы эти пользователи больше не видели вашу рекламу. Если вы не используете оффлайн-конверсии, то тут, скорее всего, придется усреднять данные и смотреть по всем пользователям с Директа, обычно доля неквалифицированных лидов большая, от 60 до 90%, и в целом подход имеет место быть. В последнее время способ ослабил силу, так как те, кто оставляют фрод-заявки, отлично «маскируют» свое поведение. То есть оно полностью идентично тому, как ведет себя обычный пользователь. У него нормальная величина скролла или, к примеру, нормальное время на сайте.

Но этот метод все равно обязательно внедрять в комплексе, например не передавать событие на слишком быстрое заполнение форм. Да, туда попадают пользователи, у которых больше 2 визитов и они зашли только для того, чтобы оставить заявку, но их доля небольшая, сами конверсии все равно передаются в CRM, у нас есть действие — любые лиды в Метрике, мы всего лишь не обучаем на них РК.

Из кейсов использования:

  • Пройти квиз и посчитать минимальное время его прохождения, поставить одновременное выполнение двух событий, чтобы отправилась форма. На основе этого события обучаем кампанию.
  • Посмотреть среднее время нахождения квалифицированных лидов на сайте, выборку взять от 10-20 пользователей — это будет то минимальное время или любой другой поведенческий фактор, который необходим на ознакомление с сайтом. В целом это можно сделать эмпирическим путем в вашем коллективе, но данные будут менее точными. Использовать это время или % скролла в совокупности с отправкой формы.

Использование двухстраничных форм

Для реализации нам нужно реализовать 2 страницы — «Спасибо».

Как только человек оставляет заявку, мы показываем страницу «Спасибо» и задаем на ней уточняющий вопрос или блок вопросов (квиз):

  • В какое время вам было бы удобно связаться? + варианты ответов

  • Хотели бы вы получить скидку? (тут надо согласовывать с клиентом и предупредить отдел продаж для этого).

  • Возникла ошибка, нажмите еще раз).

Цель мы располагаем на отправку формы на 2-й странице. Суть в том, что боты не понимают вопросов, они заполняют данные по базе — стандартные имя/фамилия/телефон/е-мейл, а живой человек многовероятно ответит. Тем самым оптимизируемся только на качественные лиды, обучая при этом стратегию.

Использование СМС-подтверждения

Как победить фрод в Яндекс Директе, нужно всего лишь...

Ставим на форму подтверждения. Этот способ очень радикальный, снижает CR в заявку в 100% случаях, но очень эффективен с точки зрения очистки трафика от фрода. Предлогом оставить смс может быть: скидка, закрепление специальных условий, участие в акции и т.д. — пофантазируйте. Форму отправляем только в том случае, если подтвержден телефон.

Использование воронок через мессенджеры

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

В TG доступен способ передачи меток в бота, точно есть у salebot. Ведем в бота или на лендинг со связью только через TG, пользователь заполняет короткий квиз, заявка квалифицируется, и отдаем ее обратно через оффлайн-конверсии в Метрику. Вряд ли у человека, у бота тем более, хватит терпения пройти данный круг ада.

В WhatsApp можно передавать clientid в приветственном сообщении (стирают, судя по кейсам, всего 20% пользователей), далее «прокидывать» это значение в CRM и уже после «слать» оффлайн-конверсии. Принцип аналогичен TG, за исключением дополнительной работы по прокидыванию clientid.

Способ не идеальный, опять усложнение воронки, а следовательно, падение CR, но если других вариантов не остается, то why not?

Вход через вк.ид\сбер.ид\яндекс.ид\т-банк.ид

Имеет смысл только там, где цель срабатывает на этапе авторизации.

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

Проверка по полям (не передаем заявки с матом, триггер-словами и так далее)

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

Для этого будем использовать GTM (приведу примеры для тильды и для марквиза, а все остальное вы можете уточнить у ваших разработчиков или попросить chatgpt написать вам функцию):

  • Сначала создаем переменную - Custom JavaScript
Как победить фрод в Яндекс Директе, нужно всего лишь...
  • Нам нужно написать функцию на JS, которая возвращает значение поля/полей в момент его ввода.
  • Для Тильды, например, это параметр aria-label="name" + ID формы.
Тут ищем поле ID формы
Тут ищем поле ID формы
А тут нам нужна переменная в которой хранится значение "name"
А тут нам нужна переменная в которой хранится значение "name"
  • Пишем функцию для Тильды - она возвращает массив из значений в формах.
Как победить фрод в Яндекс Директе, нужно всего лишь...
  • Далее настраиваем триггер со следующими настройками для тильды, используя переменную и does not match RegEx (ignore case) со следующими значениями: Список на исключение для регулярного выражения GTM для форм - idtone.ru - тут список всего русского мата, который я преобразовал в регулярное выражение, поставьте лайк за это). Напомню, что знак «|» означает «или».
Тут нужно задать исключающее условие если в полях содержится мат или любое ваше значение которое вам не надо
Тут нужно задать исключающее условие если в полях содержится мат или любое ваше значение которое вам не надо
  • Что делаем для марквиза, простым JS там не получить значение, поэтому используем DOM Element. Получаем value с ID — name.
ID - ID формы (главное, чтобы он уникальным на страницу, иначе придется обращаться к селектору)
ID - ID формы (главное, чтобы он уникальным на страницу, иначе придется обращаться к селектору)
Сама переменная value в которое записывается значение кода.
Сама переменная value в которое записывается значение кода.

Далее так же, как в тильде.

И так общий алгоритм:

  • Получаем переменную/переменные, куда можно вписать текст. Полей может быть больше, поэтому, попросите разработчика|chatgpt вам помочь.
  • При отправке формы проверяем условие по этой переменной, не передаём в Метрику, если есть чёрный список слов при заполнении.
  • Не справляетесь? Обратитесь к разработчику, он поможет.

Посимвольное заполнение форм

Данный метод относится больше к ботовому трафику. Идея заключается в том, что мы ограничиваем простой копипаст в форму, то есть игнорируем его. Вместо этого разрешаем заполнять формы только через ручной ввод с клавиатуры. Опять же, может порезать CR, так как я, например, часто использую автозаполнение, но нужно тестировать и отслеживать изменения % фрода.

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

Невидимые кнопки/поля

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

Капчи (видимые/невидимые)

Также метод больше к бот-трафику. Технически усложняем жизнь ботов через добавление капч на сайте. Лучше использовать невидимые, так как альтернатива сильно режет CR на сайте, а это явно не та цель, которой мы хотим добиться.

Прогуглить про решения можно в поиске. Лично мы используем https://yandex.cloud/ru/services/smartcaptcha.

Botfaqtor и прочие герои

Также защищает от ботного трафика.

Есть два мастодонта индустрии (оба в Еламе бесплатны):

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

Исключение IP адресов

На уровне рекламной кампании можно исключить всего 25 адресов, а на уровне сайта — любое количество. Я предлагаю использовать сайт, для этого нужно собирать IP-адреса спам-заявок и запрещать посещение сайта на уровне сервера. Значимого эффекта, скорее всего, вы этим не добьетесь, но можно будет исключить разовых, «залетных» конкурентов и повторно не тратить деньги.

Итог

Обязательно нужно:

  • Комбинировать методы — любая синергия даст больше эффекта. Исключили везде по 5% возможного фрода, на выходе получили 20-40% сокращения.
  • Тестируйте — сначала определите, боты или живые люди оставляют фрод, потом подберите совокупность методов, как вы этот фрод будете «душить».
  • Начинать лучше с «мягких» методов, которые не так сильно «ломают» CR.
  • Если ничего не помогает, то используем HARD методы, особенно если других вариантов у вас нет, например, мало оффлайн-конверсий и очень много фрода, на который не влияет ничего.

Я постарался описать все известные мне методы борьбы с фродом, надеюсь, статья была для вас полезна. До следующих встреч!)

Напомню, что в ТГ тоже много всего интересного, подписывайтесь.

66
3 комментария

А в % результат каждого метода известен? 5% это условно или реальная статистика?

p.s. конечно, интересно было бы узнать мнение яндекса. только не официальные отписки техподдержки в стиле "по результатам проверки, мы не увидели признаков фрода"

5% условных цифр, там может быть как и 0, так и кратное сокращение фрода. Всё зависит от распределения типа фрода в каждом проекте.

2х-страничная форма понравилась