Разработка модуля персонализации контента 1С-Битрикс

Представьте интернет-магазин на [1С-Битрикс](https://ru.wikipedia.org/wiki/1С-Битрикс) с 50 000 товаров. Новый посетитель видит тот же лендинг, что и оптовый клиент. Конверсия падает, а персонализация отсутствует. Это типичная ситуация для многих проектов: статичные блоки контента не учитывают интер
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка модуля персонализации контента 1С-Битрикс
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995
  • 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
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1134

Представьте интернет-магазин на 1С-Битрикс с 50 000 товаров. Новый посетитель видит тот же лендинг, что и оптовый клиент. Конверсия падает, а персонализация отсутствует. Это типичная ситуация для многих проектов: статичные блоки контента не учитывают интересы разных сегментов. Мы разрабатываем модуль персонализации контента, который решает эту проблему. Команда с 7+ годами опыта в разработке на 1С-Битрикс и более 50 выполненными проектами.

Персонализированные блоки дают CTR на 35–50% выше, чем статичные, а конверсия в сегментированных группах растёт в 1,5–2 раза. Модуль легко интегрируется с существующим торговым каталогом и CRM. По нашим данным, внедрение персонализации повышает LTV на 20% и сокращает путь к покупке на 30%.

Почему стандартных инструментов Битрикс недостаточно для персонализации контента?

Группы пользователей с ограничением доступа не дают гибкой персонализации. Нельзя показать разный контент новому посетителю и клиенту с заказами. Как отмечает документация 1С-Битрикс, группы пользователей не предназначены для гибкой персонализации. Для этого нужны сегменты с динамическими условиями, поведенческие профили и агенты пересчёта. Наш модуль vendor.personalize добавляет эту функциональность без изменения ядра.

Как модуль персонализации контента улучшает конверсию?

Модуль строит модель данных, включающую следующие сущности:

  • b_vendor_ps_rule — правила персонализации: id, name, priority, conditions (JSON), action (JSON), is_active, created_at
  • b_vendor_ps_segment — сегменты аудитории: id, name, conditions (JSON), is_active
  • b_vendor_ps_user_segment — принадлежность пользователей к сегментам: user_id, segment_id, assigned_at
  • b_vendor_ps_impression — показы персонализированного контента: id, rule_id, user_id, session_id, element_id, created_at
  • b_vendor_ps_profile — профиль поведения: user_id или session_id, data (JSON: просмотренные разделы, категории, источник, RFM-метрики)

Сегментация и оценка условий — разработка модуля персонализации

Сегменты определяются набором условий. Пример условий для сегмента «тёплые пользователи» — бывали 3+ раз за последние 7 дней, пришли из поиска, ещё не купили:

{ "logic": "AND", "rules": [ {"type": "visit_count", "operator": ">=", "value": 3}, {"type": "has_orders", "operator": "=", "value": false}, {"type": "last_visit_days", "operator": "<=", "value": 7}, {"type": "traffic_source", "operator": "=", "value": "google"} ] } 

Оценка условий выполняется классом SegmentEvaluator:

class SegmentEvaluator { public function evaluate(array $conditions, PersonalityProfile $profile): bool { $logic = $conditions['logic'] ?? 'AND'; $results = []; foreach ($conditions['rules'] as $rule) { $results[] = $this->evaluateRule($rule, $profile); } return $logic === 'AND' ? !in_array(false, $results) : in_array(true, $results); } private function evaluateRule(array $rule, PersonalityProfile $profile): bool { return match ($rule['type']) { 'visit_count' => $this->compare($profile->getVisitCount(), $rule['operator'], $rule['value']), 'has_orders' => $profile->hasOrders() === (bool)$rule['value'], 'last_visit_days' => $this->compare($profile->getDaysSinceLastVisit(), $rule['operator'], $rule['value']), 'traffic_source' => $profile->getTrafficSource() === $rule['value'], 'city_id' => in_array($profile->getCityId(), (array)$rule['value']), default => true, }; } } 

Поведенческий профиль

При каждом визите обновляется профиль сессии/пользователя. Более 100 000 профилей обрабатываются за ночь.

// Инициализируется в init.php через событие OnProlog PersonalityProfileCollector::collect([ 'page' => $_SERVER['REQUEST_URI'], 'referrer' => $_SERVER['HTTP_REFERER'] ?? null, 'utm_source' => $_GET['utm_source'] ?? null, 'iblock_section' => $APPLICATION->GetCurDir(), // текущий раздел ]); 

Профиль хранится в b_vendor_ps_profile как JSON и содержит: счётчик визитов, просмотренные категории, дату первого и последнего визита, источник первого визита, флаг наличия заказов.

Персонализированные блоки

Компонент vendor:personalize.block — замена статичного блока контента:

// В шаблоне страницы: $APPLICATION->IncludeComponent('vendor:personalize.block', '', [ 'ELEMENT_ID' => 'hero_cta', // идентификатор блока на странице ]); 

Компонент находит активное правило персонализации для текущего пользователя и рендерит соответствующий контент. Действия правила могут быть:

  • show_text — показать текст/HTML
  • show_iblock_element — показать конкретный элемент инфоблока
  • show_banner — показать баннер из b_vendor_ps_banner
  • redirect — перенаправить на URL

Пересчёт сегментов

Принадлежность к сегменту не определяется на каждый запрос — это дорого. Агент пересчитывает сегменты ночью:

// Для каждого активного сегмента — пересчёт из b_vendor_ps_profile // Результат — INSERT/DELETE в b_vendor_ps_user_segment SegmentCalculator::recalculate(); 

Для новых сессионных пользователей (не авторизованных) — оценка в реальном времени по данным сессии. Пересчёт занимает 2 минуты для 5000 пользователей.

Аналитика

  • CTR персонализированных блоков vs стандартных (сравнение с контрольной группой)
  • Распределение пользователей по сегментам
  • Конверсия по сегментам в заказы

Сравнение: стандартные группы vs модуль персонализации

Критерий Стандартные группы доступа Модуль персонализации
Условия показа Только статические права Динамические сегменты
Поведенческие данные Не используются Полный профиль
Гибкость Низкая Высокая (JSON-правила)
Влияние на конверсию Нет +35-50% CTR
Администрирование Встроенное Свой интерфейс

Что входит в работу

Подробности документации - Описание модели данных - API-спецификация - Логика сегментации
  • Исходный код модуля с миграциями
  • Инструкция по установке и настройке агентов
  • Обучение администраторов работе с правилами и сегментами
  • Гарантия 6 месяцев на код модуля

Как настроить модуль за 5 шагов

  1. Установите модуль vendor.personalize через Marketplace или ручную загрузку.
  2. Запустите миграции для создания ORM-таблиц.
  3. Настройте агент сбора профилей в настройках модуля.
  4. Создайте сегменты и правила через административный интерфейс.
  5. Разместите компонент vendor:personalize.block в нужных шаблонах.

Сроки разработки

Этап Срок
ORM-таблицы, модель сегментов и правил 1 день
Поведенческий профиль, сбор данных 2 дня
Оценка условий сегментации 2 дня
Агент пересчёта сегментов 1 день
Компонент персонализированных блоков 2 дня
Аналитика и административный интерфейс 2 дня
Тестирование 1 день

Итого: 11 рабочих дней. Интеграция с ML-моделями рекомендаций (collaborative filtering) — отдельный проект.

Оцените эффективность персонализации для вашего магазина — получите предварительную оценку. Свяжитесь с нами для консультации. Закажите разработку модуля персонализации под ваши задачи.