Налаштування пікселя ВКонтакте на 1С-Bitrix
Піксель ВКонтакте технічно простіший за Facebook, але специфіка Bitrix створює ті ж проблеми з розміщенням коду та передачею подій. Сам піксель — це JavaScript-лічильник з ID вроду VK-RTRG-XXXXXXX-XXXXX, який потрібно не просто вставити на сайт, а правильно інтегрувати з подіями каталогу та оформленням замовлень.
Базова установка без втрат при кешуванні
Код пікселя ВК підключається через <head>. У Bitrix найбільш стійкий способ — через файл /bitrix/php_interface/init.php з обробником події OnEpilog. Це гарантує вивід коду до закриття </head> незалежно від кеширування компонентів:
AddEventHandler("main", "OnEpilog", function() {
$vkPixelId = COption::GetOptionString("main", "vk_pixel_id", "");
if (!$vkPixelId) return;
?>
<script type="text/javascript">
!function(){var t=document.createElement("script");...}();
VK.Retargeting.Init("<?= htmlspecialchars($vkPixelId) ?>");
VK.Retargeting.Hit();
</script>
<?php
});
ID пікселя зберігайте у b_option через COption::SetOptionString("main", "vk_pixel_id", "VK-RTRG-..."). Не жорстко кодуйте в шаблоні — при переносі на інший домен доведеться шукати по всіх файлах.
Події для динамічного ретаргетингу
ВКонтакте підтримує динамічний ретаргетинг для інтернет-магазинів. Для його роботи потрібен фід товарів та події з прив'язкою до ID товарів із цього фіду.
Ключові події: ViewProduct, AddToCart, InitiateCheckout, Purchase. Кожна подія приймає об'єкт з параметрами:
VK.Retargeting.ProductEvent(pixelId, 'view_product', {
products: [{ id: '123', price: 1490 }],
currency: 'RUB'
});
view_product вішається в template.php компонента bitrix:catalog.element. Дані товара беріть з $arResult — ID з $arResult["ID"], ціну з $arResult["PRICES"]["BASE"]["PRICE"]. Урахуйте, що при включеному кешуванні компонента PHP-частина не пересчитується, але JS-код все рівно виконується браузером, тому подія спрацює коректно.
add_to_cart — проблема та ж, що й з Facebook: додавання в кошик асинхронне. У стандартному bitrix:catalog.element.buy.ajax після успішної відповіді є колбек BX.addCustomEvent('onBasketChange', ...). Перехопіть його та викличте VK-подію. Альтернативно — у bitrix:sale.basket.basket при відкритті кошика перевіряйте зміну кількості.
purchase — у компоненті bitrix:sale.order.ajax після завершення замовлення доступний JS-об'єкт з даними. Вішаєте подію на успішний колбек оформлення. Суму замовлення отримуйте з BX.Sale.OrderAjax або з серверної змінної, яку компонент прокидає в шаблон через $APPLICATION->SetAdditionalCSS.
Налаштування фіду для динамічного ретаргетингу
Без фіду динамічний ретаргетинг не працює. ВКонтакте приймає фід у форматі YML (Яндекс.Маркет) або Google Shopping. У Bitrix модуль catalog умеет генерувати YML-фід через компонент bitrix:catalog.export.yandex.market або через адміністративний розділ «Експорт товарів» (/bitrix/admin/cat_export.php).
Фід генерується за розкладом через агенти — таблиця b_agent. Для VK потрібен окремий експортний профіль, оскільки вимоги до структури можуть відрізнятися від Яндекс.Маркета. Створіть його через CCatalogExport, налаштуйте шаблон фіду під специфікацію ВКонтакте.
Перевірка подій
У ВКонтакте немає аналога Facebook Pixel Helper. Перевіряйте через «Аудиторії» → «Пікселі» у рекламному кабінету — там видна активність за останні 24 години та статус коду. Для отладки подій використовуйте console.log у JS перед викликом VK.Retargeting.ProductEvent та перевіряйте сітьові запити у DevTools — ищіть запити до vk.com/rtrg.
Частої помилка: піксель інціалізується, але Hit() не викликається на SPA-сторінках або після AJAX-навігації. Якщо сайт використовує bitrix:main.page.switcher, потрібно перевикликувати VK.Retargeting.Hit() при зміні сторінки.







