Дополнительные возможности скрипта

Callback-функция onBidsReceived

В методе YaHeaderBiddingSettings доступна callback-функция onBidsReceived, которая вызывается в момент окончания опроса всех монетизаторов и получения от них ставок.

В качестве аргумента передаются ставки, полученные с последнего запроса к монетизаторам в формате: массив с объектом Bids.

Новый запрос к монетизаторам и его завершение вызовет эту callback-функцию повторно.

Пример добавления onBidsReceived
window.YaHeaderBiddingSettings = {
  biddersMap: adfoxBiddersMap,
  adUnits: adUnits,
  timeout: userTimeout,
  callbacks: {
    onBidsReceived: (bids) => {
      console.log('---> PUBLIC CALLBACK onBidsReceived: ', bids);
    }
  }
};

Решение для сайтов с «бесконечной» прокруткой

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

Чтобы описать новый набор монетизаторов для новых рекламных мест, добавленных по мере загрузки контента, используйте метод window.Ya.headerBidding.pushAdUnits(AdUnit[]). Вместо AdUnit[] нужно указать массив объектов с информацией, к каким монетизаторам делать запрос ставок для новых добавленных рекламных мест.

  1. Перед вызовом метода для нового рекламного места добавьте инициализацию новых очередей. Для этого в элементе head замените код загрузчика context.js:

    Старый код

    Новый код

    <script>
    window.yaContextCb = window.yaContextCb || []
    </script>
    <script src="https://yandex.ru/ads/system/context.js" async>
    </script>
    

    <script>
    window.Ya || (window.Ya = {});
    window.yaContextCb = window.yaContextCb || [];
    window.Ya.adfoxCode || (window.Ya.adfoxCode = {});
    window.Ya.adfoxCode.hbCallbacks || (window.Ya.adfoxCode.hbCallbacks = []);
    </script>
    <script src="https://yandex.ru/ads/system/context.js" async>
    </script>
    
  2. Добавьте метод pushAdUnits в код блока. Обратите внимание, что:

    • для нового баннерного места метод pushAdUnits необходимо вызывать до adfoxCode.create;
    • в описании объектов containerId элементов должен отличаться от ранее сохраненных в конфигурационном скрипте, при этом сам конфигурационный скрипт в head страницы изменять не нужно.
Пример итогового кода для рекламного места
<div id="adfox_15218"></div>
<script>window.Ya.adfoxCode.hbCallbacks.push(function() {
    window.Ya.headerBidding.pushAdUnits([
        {
          code: 'adfox_15218',
          sizes: [[728, 90]],
          bids: [
            { bidder: 'adriver', params: { placementId: 'adfox_test' } }
          ]
        }
    ]);
    window.yaContextCb.push(function() {
        window.Ya.adfoxCode.create(
            {
               ownerId: 168627,
               containerId: 'adfox_15218',
               params: { p1: 'bzzvh', p2: 'fvxb' }
          }
        );
    });
});
</script>

Подключение дополнительных таргетингов через Adfox HB

Если в аккаунте монетизатора, работающего через Adfox HB, настроены дополнительные таргетинги, добавьте в код вставки параметры puidN (где N — номер характеристики от 1 до 63) вместе со значениями таргетирования. Параметры puid добавляются в объект params в формате name: value, где:

  • name — название параметра (puidN);
  • value — значение параметра.
Пример конфигурационного скрипта с монетизатором, работающим через Adfox HB, и добавленными параметрами puid
window.YaHeaderBiddingSettings = {
  biddersMap: { 'adfox_example': '957356' },
  adUnits: [{
    code: 'adfox_154875622348837699',
    bids: [{
      bidder: 'adfox_example',
      params: {
        pp: 'g',
        ps: 'cqmv',
        p2: 'fqnq',
        puid1: 'woman',
        puid2: '16:17:18:19',
        puid3: 'green'
      }
    }]
  }],
  timeout: 500
};

