Введение
Монетизация крупной площадки с большим количеством трафика из разных стран — всегда борьба между несколькими системами и рекламными стеками. Еще недавно, когда Google работал на территории России, имелось несколько подходов к монетизации различного трафика.
Например:
- Для трафика из РФ (и части стран СНГ) использовался рекламный стек на базе Adfox — РСЯ, Google подключенный через Динамическую монетизацию, и вендоры, поддерживаемые через Yandex Header Bidding.
- Для всего остального есть MasterCard использовали стек на базе Google AdManager (ранее назывался DFP) в связке с Prebid.js, куда подключались российские и иностранные вендоры;
- Иногда встречались варианты на Google+Prebid.js. Однако в этом случае было относительно сложно (без потерь в трафике и нарушения правил Яндекса) подключить рекламные блоки РСЯ.
Вариант стека на Google+Prebid.js выглядел более оптимальным: Google покрывал большую часть трафика, можно было использовать как российских, так и иностранных вендоров через Header Bidding. Из минусов — ограничивалось гибкое использование деманда РСЯ.
Вариант на AdFox был менее удобным, пусть и была возможность подключить Google через Динамическую монетизацию. Но без опции подмешать деманд иностранных вендоров в аукцион.
Прошло время — AdSense/AdManager/AdExchange теперь не работают на территории России. Часть иностранных вендоров не принимают сайты в доменных зонах *.ru, *.su, *.рф, а Яндекс фактически стал монополистом. И внезапно добавил поддержку Prebid.js в свой Yandex Header Bidding. Но есть нюанс…
Интеграция Prebid.js в Adfox
Количество биддеров для Prebid приближается к 500 (на момент написания статьи их было 494). С полным списком можно ознакомиться по ссылке – https://docs.prebid.org/dev-docs/bidders.html. Она еще пригодится при сборке HB конфига.
Количество вендоров доступных для подключения к Yandex Header Bidding через Prebid.js — всего 17:
- AdKernel
- Adriver
- AppNexus
- Between Digital
- CPMStar
- GetIntent
- Hybrid.ai
- Index Exchange
- MyTarget
- OpenX
- Programmatica
- Pubmatic
- Rich Audience
- Rubicon Project
- Sape
- Silverpush
- VOX
В списке отдельно выделены игроки, у которых нет адаптера под Yandex HB. Таким образом, через Prebid.js доступны только 11 вендоров.
Подготовка и настройка AdFox
Часть с настройкой Prebid в AdFox не сильно отличается при подключении вендора. Порядок действий стандартный:
- Сначала привязываем шаблон к вашим баннерам.
Переходим в Настройки — Типы Баннеров — Предопределенные/Собственные. Открываем Шаблоны. Нажимаем на кнопку Использовать предзаданный и выбираем нужный шаблон. (В моём случае это Header Bidding MyTarget for Prebid).
Добавляем новый шаблон на все типы баннеров, которые вы планируете использовать
- Вслед за этим создаем Рекламную кампанию для связки биддера и AdFox. Тут всё просто: выбираем Вид кампании — Динамическая монетизация — и внешнего монетизатора. (В моём случае — MyTarget (Prebid)
Создаём баннеры под каждый тип шаблона и привязываем к площадкам AdFox, которые будут использоваться.
Настройка AdFox закончена. Она особо не отличается от стандартной настройки, разве что лишь наличием слова «Prebid» в названии шаблона и монетизатора.
Подготовка и настройка конфигурационного скрипта
Начнем сверху вниз, начиная от подключения библиотек, заканчивая настройкой adUnits.
Первым делом необходимо скачать библиотеку Prebid.js под набор ваших биддеров.
Заходим на сайт — https://docs.prebid.org/download.html. Версию выбираем последнюю (все её должны поддерживать), выбираем биддера или биддеров, которых вы будете подключать. Рекомендуемые модули на этом примере не подключались, но при желании их можно включить.
Для скачивания нажмите кнопку: Get Prebid.js!
Полученный скрипт можно захостить на сайте, либо на CDN — как вам удобно.
Сначала подключаем библиотеки для работы Header Bidding: первым Prebid, следом Yandex Header Bidding.
<!-- Вызываем Prebid.js -->
<script src="https://www.site.ru/stash/prebid.js"></script>
<!-- Вызываем header-bidding.js -->
<script async="" src="https://yandex.ru/ads/system/header-bidding.js"></script>
Начинаем собирать конфигурационный скрипт: Подключение BiddersMap. Стоит обратить внимание, что у Prebid-монетизаторов в начале названия идёт ключ «pb_». Например, «pb_mytarget» или «pb_getintent»
var adfoxBiddersMap = {
myTarget: "125978",
getintent: "456158",
adriver: "662548",
buzzoola: "845562",
mediasniper: "665628",
pb_myTarget: "986532",
};
Затем подключаем API библиотеки Prebid и коэффициент CPM (если требуется):
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
var biddersCpmAdjustmentMap = {
pb_myTarget: 0.5,
};
Следующий шаг — настройка массива AdUnits:
var adUnits = [
{
code: 'adContainer', // ID рекламного контейнера
sizes: [[300, 250]], // Размеры баннера
bids: [
{
bidder: 'pb_mytarget',
params: { placementId: '917087' }, // placementID из кабинета монетизатора
},
{...} // остальные placementID
],
},
];
Важно отметить, что настройки adUnits для Yandex HB и Prebid будут отличаться. Если в первом случае всё стандартизировано, то для Prebid.js параметры будут отличаться, и их нужно брать из документации вендора на сайте. Например:
- MyTarget — ничего не меняется, placementId — идентификатор баннерного места
{ bidder: "pb_mytarget", params: { placementId: "1547111" } },
- GetIntent — параметр pid — отвечает за идентификатор аккаунта, а tid — идентификатор баннерного места
{ bidder: "pb_getintent", params: { pid: 215, tid: "site.ru_fullscreen_300x600" } },
- Between — параметр s — идентификатор баннерного места, а cur — наименование валюты
{ bidder: "pb_between", params: { s: "12345678", cur: "RUB" } },
- Soloway — параметр siteid — идентификатор аккаунта, запрашивается у вендора, placementId — идентификатор баннерного места. XX — это тоже идентификатор аккаунта, но в рамках placementId
{ bidder: "pb_adriver", params: { siteid: "216200", placementId: "XX:site.ru_fullscreen_300x600" } },
После настройки баннерных позиций указываем таймаут, время ожидания ответа от монетизаторов и настройки YaHeaderBiddingSettings:
var userTimeout = 1000;
window.YaHeaderBiddingSettings = {
pbjs: pbjs, // Обязательный параметр, если подключен Prebid
biddersMap: adfoxBiddersMap,
adUnits: adUnits,
timeout: userTimeout,
biddersCpmAdjustmentMap: biddersCpmAdjustmentMap, // если используется коэффицент CPM
};
После сборки конфигурационного скрипта не забываем добавить загрузчик РСЯ/Adfox:
<script>
window.yaContextCb = window.yaContextCb || [];
</script>
<script src="https://yandex.ru/ads/system/context.js" async=""></script>
Полный конфигурационный скрипт на jsFiddle:
<script src="https://www.site.ru/stash/prebid.js"></script>
<script async="" src="https://yandex.ru/ads/system/header-bidding.js"></script>
<script>
var adfoxBiddersMap = {
myTarget: "125978",
getintent: "456158",
adriver: "662548",
buzzoola: "845562",
mediasniper: "665628",
pb_mytarget: "986532",
};
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
var biddersCpmAdjustmentMap = {
pb_mytarget: 0.5,
};
var adUnits = [
{
code: "adContainer",
sizes: [[300, 250]],
bids: [
{
bidder: "pb_mytarget",
params: { placementId: "917087" },
},
],
},
];
var userTimeout = 1000;
window.YaHeaderBiddingSettings = {
pbjs: pbjs,
biddersMap: adfoxBiddersMap,
adUnits: adUnits,
timeout: userTimeout,
biddersCpmAdjustmentMap: biddersCpmAdjustmentMap,
};
</script>
<script>
window.yaContextCb = window.yaContextCb || [];
</script>
<script src="https://yandex.ru/ads/system/context.js" async=""></script>
Немного про статистику
Мы тестировали Prebid c четырьмя вендорами, которые также использовали в аукционе, но через Yandex Header Bidding — MyTarget, Between Digital, GetIntent и Adriver/Soloway. Далее приведена статистика роста выручки Prebid-тегов относительно тегов Yandex Header Bidding:
Добавление тегов MyTarget через Prebid адаптер дает суммарно на 64% больше денег по сравнению с MyTarget на Yandex Header Bidding.
Еще несколько интересных фактов:
- Нельзя использовать один placementID для одного вендора, но разного типа Header Bidding. Adfox ругается на использование одинаковых тегов, поэтому лучше разделять теги для Yandex HB и Prebid-интеграции
- Нет каннибализации: показатели BidRate и WinRate стабильные, и динамика одинакова для обоих вариантов интеграции
- CPM на Prebid тегах обычно ниже на 10-40% в зависимости от монетизатора
- Все тесты проводились на «голом» Prebid.js без сторонних модулей
- Суммарный прирост выручки после подключения Prebid.js составил до 2%
- UPD: Со временем могут расти расхождения между статистикой AdFox и данными вендоров. Расхождения достигают 400+%, тут поможет включение мультипликатора
Подводя итоги: добавление текущих монетизаторов через Prebid.js интеграцию не очень сложная техническая задача. Она мало чем отличается от Yandex HB — за исключением другого формата placementID и добавления библиотеки и API самого Prebid.
В нашем случае, рост общей выручки достигает 2%, но надо понимать, что показатели могут отличаться в зависимости от выкупа и распределения выручки по вендорам на ваших сайтов.
Попробовать точно стоит!