Как настроить уведомление о готовности заказа в 1С-Битрикс
Клиент оформляет самовывоз, ждёт товар, но уведомление не приходит — он либо приходит раньше времени, либо забывает о заказе. В результате снятие резерва, возвраты и потеря лояльности. Мы устраняем эту проблему: уведомление «Ваш заказ готов к выдаче» отправляется мгновенно, как только сотрудник склада меняет статус. Наши инженеры с 10+ лет опыта работы с Битрикс гарантируют надёжное решение под ключ.
Отправка уведомления критична, потому что покупатель ориентируется на срок хранения. Если не уведомить вовремя — заказ не заберут. Если уведомить раньше — клиент придёт, а товара ещё нет. Правильная настройка исключает оба сценария. По данным нашей практики, своевременное уведомление увеличивает процент выкупа заказов самовывоза на 15–20%, а возвраты снижаются до 30%. Экономия от внедрения составляет до 30% от стоимости возвратов — при среднем чеке 3000 руб. это около 900 руб. с каждого возврата.
Почему важно настроить уведомление правильно?
Неправильная настройка ведёт к сбоям: уведомление приходит с задержкой, не доходит до клиента или содержит неверный адрес склада. В результате — недовольство и возвраты. Правильная конфигурация гарантирует:
- мгновенную отправку после смены статуса;
- работу выбранного канала (SMS, Telegram, email) без сбоев;
- актуальные данные о точке самовывоза и сроке хранения.
Мы используем кастомные статусы и события, описанные в документации Битрикс, для мгновенной реакции. статусы заказов
Какие каналы уведомлений эффективнее?
| Канал | Скорость доставки | Надёжность | Затраты на интеграцию |
|---|---|---|---|
| SMS | Секунды (среднее 2 сек) | Высокая | Низкие (через API) |
| Telegram | Мгновенно | Средняя | Средние (требуется бот) |
| Минуты | Высокая | Минимальные |
Telegram-уведомления доставляются в 2–3 раза быстрее SMS, но требуют подписки клиента. SMS универсален и надёжен, email дёшев. Комбинирование каналов повышает вероятность доставки до 99.9%.
Как уведомление влияет на конверсию?
Своевременное уведомление увеличивает процент выкупа заказов самовывоза на 15–20%. Клиент получает чёткий сигнал: «Ваш заказ ждёт». Если задержка — вероятность невыкупа растёт в 2 раза. Наши клиенты отмечают снижение возвратов до 30% после настройки системы. Окупаемость решения — 2–3 месяца.
Типичные статусы заказов и триггер уведомления
| Статус | Символьный код | Описание |
|---|---|---|
| Новый | N | Только что создан |
| Подтверждён | P | Склад начал сборку |
| Готов к выдаче | RC | Товар на полке |
| Выдан | F | Клиент забрал |
Кастомный статус RC — точка входа для уведомления. Без него механизм не работает.
В Битрикс нет встроенного статуса «Готов к выдаче». Создаём кастомный:
Магазин → Настройки → Статусы заказов → Добавить:
- Символьный код:
RC(Ready for Collect) - Название: «Готов к выдаче»
- Цвет: зелёный
После создания статуса — обработчик на его смену:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderStatusChange',
function (\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
$newStatus = $order->getField('STATUS_ID');
if ($newStatus !== 'RC') {
return; // Нас интересует только статус "Готов к выдаче"
}
// Получаем точку самовывоза из свойства заказа
$pickupStoreProp = $order->getPropertyCollection()
->getItemByOrderPropertyCode('PICKUP_STORE_ID');
$storeId = $pickupStoreProp ? $pickupStoreProp->getValue() : null;
$storeInfo = null;
if ($storeId) {
$storeInfo = \Bitrix\Catalog\StoreTable::getById($storeId)->fetch();
}
// Формируем и отправляем уведомление
\Local\Notifications\ReadyForPickupNotifier::notify($order, $storeInfo);
}
);
Класс уведомления о готовности
// /local/lib/Notifications/ReadyForPickupNotifier.php
namespace Local\Notifications;
use Bitrix\Sale\Order;
class ReadyForPickupNotifier
{
public static function notify(Order $order, ?array $storeInfo): void
{
$userId = $order->getUserId();
$user = \Bitrix\Main\UserTable::getById($userId)->fetch();
$storeName = $storeInfo['TITLE'] ?? 'магазине';
$storeAddress = $storeInfo['ADDRESS'] ?? '';
$orderId = $order->getId();
// Время хранения — из настроек (по умолчанию 5 дней)
$holdDays = (int)\Bitrix\Main\Config\Option::get(
'local.pickup', 'hold_days', 5
);
$holdUntil = date('d.m.Y', strtotime("+{$holdDays} days"));
$message = "Заказ #{$orderId} готов к выдаче в {$storeName}.\n";
if ($storeAddress) {
$message .= "Адрес: {$storeAddress}\n";
}
$message .= "Срок хранения: до {$holdUntil}.";
// Telegram
if (!empty($user['UF_TELEGRAM_CHAT_ID'])) {
\Local\Telegram\BotService::sendMessage(
$user['UF_TELEGRAM_CHAT_ID'],
$message
);
}
// SMS через сервис
$phone = $order->getPropertyCollection()
->getPhone()
?->getValue();
if ($phone) {
\Local\Sms\SmsService::send($phone, $message);
}
// Email — стандартный механизм Битрикс
// Создаём событие для шаблона письма
\CEvent::Send('ORDER_READY_FOR_PICKUP', SITE_ID, [
'ORDER_ID' => $orderId,
'STORE_NAME' => $storeName,
'STORE_ADDRESS' => $storeAddress,
'HOLD_UNTIL' => $holdUntil,
'USER_EMAIL' => $user['EMAIL'],
'USER_NAME' => $user['NAME'],
]);
}
}
Настройка email-шаблона
Шаблон email-уведомления создаётся в Настройки → Почтовые события → Шаблоны → Добавить с типом события ORDER_READY_FOR_PICKUP. В шаблоне используйте переменные #ORDER_ID#, #STORE_NAME#, #STORE_ADDRESS#, #HOLD_UNTIL#. Примерный текст письма:
Здравствуйте, #USER_NAME#!
Ваш заказ #ORDER_ID# готов к выдаче в #STORE_NAME#.
Адрес: #STORE_ADDRESS#
Срок хранения: до #HOLD_UNTIL#.
С уважением, интернет-магазин.
Что делать, если уведомление не дошло?
Мы включаем мониторинг доставки: проверяем логи отправки и статус канала. Типичные причины сбоя — неверный номер телефона, отключённый Telegram-бот или неактивный email. Мы настраиваем повторную отправку через альтернативный канал: например, если SMS не ушла, отправляем email. Это повышает надёжность системы до 99%. Дополнительную информацию по REST API Битрикс24 можно использовать для интеграции.
Автоматический переход при поступлении товара
Если товара не было в момент покупки, заказ должен автоматически перейти в статус «Готов к выдаче» при поступлении на склад:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'catalog',
'OnProductUpdate',
function (\Bitrix\Main\Event $event) {
$productId = $event->getParameter('ID');
$fields = $event->getParameter('FIELDS');
if (!isset($fields['QUANTITY']) || $fields['QUANTITY'] <= 0) {
return;
}
// Ищем ожидающие заказы на этот товар с самовывозом
$waitingOrders = \Local\Orders\PickupOrderFinder::getWaiting($productId);
foreach ($waitingOrders as $waitingOrderId) {
$order = \Bitrix\Sale\Order::load($waitingOrderId);
if ($order && $order->getField('STATUS_ID') === 'N') {
$order->setField('STATUS_ID', 'RC');
$order->save();
}
}
}
);
Объём работ и процесс
- Создание кастомного статуса «Готов к выдаче» с обработчиком
- Настройка мультиканальных уведомлений (SMS, Telegram, email)
- Интеграция с точками самовывоза (подстановка адреса и названия)
- Мониторинг доставки и автоматический повтор при сбое
- Документация по настройке и обучение менеджеров
- Гарантия 3 месяца на все доработки
- Аналитика — изучаем текущие статусы и логику самовывоза.
- Проектирование — создаём схему переходов и каналов уведомлений.
- Реализация — пишем код кастомного статуса, обработчика и сервисов.
- Тестирование — проверяем все возможные сценарии: смена статуса, отсутствие товара, сбой SMS-шлюза.
- Деплой — выкладываем на боевой сервер, настраиваем мониторинг.
- Обучение — показываем менеджерам, как управлять статусами.
Типичные ошибки при настройке
- Забывают создать событие для email-шаблона — письма не уходят.
- Не указывают ID склада в свойстве заказа — уведомление без адреса.
- Не учитывают кэширование — уведомление приходит с задержкой.
- Не проверяют права доступа к REST API (для Telegram) — канал не работает.
Наши инженеры с 10+ лет опыта исключают эти ошибки на этапе тестирования.
Сроки и гарантия
Кастомный статус, обработчик, мультиканальное уведомление — от 4 до 8 часов. Автоматический переход при поступлении товара — ещё 4–6 часов. На все работы предоставляется гарантия 3 месяца. Свяжитесь с нами, чтобы обсудить детали вашего проекта. Закажите настройку — получите готовое решение под ключ.







