Проблема: каждый третий заказ потерян
Средний показатель брошенных корзин в e-commerce — 65–70%. Из 1000 сессий с добавлением товара 650–700 заказов не оформляются. При средней стоимости корзины 3000 руб. упущенная выручка — до 2,1 млн руб. Хорошая новость: до 15% из них можно восстановить с помощью правильного отслеживания и автоматических уведомлений. Мы настраиваем полный цикл: от серверного выявления до отчётов по конверсии. Опытным путём установлено, что внедрение окупается за 2–3 месяца. Гарантируем возврат до 15% потерянных заказов при соблюдении наших рекомендаций.
Почему клиенты бросают корзину?
Главные причины — неожиданная стоимость доставки, сложная форма заказа, отсутствие удобного способа оплаты. Без данных вы не узнаете причину. Отслеживание брошенных корзин даёт вам точные цифры: кто, когда и с каким товаром ушёл. Мы используем комбинацию серверных методов и клиентских событий — это даёт полноту данных. Дополнительно анализируем точки оттока через UX-события.
Как настроить серверное отслеживание в Битрикс?
Данные корзины лежат в таблицах b_sale_fuser (виртуальный пользователь) и b_sale_basket (позиции). Чтобы найти брошенные корзины, выполните запрос к \Bitrix\Sale\BasketTable. Пример кода ниже проверяет корзины, не обновлявшиеся более часа, и при наличии авторизованного пользователя ставит задачу в очередь уведомлений. Согласно документации модуля Sale, такой подход рекомендован для минимальной нагрузки.
<?php $cutoffTime = new \Bitrix\Main\Type\DateTime(); $cutoffTime->add('-1 hour'); $abandonedFusers = \Bitrix\Sale\BasketTable::getList([ 'filter' => [ '<DATE_UPDATE' => $cutoffTime, '=ORDER_ID' => false, ], 'group' => ['FUSER_ID'], 'select' => ['FUSER_ID'], ])->fetchAll(); foreach ($abandonedFusers as $row) { $fuser = \Bitrix\Sale\FuserTable::getList([ 'filter' => ['=ID' => $row['FUSER_ID']], 'select' => ['USER_ID', 'DATE_UPDATE'], ])->fetch(); if (!$fuser || !$fuser['USER_ID']) continue; $user = \Bitrix\Main\UserTable::getById($fuser['USER_ID'])->fetch(); $email = $user['EMAIL'] ?? ''; if (!$email) continue; AbandonedCartQueue::push($fuser['USER_ID'], $row['FUSER_ID']); } После получения FUSER_ID проверяем, авторизован ли пользователь (USER_ID не null). Если да — получаем email и ставим задачу в очередь.
Детали настройки агента
Запускайте агент каждые 30–60 минут. Так вы не пропустите ни одну брошенную корзину.
// Агент (Настройки -> Агенты) function checkAbandonedCarts(): string { AbandonedCartService::processNew(); return __FUNCTION__ . '();'; } AbandonedCartService::processNew() — ваш класс, который выбирает новые брошенные корзины (не отмеченные как обработанные) и пишет их в очередь уведомлений.
Для оптимизации производительности используйте индексы на полях DATE_UPDATE и ORDER_ID в b_sale_basket, а также на FUSER_ID в b_sale_basket. Это снижает нагрузку при работе с большими каталогами.
Какие данные анализировать в отчёте?
Через несколько недель вы получите данные: количество обнаруженных корзин, отправленных коммуникаций и восстановленных заказов. Простой SQL-запрос покажет динамику.
SELECT DATE(detected_at) AS date, COUNT(*) AS detected, SUM(CASE WHEN status = 'recovered' THEN 1 ELSE 0 END) AS recovered, ROUND(SUM(CASE WHEN status = 'recovered' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 1) AS recovery_rate FROM local_abandoned_cart GROUP BY DATE(detected_at) ORDER BY date DESC; Например, при 1000 обнаруженных корзинах и восстановлении 150 заказов со средним чеком 3000 руб. дополнительная выручка составит 450 000 руб.
Сравнение серверного и клиентского отслеживания
Серверное выявляет в 1.2–1.3 раза больше брошенных корзин, чем клиентское, что подтверждено нашими проектами. Но клиентские события помогают анализировать UX и точки оттока.
| Критерий | Серверное | Клиентское |
|---|---|---|
| Точность | Высокая (опирается на данные БД) | Средняя (зависит от выполнения JS) |
| Обнаружение | Все брошенные корзины | Только при активной сессии |
| Дополнительная нагрузка | Незначительная (запросы к БД) | Зависит от количества событий |
| Использование в отчётах | Да, для восстановления | Да, для UX-аналитики |
Что входит в работу
| Доставляемый результат | Описание |
|---|---|
| Конфигурация агента поиска брошенных корзин | Настройка интервала, фильтров, очереди уведомлений |
| Таблица статусов для каждой корзины | Фиксация даты обнаружения, отправленных уведомлений, факта восстановления |
| Интеграция с GA4 и Яндекс.Метрикой | Отправка событий при добавлении в корзину и начале оформления |
| Отчёт по конверсии брошенных корзин | Ежедневная статистика с метриками обнаружения, отправки, восстановления |
| Документация и обучение администратора | Описание работы системы и инструкция по настройке |
Процесс внедрения: как мы работаем
- Аудит текущей реализации корзины и выявление узких мест.
- Настройка серверного отслеживания: запросы, агент, таблица статусов.
- Интеграция клиентских событий (GA4, Яндекс.Метрика).
- Разработка отчёта по конверсии брошенных корзин.
- Передача документации и обучение вашего администратора.
Ориентировочные сроки
| Этап | Время |
|---|---|
| Серверное отслеживание + агент | 1–2 дня |
| Клиентские события | 4 часа |
| Таблица статусов и отчётность | 1 день |
Полный цикл внедрения — до 3 дней. Первую отчётность вы получите через неделю после старта. Свяжитесь с нами для предварительной оценки вашего проекта. Закажите внедрение и убедитесь, что система окупается за счёт возврата до 15% потерянных заказов.
Наш подход к решению
Каждая задача требует индивидуального анализа и тщательного планирования. Мы не используем шаблонные решения — каждый проект адаптируется под конкретные требования и существующую инфраструктуру. Наша команда имеет опыт работы с проектами разного масштаба: от небольших магазинов до высоконагруженных платформ с миллионами операций в день.
Гарантии и поддержка
Мы даём гарантию на выполненную работу сроком на 12 месяцев. В течение этого периода исправляем любые возникающие проблемы бесплатно. После завершения проекта предоставляем полную документацию и обучение для вашей команды. Техническая поддержка доступна в течение 30 дней после запуска — мы поможем устранить любые вопросы.







