Вы теряете до 30% выручки, если в вашем интернет-магазине на 1С-Битрикс нет персонализированных рекомендаций. Покупатель приходит за конкретным товаром, но не видит сопутствующих позиций, не получает предложений на основе своих интересов — и уходит к конкурентам. Мы решаем эту задачу, внедряя системы рекомендаций, которые увеличивают средний чек на 15–25% и конверсию в покупку. Опыт 10+ лет, сертифицированные специалисты, гарантия результата.
Почему персонализация так эффективна?
Персонализированные рекомендации работают потому, что снижают когнитивную нагрузку на покупателя. Вместо того чтобы перебирать сотни товаров, он видит только релевантные варианты. Алгоритмы анализируют поведение пользователя — просмотры, добавления в корзину, покупки — и подбирают то, что с высокой вероятностью заинтересует именно его. Сравните: по данным нашей практики, collaborative filtering даёт CTR на 30% выше, чем content-based, при наличии 1000+ действий на товар. Исследование McKinsey показывает, что персонализация повышает выручку на 10-30%.
Как алгоритмы рекомендаций повышают конверсию?
Выбор алгоритма определяет точность рекомендаций. Рассмотрим основные подходы.
Content-based filtering — рекомендуем товары, похожие на просмотренный по характеристикам: категория, цена, теги. Работает без истории, подходит для новых пользователей.
function getContentBasedRecommendations(int $productId, int $limit = 10): array {
$product = \CIBlockElement::GetByID($productId)->GetNext();
$iblockId = $product['IBLOCK_ID'];
$price = \CPrice::GetBasePrice($productId)['PRICE'];
$sectionId = $product['IBLOCK_SECTION_ID'];
// Товары из той же категории в ценовом диапазоне ±30%
$result = \CIBlockElement::GetList(
['RAND' => 'ASC'],
[
'IBLOCK_ID' => $iblockId,
'IBLOCK_SECTION_ID' => $sectionId,
'!ID' => $productId,
'>=CATALOG_PRICE_1' => $price * 0.7,
'<=CATALOG_PRICE_1' => $price * 1.3,
'ACTIVE' => 'Y',
],
false,
['nPageSize' => $limit],
['ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE']
);
$items = [];
while ($item = $result->GetNext()) {
$items[] = $item;
}
return $items;
}
Алгоритм прост в реализации и работает моментально, но не учитывает вкусы конкретного пользователя.
Collaborative filtering — «пользователи, которые смотрели этот товар, также смотрели...» Требует накопленной истории просмотров и покупок, но даёт более персонализированные рекомендации. Собираем данные из:
-
b_sale_basketиb_sale_order— реальные покупки. - Кастомная таблица
custom_product_views— просмотры карточек. -
b_sale_fuser— гостевые пользователи.
Производительность коллаборативной фильтрации на 30% выше content-based по CTR при наличии 1000+ действий на товар.
Матричная факторизация (ALS/SVD) — продвинутый алгоритм, требует библиотек (Python: implicit, surprise). Выносим расчёт рекомендаций в отдельный микросервис на Python, результаты сохраняем в Redis/PostgreSQL, Битрикс только читает. Такой подход даёт прирост CTR до 12% на крупных каталогах.
Сбор поведенческих данных
// Трекинг просмотра товара
// Вызывается в шаблоне компонента catalog.element
$userId = $USER->GetID() ?: 0;
$fuserId = (int)\Bitrix\Sale\Fuser::getId();
$db->query("
INSERT INTO custom_product_views (product_id, user_id, fuser_id, viewed_at)
VALUES (?, ?, ?, NOW())
ON DUPLICATE KEY UPDATE view_count = view_count + 1, viewed_at = NOW()
", [$productId, $userId, $fuserId]);
CREATE TABLE custom_product_views (
id SERIAL PRIMARY KEY,
product_id INT NOT NULL,
user_id INT DEFAULT 0,
fuser_id INT NOT NULL,
view_count INT DEFAULT 1,
viewed_at DATETIME,
UNIQUE KEY uk_product_fuser (product_id, fuser_id),
INDEX idx_fuser (fuser_id),
INDEX idx_product (product_id)
);
Расчёт «пользователи также смотрели»
-- Товары, которые чаще всего смотрят вместе с товаром $productId
SELECT
v2.product_id,
COUNT(DISTINCT v2.fuser_id) AS co_views
FROM custom_product_views v1
JOIN custom_product_views v2
ON v1.fuser_id = v2.fuser_id
AND v2.product_id != v1.product_id
AND v2.viewed_at BETWEEN DATE_SUB(v1.viewed_at, INTERVAL 1 HOUR)
AND DATE_ADD(v1.viewed_at, INTERVAL 1 HOUR)
WHERE v1.product_id = :productId
GROUP BY v2.product_id
ORDER BY co_views DESC
LIMIT 20;
Результаты кешируются в Redis на 6–24 часа. Пересчитываются агентом Битрикс ночью по всем популярным товарам.
Персонализация для авторизованного пользователя
Для авторизованных пользователей смотрим историю просмотров за последние 30 дней:
function getPersonalizedRecommendations(int $userId, int $limit = 12): array {
// Последние просмотренные категории пользователя
$recentCategories = getRecentUserCategories($userId, 5);
// Товары из этих категорий, которые он ещё не смотрел
return \CIBlockElement::GetList(
['CATALOG_PRICE_1' => 'ASC'],
[
'IBLOCK_ID' => CATALOG_IBLOCK_ID,
'IBLOCK_SECTION_ID' => $recentCategories,
'!ID' => getViewedProductIds($userId),
'ACTIVE' => 'Y',
],
false,
['nPageSize' => $limit],
['ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE']
);
}
Административное управление рекомендациями
Система позволяет:
- Просматривать статистику кликов по рекомендациям (CTR каждого алгоритма).
- Добавлять ручные рекомендации (пинкоды) для отдельных товаров.
- Исключать товары из рекомендаций (распроданные, сезонные).
- A/B тестировать алгоритмы: половина пользователей видит content-based, половина — collaborative.
Сравнение подходов по времени и эффекту
| Алгоритм | Время реализации | Охват данных | CTR (в среднем) |
|---|---|---|---|
| Content-based | 2–3 дня | Нет истории | 3–5% |
| Collaborative (SQL) | 3–5 дней | 1000+ действий | 6–9% |
| SVD-микросервис | 5–7 дней | 10000+ действий | 8–12% |
Сроки
| Компонент | Срок |
|---|---|
| Сбор данных о просмотрах и покупках | 2–3 дня |
| Content-based рекомендации | 2–3 дня |
| Collaborative filtering (SQL-подход) | 3–5 дней |
| Кеширование + агент пересчёта | 1–2 дня |
| Персонализация для авторизованных | 2–3 дня |
| Административная панель + A/B тест | 3–4 дня |
| Тестирование | 2–3 дня |
Итого: 2.5–3.5 недели для полной системы. Content-based рекомендации без персонализации — 1 неделя.
Что входит в работу
- Документация по API рекомендаций и схеме данных.
- Доступ к админ-панели управления рекомендациями.
- Обучение сотрудников (администрирование, A/B тесты).
- Поддержка 2 месяца после запуска (исправление ошибок, донастройка).
Как мы внедряем систему: пошаговый план
- Анализ данных — оцениваем объём каталога, историю просмотров и покупок, определяем целевые страницы для размещения рекомендаций.
- Выбор алгоритма — на основе анализа выбираем content-based, collaborative или гибридный подход. Для небольших магазинов часто достаточно content-based, для крупных — коллаборативная фильтрация с collaborative filtering.
- Интеграция сбора данных — внедряем трекинг просмотров и покупок через кастомные таблицы и события Битрикс.
- Разработка рекомендательных блоков — создаём компоненты для вывода рекомендаций на каталоге, карточке товара, в корзине.
- Кеширование и агенты — настраиваем Redis для быстрого доступа и агенты Битрикс для ночного пересчёта.
- A/B тестирование — запускаем тестирование разных алгоритмов для сбора статистики.
- Деплой и обучение — развёртываем на продакшене, обучаем сотрудников работе с админ-панелью.
Типичные ошибки при внедрении
- Недостаток данных для collaborative filtering — если у вас менее 1000 действий на товар, коллаборативная фильтрация будет работать хуже content-based. Начинайте с простого подхода и накапливайте историю.
- Игнорирование кеширования — без Redis или аналогичного быстрого хранилища запросы к базе могут замедлить страницу. Мы используем тегированное кеширование Битрикс.
- Неправильный выбор окна совместных просмотров — в расчётах «также смотрели» важно ограничить интервал времени (например, 1 час), иначе будут попадать случайные товары.
Закажите разработку системы рекомендаций и увеличьте продажи. Наша команда реализовала системы рекомендаций для 20+ интернет-магазинов на Битрикс. Оценим ваш проект за 1 рабочий день. Получите консультацию — свяжитесь с нами для расчёта стоимости и сроков.







