Кейсы
Как Райффайзенбанк боролся с обманщиками в СPA-сетях
Мы сотрудничаем с Райффайзенбанком чуть больше 4 месяцев, но уже успели решить очень интересную задачу. Хотим поделиться кейсом, который может быть полезным не только банкам, но и всем, кто пользуется услугами CPA-сетей.
О компании
Райффайзенбанк — российский коммерческий банк для частных и корпоративных клиентов. Дочернее предприятие австрийской банковской группы Raiffeisen Bank International. Банк начал работать в России с 1996 года и на сегодняшний день насчитывает более 180 отделений и 7 900 сотрудников.
Кроме отделений, клиенты Райффайзенбанка могут использовать дистанционные каналы обслуживания: банкоматы, терминалы самообслуживания, онлайн-банк, мобильное приложение и СМС-банк.
Проблема
Маркетологи Райффайзенбанка заметили, что за последние пару месяцев их расходы по affiliate трафику резко выросли, а доход остался прежним. При этом наблюдались частые разрывы сессий пользователей перед заказом. Банк предположил, что недобросовестные партнеры могут подменять источник трафика на странице оформления заявки. Например, с помощью расширений к браузерам, тулбаров. Работает это так: пользователь устанавливает себе расширение, допустим, чтобы получать скидки. Затем заходит на ваш сайт и оформляет заказ — в этот момент всплывает окно со скидкой. Когда человек его открывает, веб-мастер подставляет свои cookies.
Решение
Чтобы проверить гипотезу с подменой источников, маркетологи компании решили собрать сырые данные о действиях посетителей на сайте. Затем выбрать информацию о клиентах, у которых на одной странице происходили странные кратковременные обрывы сессий, при этом менялся источник трафика, а последним каналом был affiliate. Эти данные помогут понять, какие партнеры присваивают себе трафик других каналов. В результате банк прекратит работу с нечестными веб-мастерами и сможет эффективнее перераспределить маркетинговый бюджет.
Команда OWOX BI помогла Райффайзенбанку собрать и обработать необходимые данные. Схема движения данных выглядит так:

Шаг 1. Собрали сырые данные
Поскольку в Google Analytics есть лимит на количество сессий, после которого применяется семплирование, аналитики решили собирать данные в Google BigQuery. Кроме того, это облачное хранилище отвечает строгим стандартам безопасности, что для банка особенно важно.
Райффайзенбанк настроил импорт данных с сайта в Google BigQuery через OWOX BI Pipeline. Такое решение позволяет передавать несемплированные данные в режиме, близком к реальному времени, и получать timestamp каждого хита. Благодаря этому можно в одном отчете отследить любую последовательность пользовательских действий, даже из разных сессий.
Например, вам нужна информация о пользователях, которые посетили страницу /promo/, затем вернулись на сайт через CPC и в итоге совершили транзакцию. И отчет нужен в разрезе даты посещения страницы /promo/ по каждому пользователю. Получить эти данные можно с помощью такого запроса:
SELECT
cp.promo.date AS Date,
cp.promo.clientId AS ClientId,
cp.promo.time AS Promo_time,
cp.cpc.time AS CPC_time,
send.time AS SEND_time
FROM (
SELECT
promo.date,
promo.clientId,
promo.time,
cpc.time
FROM (
SELECT
date,
clientId,
MIN(time) AS time
FROM
TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}'))
WHERE
page.pagePath CONTAINS '/promo/'
AND type = 'pageview'
AND traffic.medium != 'cpc'
GROUP BY
date,
clientId,
ORDER BY
clientId ASC) AS promo
LEFT JOIN (
SELECT
date,
clientId,
traffic.medium,
time
FROM
TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}'))
WHERE
traffic.medium = 'cpc'
AND type = 'pageview'
GROUP BY
date,
clientId,
traffic.medium,
time
ORDER BY
clientId ASC) AS cpc
ON
promo.clientId=cpc.clientId
WHERE
promo.time < cpc.time) AS cp
LEFT JOIN (
SELECT
date,
clientId,
time
FROM
TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}'))
WHERE
eventInfo.eventCategory = 'send_ok'
AND type = 'event'
GROUP BY
date,
clientId,
time
ORDER BY
clientId ASC) AS send
ON
cp.promo.clientId = send.clientId
WHERE
cp.cpc.time < send.time
В итоге вы получите вот такую таблицу со всеми необходимыми данными.