Проверка ставок монетизаторов

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

  • при загрузке страницы — отправляются запросы ко всем монетизаторам, указанным в конфигурационном скрипте;
  • при перезагрузке рекламного места — с помощью reload() происходит повторный опрос монетизаторов, которые относятся только к перезагружаемому объявлению;
  • при вызове метода pushAdUnits() — отправляется запрос только по указанным в нем монетизаторам.

Чтобы получить ставки с последнего опроса монетизаторов, воспользуйтесь рекламной консолью или используйте метод getLastBidsReceived в консоли браузера:

window.Ya.headerBidding.getLastBidsReceived();

В ответе приходит массив, заполненный объектами Bid для каждой пары «рекламное место + монетизатор». Объект может содержать только одно из полей:

  • banner — при ответе от монетизатора обычным баннером;
  • native — при ответе от монетизатора нативным баннером;
  • error — при ошибке.
Пример вызова метода в консоли браузера

interface Bid {
    adapterName: string; // имя монетизатора
    containerId: string; // идентификатор контейнера
    campaignId: number; // идентификатор рекламной кампании в Adfox
    requestDuration: number; // длительность запроса
    cost?: {
        currency: string; // валюта "RUB"/"USD"
        cpm: number; // ставка, которая пришла с сервера за 1000 показов
    },
    banner?: {
        src: string; // содержимое баннера
    },
    size?: {
        width: number; // ширина в px
        height: number; // высота в px
    },
    error?: {
        code: number; // код ошибки
        message: string; // имя ошибки
    },
    native?: {
        nativePayload: any; // объект с содержимым для нативного показа
    }
};

Коды ошибок:

Код ошибки Значение
0 Неизвестная ошибка.
1 Отсутствие ставки или ответа.
2 Некорректный ответ.
3 Таймаут.
4 Ошибка HTTP-протокола.
5 Некорректные пользовательские данные в конфигурационном скрипте.
6 Некорректные настройки монетизатора.
7 Монетизатор прислал ID контейнера, отличный от ID в запросе.
8 Монетизатор прислал корректный ответ без статуса.
9 В ответе монетизатора отсутствует codeType или он некорректный.

Со страницы, на которой вы разместили код, можно вызывать cookie-sync пиксели параллельно с запросом. Ссылку на пиксель предоставляет монетизатор.

Чтобы вызвать cookie-sync пиксель:

  1. Объявите переменную и пропишите ссылку на пиксель. Если ссылок несколько, добавьте в массив pixels в виде строки через запятую.

    var syncPixels = [{
        bidder: 'sape',
        pixels: ['https://ssp-rtb.sape.ru/rmatch/.....']
      }]
    
  2. В секцию YaHeaderBiddingSettings добавьте вызов пикселей:

    syncPixels: syncPixels
    
Пример конфигурационного скрипта с cookie-sync пикселем для монетизатора Sape
<script>
  var adfoxBiddersMap = {
    'sape': '1648783'
  };

  var adUnits = [
    {
      code: 'adfox_container_id',
      bids: [
        {
          bidder: 'sape',
          params: {
            placementId: '634996'
          }
        }
      ]
    }
  ];

  var userTimeout = 500;

  var syncPixels = [
    {
      bidder: 'sape',
      pixels: [
        'https://ssp-rtb.sape.ru/rmatch/1',
        'https://ssp-rtb.sape.ru/rmatch/2'
      ]
    }
  ];

  window.YaHeaderBiddingSettings = {
    biddersMap: adfoxBiddersMap,
    adUnits: adUnits,
    timeout: userTimeout,
    syncPixels: syncPixels
  };
</script>ru

Если в коде вставки Adfox настроен показ полноэкранного баннера и монетизатор хочет отрисовать подложку на баннере самостоятельно, он может вернуть в ответе disableFullscreen: true. Этот параметр отключит отрисовку подложки на стороне кода Adfox, и на баннере отобразится собственная подложка монетизатора.

Обратиться в службу поддержки

Написать в чат

Написать письмо