Інтеграція 1С-Бітрікс з Flocktory
Flocktory — платформа для роботи з постпокупочним трафіком й вірусним маркетингом. Її основні механіки: показ поп-апа з пропозицією партнера одразу після завершення замовлення ("Я хочу!"), реферальні програми й механіки обміну контактами. Інтеграція з Бітриксом технічно несложна й будується на двох компонентах: передача даних про замовлення через JavaScript-об'єкт на сторінці підтвердження й підключення трекера на всіх сторінках.
Підключення трекера Flocktory
Трекер підключається один раз у всіх сторінках сайту. У шаблоні Бітрикса — у footer.php або через addExternalJs:
<!-- Flocktory трекер -->
<div class="i-flocktory" data-fl-action="track" data-fl-site-id="YOUR_SITE_ID"></div>
<script type="text/javascript">
(function(w,d,n,s,t) {
w[n] = w[n] || [];
w[n].push(function() { t = d.createElement(s);
t.type = 'text/javascript'; t.async = true;
t.src = '//api.flocktory.com/v2/loader.js?site_id=<?= FLOCKTORY_SITE_ID ?>';
var sn = d.getElementsByTagName(s)[0];
sn.parentNode.insertBefore(t, sn);
});
w.addEventListener('load', w[n][0]);
})(window, document, '_flocktory_callbacks', 'script');
</script>
FLOCKTORY_SITE_ID — числовий ідентифікатор із особистого кабінету Flocktory. Рекомендується винести його в константу через define у bitrix/php_interface/dbconn.php або в модуль налаштувань.
Передача даних після оформлення замовлення
Ключова точка інтеграції — сторінка "Дякуємо за замовлення". Flocktory показує постпокупочний поп-ап тільки якщо отримує коректні дані про замовлення. На сторінці успішного оформлення вставляємо блок з даними:
// У шаблоні сторінки підтвердження замовлення
// Дані беремо з компонента sale.order.checkout або безпосередньо з ORDER_ID
$orderId = (int)$_GET['ORDER_ID'];
$order = \Bitrix\Sale\Order::load($orderId);
if ($order && $order->getUserId() === $USER->GetID()) {
$user = CUser::GetByID($order->getUserId())->Fetch();
$items = [];
foreach ($order->getBasket()->getOrderableItems() as $item) {
$items[] = [
'id' => (string)$item->getProductId(),
'title' => $item->getField('NAME'),
'price' => (float)$item->getPrice(),
'count' => (float)$item->getQuantity(),
];
}
$flData = [
'order' => [
'id' => (string)$orderId,
'price' => (float)$order->getPrice(),
'currency' => $order->getCurrency(),
],
'customer' => [
'name' => trim($user['NAME'] . ' ' . $user['LAST_NAME']),
'email' => $user['EMAIL'],
],
'items' => $items,
];
?>
<div class="i-flocktory"
data-fl-action="purchase"
data-fl-site-id="<?= FLOCKTORY_SITE_ID ?>"
data-fl-user-name="<?= htmlspecialchars($flData['customer']['name']) ?>"
data-fl-user-email="<?= htmlspecialchars($flData['customer']['email']) ?>"
data-fl-transaction-id="<?= $flData['order']['id'] ?>"
data-fl-total-price="<?= $flData['order']['price'] ?>"
data-fl-items='<?= json_encode($flData['items'], JSON_UNESCAPED_UNICODE) ?>'>
</div>
<?php
}
?>
Атрибут data-fl-items повинен містити валідний JSON. Flocktory використовує ці дані для таргетування постпокупочної пропозиції: наприклад, якщо клієнт купив товар з категорії "Електроніка", партнер може показати пропозицію на гарантію або аксесуари.
Дані авторизованого користувача на всіх сторінках
Для персоналізації Flocktory повинен знати email авторизованого користувача на будь-якій сторінці:
// У footer.php, після підключення основного трекера
if ($USER->IsAuthorized()) {
$currentUser = CUser::GetByID($USER->GetID())->Fetch();
?>
<div class="i-flocktory"
data-fl-action="push-user"
data-fl-site-id="<?= FLOCKTORY_SITE_ID ?>"
data-fl-user-email="<?= htmlspecialchars($currentUser['EMAIL']) ?>"
data-fl-user-name="<?= htmlspecialchars($currentUser['NAME']) ?>">
</div>
<?php
}
?>
Реферальна програма (Shaker)
Flocktory Shaker — механіка вірусності: після покупки клієнту пропонують поділитися посиланням, друзі отримують скидку, реферер — бонус. Налаштування на стороні Flocktory (у особистому кабінеті). Зі сторони Бітрикса потрібно:
- При переході по реферальному посиланню — фіксувати UTM-мітку
utm_source=flocktory - Передавати промокод Flocktory в Бітрікс-механізм скидок
Промокод зі посилання (?flocktory_code=XXX) застосовується через стандартний механізм Бітрикса або через користувацький обробник кошика.
Інтеграція через события Бітрикса (альтернативний підхід)
Замість HTML-блоків можна передавати дані через JavaScript-об'єкт після отримання підтвердження від сервера. Обробник события OnSaleOrderSaved зберігає дані в сесію, яка потім зчитується на сторінці "Дякуємо":
AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
$isNew = $event->getParameter('IS_NEW');
if (!$isNew) return;
$_SESSION['FLOCKTORY_ORDER'] = [
'id' => $order->getId(),
'price' => $order->getPrice(),
];
});
Тестування інтеграції
Flocktory надає режим відладки: додайте ?flocktory_debug=1 до URL сторінки. У консолі браузера з'являться сповіщення про успішну передачу даних або помилки маппінгу. Основні причини нерабочої інтеграції — некоректний email (пустий, невалідний), неправильний формат data-fl-items (не валідний JSON), невірний site_id.
Терміни реалізації
| Обсяг | Склад | Термін |
|---|---|---|
| Базова (трекер + постпокупочний поп-ап) | Блок даних на сторінці замовлення + трекер | 0.5–1 день |
| З push-user на всіх сторінках | + авторизація на кожній сторінці | +0.5 дня |
| Реферальна програма (промокоди) | + обробка реферальних посилань + скидки | 2–3 дні |







