Налаштування омніканальної аналітики клієнтів 1С-Bitrix
Клієнт прийшов з Instagram, поклав товар у кошик з телефону, оплатив з ноутбука, а потім зателефонував у техпідтримку. Це чотири точки контакту в трьох каналах — і в стандартному звіті Bitrix вони будуть розкидані. Омніканальна аналітика пов'язує ці контакти в єдину історію клієнта. Завдання технічно нетривіальне: потрібно пов'язати кілька ідентифікаторів користувача з різних підсистем.
Ідентифікатори клієнта в Bitrix
Кожна підсистема використовує свій ключ:
| Підсистема | Ідентифікатор | Таблиця |
|---|---|---|
| Вебсайт (авторизований) | USER_ID |
b_user |
| Вебсайт (анонімний) | FUSER_ID |
b_sale_fuser |
| CRM | CONTACT_ID / LEAD_ID |
b_crm_contact |
| Телефонія | PHONE |
b_crm_contact_detail |
EMAIL |
b_user / b_crm_contact_detail |
Зв'язок між FUSER_ID та USER_ID встановлюється при вході: USER_ID з'являється в b_sale_fuser. CRM-контакт прив'язується до користувача сайту через поле UF_SITE_MEMBER_ID (якщо зв'язок налаштовано) або за збігом email.
Побудова єдиного профілю клієнта
Єдиний профіль — це зведена запис, що агрегує все точки контакту. Один з підходів — створити користувацьку таблицю bl_customer_profile з полями:
customer_uuid — згенерований UUID клієнта
user_id — ID з b_user (NULL для чистих анонімів)
fuser_ids — jsonb масив усіх FUSER_ID
crm_contact_id — ID контакту CRM
email — нормалізований email
phone — нормалізований телефон
first_seen — дата першого контакту
last_seen — дата останнього контакту
channels — jsonb набір каналів з датами
Об'єднання відбувається за правилом: якщо email або телефон збігається — це один клієнт. Злиття запускається агентом або триггером при кожному новому контакті.
Збір даних по каналах
Веб-сесії — события OnBeforeUserLogin та OnAfterUserAuthorize фіксують UTM-мітки з $_GET та зберігають джерело в користувацькі поля b_uts_user або в bl_customer_profile.
CRM-активності — модуль crm пише активності в b_crm_activity. При вхідному дзвінку, листі чи чаті створюється запис з OWNER_ID (контакт або лід) та TYPE_ID. Ви можете прив'язати активність до профілю клієнта через OWNER_ID → b_crm_contact → email/телефон.
Email-розсилки — якщо використовується модуль subscribe, відкриття та клік фіксуються в b_subscribe_log. Для зовнішніх ESP (SendPulse, UniSender) потрібен вебхук, який пише події в користувацьку таблицю bl_email_events.
Аналітичні запити
Після зшивки даних можна будувати звіти за шляхом клієнта. Приклад — кількість замовлень за першим джерелом залучення:
SELECT cp.first_channel, COUNT(DISTINCT o.ID) AS orders
FROM bl_customer_profile cp
JOIN b_sale_order o ON o.USER_ID = cp.user_id
WHERE o.CANCELED = 'N'
GROUP BY cp.first_channel
ORDER BY orders DESC;
Для оперативної аналітики результати агрегуються раз на годину агентом в таблицю bl_omni_stats.
Що ми налаштовуємо
- Таблицю
bl_customer_profileз механізмом злиття дублів за email/телефоном - Обробники подій авторизації для захоплення UTM-міток та каналу
- Агент синхронізації CRM-контактів з профілями сайту через API
\Bitrix\Crm\ContactTable - Дашборд в адміністративному розділі зі звітом по каналам та конверсією за джерелами