Шаг 2. Обработали данные
Аналитики OWOX совместно с коллегами из Райффайзенбанка определили, что для проверки гипотезы о подмене источников трафика понадобятся следующие данные:
- ID пользователя.
- Источник и канал первой и следующей сессии.
- Время между сессиями.
- Стартовый и конечный URL каждой сессии.
- События в сессии.
- Наличие транзакции в последней сессии.
Также к данным применили условия, по которым можно сделать вывод, что источники трафика подменялись:
- Промежуток между двумя сессиями — до 60 секунд.
- При смене источника не меняется страница.
- В последней сессии совершена транзакция.
- Последний канал — affiliate.
Эту информацию получили с помощью SQL-запроса к данным в Google BigQuery:
SELECT
*
FROM (
SELECT
traff.clientId clientId,
traff.page.pagePath pagePath,
traff.traffic.source startSource,
traff.traffic.medium startMedium,
traff.time startTime,
aff.evCategory eventCategory,
aff.evlabel eventLabel,
aff.evSource finishSource,
aff.evMedium fifnishMedium,
aff.time finishTime,
aff.isTransaction isTransaction,
aff.pagePath link,
traff.time - aff.time AS diff
FROM (
SELECT
clientId,
page.pagePath,
traffic.source,
traffic.medium,
date,
INTEGER(time) time
FROM
TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}'))
WHERE
traffic.medium != 'affiliate')AS traff
JOIN (
SELECT
total.date date,
total.time time,
total.clientId clientId,
total.eventInfo.eventCategory evCategory,
total.eventInfo.eventLabel evlabel,
total.traffic.source evSource,
total.traffic.medium evMedium,
tr.eventInfo.eventCategory isTransaction,
total.page.pagePath pagePath
FROM (
SELECT
clientId,
page.pagePath,
eventInfo.eventCategory,
eventInfo.eventLabel,
traffic.source,
traffic.medium,
date,
INTEGER(time) time
FROM
TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}'))
WHERE
traffic.medium = 'affiliate') AS total
LEFT JOIN (
SELECT
clientId,
date,
eventInfo.eventCategory,
INTEGER(time) time
FROM
TABLE_DATE_RANGE({dataSetName}.{tableName},TIMESTAMP('{startDate}'), TIMESTAMP('{endDate}'))
WHERE
eventInfo.eventCategory = 'send_ok'
GROUP BY
1,
2,
3,
4) AS tr
ON
total.clientId = tr.clientId
AND total.date = tr.date
WHERE
tr.eventInfo.eventCategory = 'send_ok'
AND tr.time>total.time)AS aff
ON
traff.clientId = aff.clientId)
WHERE
diff >-60
AND diff<0
GROUP BY
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
ORDER BY
clientId,
finishTime
Шаг 3. Построили отчеты
Для дальнейшего анализа наши аналитики импортировали выбранные данные из Google BigQuery в Google Sheets с помощью аддона OWOX BI BigQuery Reports. В итоге Райффайзенбанк получил таблицу с информацией по каждому клиенту, у которого изменялся источник трафика, а промежуток между сессиями составлял не больше 60 секунд.

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

Например, из отчета выше видно, сколько было транзакций с измененным источником и какие именно аффилиаты подменяли источник трафика на свой. Также отчет показывает, у каких каналов отнимали транзакции. В нашем случае это CPC и Organic.
Результаты
Райффайзенбанк получил отчет, который помогает мониторить статистику по аффилиатам и выводить на чистую воду обманщиков в CPA-сетях. Компания оптимизировала расходы на рекламу, отказавшись от сотрудничества с двумя недобросовестными партнерами, которые подменяли источник заявки и необоснованно завышали счета на свои услуги.
Мы очень рады тому, что благодаря оперативной помощи коллег из OWOX смогли быстро найти и прикрыть тонкое место в работе с нашими CPA-партнерами. Это действительно позволило в моменте сэкономить значительную сумму затрат в маркетинговом бюджете и более честно атрибутировать конверсии и продажи по каналам. С другой стороны мы понимаем, что такая работа должна быть регулярной и уже трудимся над автоматизацией мониторинга и системы борьбы с фродом из CPA-канала. Наша главная задача не столько сократить расходы на Affiliate-продажи, сколько научиться эффективно бороться с мошенниками и давать больше возможностей зарабатывать честным и эффективным партнерам.
Читайте также нашу статью о примерах нечестной работы веб-мастеров и способах выявления таких кейсов.