Налаштування Яндекс.Директ конверсій на 1С-Bitrix
Передача конверсій у Яндекс.Директ — це зв'язка двох інструментів: Яндекс.Метрики (яка реєструє цілі) та самого Директу (який використовує ці цілі для оптимізації ставок). Без коректно налаштованих цілей автоматичні стратегії Директу працюють сліпо, а звіти по конверсіям показують нулі.
Лічильник Метрики та цілі: що повинно бути до налаштування Директу
Конверсії Директу спираються на цілі Метрики, тому спочатку — лічильник. У Bitrix лічильник Метрики додається кількома способами: через модуль bitrix:main.counter у шаблоні, через прямої вставки у header.php або через OnEpilog.
Для коректної роботи цілей критично: лічильник повинен завантажуватися перед спрацьовуванням цільових подій. Використовуйте синхронну інціалізацію через ym(counterId, 'init', {...}) з параметром defer: false для сторінок із формами.
У таблиці b_option зручно зберігати ID лічильника: COption::SetOptionString("main", "ya_metrika_id", "XXXXXXXX"). Тоді при зміні лічильника не потрібно лізти в шаблон.
Цілі у Метриці для e-commerce:
-
JavaScript-ціль
order_success— на сторінці спасибо після оформлення замовлення -
JavaScript-ціль
add_to_cart— при додаванні товара в кошик - Складна ціль з кроками: перегляд каталогу → картка товара → кошик → оформлення
Передача досягнення цілі з Bitrix
Ціль order_success — найважливіша для Директу. Виклик:
ym(COUNTER_ID, 'reachGoal', 'order_success', {
order_price: 4900,
currency: 'RUB'
});
У Bitrix сторінка «Спасибо» — це або окрема сторінка /personal/order/success/, або фінальний крок компонента bitrix:sale.order.ajax. У обох випадках потрібно переконатися, що JS-виклик не задваюється — при перезагрузці сторінки ціль не повинна фіксуватися повторно.
Надійний спосіб: у компоненті bitrix:sale.order.ajax у template.php знайдіть блок з умовою успішного створення замовлення ($arResult["NEED_PAY"] || $arResult["ORDER_ID"]) та додайте виклик Метрики тільки там. Параметри замовлення (order_price) беріть з $arResult["ORDER"]["PRICE"].
Для сторінки /personal/order/success/ — компонент bitrix:sale.order.detail дає доступ до деталей замовлення через $arResult. ID замовлення з URL-параметра + CSaleOrder::GetByID($orderId).
Офлайн-конверсії через API Метрики
Якщо частина замовлень обробляється менеджерами (звонки, заявки без оплати онлайн), стандартного JS-пікселю недостатньо. Яндекс.Метрика підтримує завантаження офлайн-конверсій через API.
У Bitrix це реалізується через обробник події OnSaleOrderStatusUpdate. Коли менеджер переводить замовлення в статус «Виконано», відправте POST-запит на https://api-metrika.yandex.net/management/v1/counter/{counterId}/uploads/client_id:
AddEventHandler("sale", "OnSaleOrderStatusUpdate", function($id, $arFields) {
if ($arFields["STATUS_ID"] === "F") { // Finished
// Отримуємо client_id з b_sale_order_props або користувача
$httpClient = new \Bitrix\Main\Web\HttpClient();
$httpClient->post($apiUrl, $csvData);
}
});
client_id Метрики потрібно зберігати при оформленні замовлення — це значення з куки _ym_uid або з JavaScript-методу ym(id, 'getClientID', callback). Зберігайте його у властивість замовлення (b_sale_order_props_value) при створенні.
Зв'язка з Директом: автоматичні стратегії
Після того як цілі працюють та конверсії фіксуються, у Директі переключаєте стратегію на «Оптимізацію конверсій» з метою order_success. Директу потрібно мінімум 10 конверсій за 28 днів для навчання — це важливо врахувати при запуску.
Модуль sale Bitrix при типовому навантаженні не створює затримок для викликів Метрики, але якщо на сайті агресивне кеширування через BXCache з TTL > 3600, перевіртье, що сторінка спасибо не кешується — компонент bitrix:sale.order.ajax має CACHE_TYPE = 'N' за замовчуванням, але кастомні шаблони можуть це ломати.







