ADFOX Sites Help

Header Bidding

О технологии

Header Bidding — это programmatic-технология, которая позволяет в момент загрузки страницы сайта пользователем, опросить напрямую несколько подключенных DSP платформ и выбрать среди них предложение с максимальной ставкой.

Стартовая настройка Header Bidding производится в 2 этапа:
1. В аккаунте издателя подключается функционал "Динамическая монетизация" и производятся необходимые настройки.
2. Издатель подключает к сайту специальный скрипт header-bidding.js и JavaScript-код, который содержит описание подключенных покупателей и рекламных мест.

Издатель должен заключить с каждым покупателем отдельный договор для торгов с применением технологии Header Bidding, который никак не относится к Яндекс или ADFOX.

Header Bidding работает следующим образом:
В момент загрузки страницы пользователем код Header Bidding (скрипт header-bidding.js в связке с JavaScript-кодом) отправляет запрос одновременно всем подключенным покупателям и они конкурируют за показ на единых условиях, делая свои ставки.
Все ставки от покупателей приходят к серверу ADFOX.
Сервер сравнивает ставки покупателей и CPM кампаний вида "Динамическая монетизация" (если таковые имеются в аккаунте издателя) и выбирает максимальную ставку, которую и возвращает на сайт пользователю.

Преимущества использования Header Bidding для издателя:
1. удобный способ подключения внешних монетизаторов;
2. увеличение эффективности за счет учета ставок внешних монетизаторов в рамках Динамической Монетизации;
3. снижение потерь трафика при схеме классических "водопадов";
4. сокращение времени для отрисовки рекламы за счет исключения "лишних" звеньев из водопада.

На данный момент интеграция возможна с покупателями:
Criteo;
Soloway.
В дальнейшем список покупателей будет пополняться.

Настройка аккаунта ADFOX

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

Вам будет предоставлена информация в виде списка: название покупателя и идентификатор его РК.

Настройка сайта

На сайте издателя все площадки, участвующие в Header Bidding, должны использовать коды вставки с библиотекой loader.js.

1. Подключите к сайту синхронно скрипт header-bidding.js:

<script src="https://yastatic.net/pcode/adfox/header-bidding.js"></script>

Скрипт должен находится выше подключения библиотеки loader.js.

2. Создайте настройки для запросов ставок и добавьте их в тег script:

window.Ya.headerBidding.setSettings(Settings) - установка настроек.

Settings {
    biddersMap: BiddersMap;
    adUnits: AdUnit;
    timeout: Timeout;
}

biddersMap — объект с парами 'ключ': 'значение', где:
ключ — название покупателя (для Criteo ключ 'criteo', для Soloway ключ 'adriver');
значение — идентификатор рекламной кампании, выданный службой техподдержки.

adUnits — объект с информацией о том, среди каких покупателей разыгрывать объявления.

AdUnit [
    {
        code: string; // идентификатор элемента, который является контейнером для баннера (равен containerId в коде вставки ADFOX); 
        sizes: Sizes; // обязательный параметр для покупателя Soloway. Размеры баннера. Массив массивов, в котором 1-ое значение ширина, а 2-ое - высота. Например: sizes: [[ 728, 90 ]]
        bids: [
            {
                bidder: string; // имя покупателя
                params: any; // настройки для конкретного покупателя. Например, для Criteo - поле zoneid, для Soloway - siteid. Значения идентификаторов необходимо получить от покупателей.
            }
        ];
    }
]

timeout — время ожидания ответа от сервера покупателя, рекомендуемое время 500мс (максимально возможное 3000мс, но в таком случае скорость загрузки основного контента сайта будет производится с задержкой).

Пример кода

    <script src="https://yastatic.net/pcode/adfox/header-bidding.js"></script>
    <script>
    const adfoxBiddersMap = {
        'criteo': '710398',
        'adriver': '737037'
    };
    var adUnits = [
        {
            code: 'adfox_1',
            bids: [
                {
                    bidder: 'criteo',
                    params: {
                        zoneid: 917087,
                    }
                }
            ]
        },
        {
            code: 'adfox_2',
            sizes: [[ 728, 90 ]],
            bids: [
                {
                    bidder: 'criteo',
                    params: {
                        zoneid: 917087,
                    }
                },
                {
                    bidder: 'adriver',
                    params: {
                        siteid: 762890
                    }
                }
            ]

    }
    ];
    var userTimeout = 500;
    window.Ya.headerBidding.setSettings({
        biddersMap: adfoxBiddersMap,
        adUnits: adUnits,
        timeout: userTimeout
    });
</script>
<script src="https://yastatic.net/pcode/adfox/loader.js" crossorigin="anonymous"></script>
<div id="adfox_1"></div>
<script>
    window.Ya.adfoxCode.create({
        ownerId: 255196,
        containerId: 'adfox_1',
        params: {
            pp: 'g',
            ps: 'cnsf',
            p2: 'frnp'
        }
    });
</script>
<div id="adfox_2"></div>
<script>
    window.Ya.adfoxCode.create({
        ownerId: 255196,
        containerId: 'adfox_2',
        params: {
            pp: 'g',
            ps: 'cnsh',
            p2: 'frnq'
        }
    });
</script>

Инструмент для проверки ставок покупателей

В консоли браузера вызовите метод:

window.Ya.headerBidding.getBidsReceived();

Например:

В ответе будет массив, содержащий:
ставку:

Bid {
    cpm: number; // размер ставки (целый в рублях)
    displayUrl: string; // url с баннером
    params: any; // объект с различными дополнительными параметрами, разный для различных dsp
    adapterName: string; // имя покупателя
    containerId: string; // id контейнера
    campaignId: number; // id рекламной кампании 
}

или ошибку (например, если запрос не дошел или покупатель отказался от ставки):

BidError {
    errorCode: number; // номер ошибки
    adapterName: string; // имя покупателя
    containerId: string; // id контейнера
    campaignId: number; // id рекламной кампании
}