Настройка пикселя Facebook на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка пикселя Facebook на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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

Настройка пикселя Facebook на 1С-Битрикс

Пиксель Facebook не работает «из коробки» на Битриксе — и дело не в сложности кода, а в том, что стандартный механизм подключения скриптов конфликтует с кешированием и событийной моделью. Базовый код пикселя вставляют в шапку через header.php или через настройки сайта, но без передачи событий это просто счётчик посещений, не более.

Где живёт базовый код и почему там проблемы

Шаблон сайта в Битриксе хранит header.php в /bitrix/templates/<имя_шаблона>/. Вставка скрипта напрямую в файл — рабочий вариант, но неудобный: при смене шаблона код теряется, а при использовании составных шаблонов (bitrix:page.polymorph) часть блоков кешируется и пиксель может не срабатывать на закешированных страницах.

Правильнее использовать компонент bitrix:main.include с установленным параметром AREA_FILE_SHOW = head, или подключать скрипт через обработчик события OnEpilog в файле /bitrix/php_interface/init.php:

AddEventHandler("main", "OnEpilog", function() {
    $pixelId = COption::GetOptionString("main", "fb_pixel_id", "");
    if ($pixelId) {
        echo '<script>/* FB Pixel code with id: ' . htmlspecialchars($pixelId) . ' */</script>';
    }
});

ID пикселя при этом хранится в таблице b_option (модуль main), через COption::SetOptionString.

Стандартные события и передача данных каталога

Для e-commerce важны три события: ViewContent, AddToCart, Purchase. Все они должны передавать параметры товара — content_ids, content_type, value, currency.

ViewContent — вызывается на странице детального просмотра товара. Компонент bitrix:catalog.element генерирует страницу, данные товара доступны в $arResult. Кастомизируете template.php компонента и добавляете JS-вызов fbq('track', 'ViewContent', {...}) с подстановкой $arResult["ID"] и $arResult["PRICES"].

AddToCart — проблемнее. Добавление в корзину в Битриксе идёт через AJAX-запрос к sale.basket.basket или напрямую через CSaleBasket::Add(). Событие пикселя нужно стрелять в колбэке JS после успешного ответа. В ядре Битрикса за добавление в корзину отвечает событие OnSaleBasketItemAdd — его можно использовать для серверной передачи через Conversions API, но это отдельная история.

Purchase — срабатывает на странице thank_you или в компоненте bitrix:sale.order.ajax после успешного оформления. В $arResult["ORDER_ID"] есть ID заказа, сумму берёте из CSaleOrder::GetByID().

Conversions API как дополнение к пикселю

Браузерный пиксель теряет данные из-за блокировщиков рекламы и iOS-ограничений. Facebook рекомендует дублировать события через серверный Conversions API. Запрос уходит с вашего сервера на graph.facebook.com/v18.0/<pixel_id>/events с токеном доступа.

В Битриксе это реализуется через CURLFile или стандартный \Bitrix\Main\Web\HttpClient. Вешаете обработчик на событие OnSaleOrderSaved и отправляете Purchase с хешированным email (sha256) и event_id для дедупликации с браузерным событием.

Модуль bitrix.main версии 22+ включает \Bitrix\Main\Web\HttpClient — используйте его, а не file_get_contents, чтобы не зависеть от конфигурации allow_url_fopen.

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

После настройки проверяйте через Facebook Pixel Helper (расширение Chrome) и через Events Manager в кабинете Facebook — вкладка «Тестирование событий». В тестовом режиме Conversions API видно реальный разбор payload с ошибками валидации.

Типичная проблема: событие дублируется дважды — браузерное и серверное приходят без event_id. Без дедупликации Facebook считает их двумя разными конверсиями. event_id должен быть одинаковым в JS-вызове fbq('track', 'Purchase', data, {eventID: 'order_123'}) и в серверном запросе.