Настройка Яндекс.Вебвизора на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка Яндекс.Вебвизора на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка Яндекс.Вебвизора на 1С-Битрикс

Вебвизор не работает на HTTPS-сайте с неправильными заголовками CSP — запись сессий идёт через iframe Яндекса, и браузер блокирует его, если в Content-Security-Policy не разрешён frame-ancestors. Вторая частая причина: тег Метрики вставлен через Google Tag Manager, GTM грузится асинхронно, вебвизор инициализируется после того, как пользователь уже совершил первые действия — начало сессии теряется.

Правильное размещение тега Метрики

Яндекс требует размещать тег как можно выше в <head>. В Битриксе стандартный способ — вставка через событие OnBeforeProlog в init.php или напрямую в файл пролога /bitrix/templates/ШАБЛОН/header.php.

В /bitrix/php_interface/init.php:

AddEventHandler('main', 'OnBeforeProlog', function() {
    ob_start();
    ?>
    <!-- Яндекс.Метрика -->
    <script>
       (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
       var z = m[i],d=e.createElement(t),n=e.getElementsByTagName(t)[0];
       d.async=1;d.src=r;d.id='metrika-';
       n.parentNode.insertBefore(d,n);
       z(i,'init', { id: XXXXXXXX, webvisor: true, clickmap: true, trackLinks: true });
       })(window, document, 'script', 'https://cdn.jsdelivr.net/npm/yandex-metrika@latest/metrika.js', 'ym');
    </script>
    <!-- /Яндекс.Метрика -->
    <?php
    $html = ob_get_clean();
    $GLOBALS['APPLICATION']->AddHeadString($html, true);
});

Либо через стандартный компонент bitrix:metrika — он есть в модуле fileman, устанавливается из Маркетплейса.

Content-Security-Policy и iframe Вебвизора

Вебвизор записывает экран через <iframe> на домене webvisor.com. Если на сервере (nginx или через PHP-заголовки) выставлен жёсткий CSP, запись не начнётся — в консоли будет ошибка Refused to frame ... because an ancestor violates the following Content Security Policy directive.

Минимальный набор директив для работы Вебвизора:

Content-Security-Policy:
  frame-src 'self' https://webvisor.com;
  script-src 'self' 'unsafe-inline' https://mc.yandex.ru https://cdn.jsdelivr.net;
  img-src 'self' data: https://mc.yandex.ru;

В Битриксе заголовки можно установить в /bitrix/.htaccess или в init.php через header() — но только до первого вывода HTML. Если используете ob_start() в прологе, это не проблема.

Вебвизор и SPA/AJAX-страницы

Большинство современных шаблонов Битрикса используют AJAX-навигацию (BX.ajax, компонент bitrix:main.ajaxlinks). При переходе без перезагрузки страницы Вебвизор не фиксирует смену URL — в записи сессии весь визит выглядит как одна страница.

Решение: вызывать ym(XXXXXXXX, 'hit', window.location.href) после каждого AJAX-перехода. В Битриксе есть событие BX.addCustomEvent('onAjaxSuccess', ...) — вешаем на него:

BX.addCustomEvent('onAjaxSuccess', function(event) {
    if (typeof ym !== 'undefined') {
        ym(XXXXXXXX, 'hit', window.location.href);
    }
});

Без этого данные Вебвизора будут некорректными: все переходы по каталогу будут записаны как единственный визит на страницу входа.

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

После настройки — проверить в «Вебвизоре» раздел «Мониторинг». Если сессии записываются, но видео чёрное — проблема в смешанном контенте (HTTP-ресурсы на HTTPS-сайте). Если сессии не появляются вообще — смотреть Network-вкладку DevTools на запросы к mc.yandex.ru/watch/: статус 200 означает, что счётчик работает, но данные ещё не обработаны (задержка до 20 минут для новых сессий).