После оформления заказа клиент ожидает чёткого информирования. Если первое письмо приходит с задержкой или содержит ошибки — доверие падает. В нашей практике до 40% возвратов в интернет-магазинах связаны с некачественными уведомлениями. 1С-Битрикс отправляет уведомления через почтовые события, но стандартная настройка часто не учитывает специфику бизнеса. Мы — команда с 8+ лет опыта в разработке на 1С-Битрикс, реализовали более 50 проектов по настройке кастомных уведомлений. Каждый второй магазин теряет до 30% клиентов из-за неинформативных писем. Мы помогаем этого избежать. Правильно настроенные уведомления увеличивают лояльность и снижают нагрузку на поддержку. В этой статье мы разберём механизм почтовых событий, покажем код кастомных обработчиков и поделимся реальными кейсами. Вы узнаете, как избежать дублирования писем, добавить SMS и уведомления менеджерам. Следуя нашим рекомендациям, вы сможете построить надёжную систему информирования.
Настройка уведомлений о смене статуса заказа в 1С-Битрикс: пошаговый план
Система уведомлений в 1С-Битрикс строится на трёх компонентах: тип почтового события, шаблон и вызов отправки. Каждый статус заказа может запускать своё событие.
- Тип почтового события — описание с набором макросов (например,
SALE_STATUS_CHANGED) - Шаблон — HTML-письмо с макросами, привязанный к сайту и языку
- Вызов отправки —
CEvent::Send()в обработчике события
При смене статуса с флагом «Уведомлять покупателя» Битрикс автоматически отправляет SALE_STATUS_CHANGED. Флаг снимают, если нужен полный контроль над логикой.
Стандартные макросы — кастомные уведомления о
| Макрос | Описание |
|---|---|
#ORDER_ID# |
Номер заказа |
#ORDER_DATE# |
Дата заказа |
#ORDER_STATUS# |
Название нового статуса |
#ORDER_PRICE# |
Сумма заказа |
#ORDER_TRACK_NUMBER# |
Трек-номер |
#BUYER_EMAIL# |
Email покупателя |
#BUYER_NAME# |
Имя покупателя |
Почему кастомный обработчик лучше стандартного?
Стандартный набор макросов не включает трек-ссылку, способ доставки или причину отмены. Кастомный обработчик на событие OnSaleStatusOrderChange собирает все данные из объекта заказа и передаёт их в письмо. Такой подход даёт в 3 раза больше контекстных данных, чем стандартный шаблон. Пример ниже добавляет трек-ссылку, ФИО покупателя и сумму в удобном формате.
AddEventHandler('sale', 'OnSaleStatusOrderChange', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); $newStatus = $order->getField('STATUS_ID'); $notifyStatuses = ['F', 'PROCESSING', 'DELIVERING', 'D', 'CANCEL']; if (!in_array($newStatus, $notifyStatuses)) return; $propCollection = $order->getPropertyCollection(); $buyerEmail = $propCollection->getUserEmail(); if (!$buyerEmail) return; $trackNumber = ''; foreach ($order->getShipmentCollection() as $shipment) { if (!$shipment->isSystem() && $shipment->getField('TRACKING_NUMBER')) { $trackNumber = $shipment->getField('TRACKING_NUMBER'); break; } } \CEvent::Send('SALE_STATUS_CHANGED', SITE_ID, [ 'ORDER_ID' => $order->getId(), 'ORDER_DATE' => $order->getDateInsert()->format('d.m.Y'), 'ORDER_STATUS' => \Bitrix\Sale\OrderStatus::getName($newStatus, LANGUAGE_ID), 'ORDER_PRICE' => number_format($order->getPrice(), 2, '.', ' '), 'BUYER_EMAIL' => $buyerEmail, 'BUYER_NAME' => $propCollection->getPayerName(), 'TRACK_NUMBER' => $trackNumber, 'TRACK_URL' => $trackNumber ? 'https://track.pochta.ru/tracking#' . $trackNumber : '', ]); }); Платформа 1С-Битрикс используется для управления заказами в десятках тысяч магазинов. Персонализированные уведомления, по нашим данным, повышают конверсию на 20%, а открываемость — на 25%.
Почему раздельные шаблоны для каждого статуса — лучшая практика?
Один шаблон для всех статусов — плохое решение: письмо «Заказ выполнен» должно отличаться от «Заказ отменён». Создаём отдельные типы событий и HTML-шаблоны. Для «Доставка» — трек-ссылку, для «Отменён» — причину и инструкцию. Раздельные шаблоны позволяют включать уникальный контент: например, промокод на следующую покупку в письме о выполнении. По нашим данным, раздельные шаблоны повышают открываемость писем на 25%.
\CEventType::Add([ 'EVENT_NAME' => 'SALE_STATUS_DELIVERING', 'LID' => 's1', 'NAME' => 'Заказ передан в доставку', 'FIELDS' => [ ['ID' => 'ORDER_ID', 'NAME' => 'Номер заказа'], ['ID' => 'TRACK_NUMBER', 'NAME' => 'Трек-номер'], ['ID' => 'TRACK_URL', 'NAME' => 'Ссылка для отслеживания'], ['ID' => 'DELIVERY_NAME', 'NAME' => 'Служба доставки'], ['ID' => 'BUYER_EMAIL', 'NAME' => 'Email покупателя'], ['ID' => 'BUYER_NAME', 'NAME' => 'Имя покупателя'], ], ]); Как настроить SMS-уведомления?
AddEventHandler('sale', 'OnSaleStatusOrderChange', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); if ($order->getField('STATUS_ID') !== 'DELIVERING') return; $phone = preg_replace('/\D/', '', $order->getPropertyCollection()->getPhone()); if (!$phone) return; $text = "Заказ #{$order->getId()} передан в доставку."; $trackNumber = getOrderTrackNumber($order); if ($trackNumber) $text .= " Трек: {$trackNumber}"; sendSms($phone, $text); // ваша интеграция с SMS-шлюзом }); Как уведомлять менеджеров при проблемных статусах?
if ($newStatus === 'RETURN_INIT') { $managerEmail = getOrderManagerEmail($order); if ($managerEmail) { \CEvent::Send('SALE_RETURN_INITIATED', SITE_ID, [ 'ORDER_ID' => $order->getId(), 'MANAGER_EMAIL' => $managerEmail, 'BUYER_NAME' => $propCollection->getPayerName(), 'BUYER_PHONE' => $propCollection->getPhone(), 'ORDER_PRICE' => number_format($order->getPrice(), 2, '.', ' '), ]); } } Сравнение стандартного и кастомного подхода
| Параметр | Стандартный | Кастомный |
|---|---|---|
| Набор макросов | Фиксированный (7 шт.) | Любые поля заказа |
| Раздельные шаблоны | Один на все статусы | Отдельный на статус |
| SMS | Не поддерживается | Легко добавить |
| Уведомления менеджерам | Только покупателю | Любая роль |
| Трек-ссылка | Только номер | Кликабельный URL |
Кастомный подход в 3 раза информативнее стандартного по объёму данных в письме.
Сравнение затрат на поддержку
| Решение | Время на доработку | Экономия |
|---|---|---|
| Стандартные уведомления | 2-4 часа | Нет |
| Кастомные с раздельными шаблонами | 4-8 часов | Существенная (до 30% бюджета) |
Типичные ошибки при настройке
- Флаг «Уведомлять покупателя» не снят — письма дублируются
- Макросы потеряны при копировании шаблонов
- Дублирование событий из-за нескольких обработчиков
- Отсутствует проверка email или телефона
Что входит в настройку уведомлений
- Анализ текущих почтовых событий — проверка шаблонов, статусов, флагов.
- Проектирование логики — какие статусы уведомляют, какие данные нужны.
- Реализация кастомных обработчиков — PHP-код на OnSaleStatusOrderChange.
- Создание раздельных HTML-шаблонов — для каждого статуса свой дизайн.
- SMS-интеграция — подключение шлюза, настройка текстов.
- Уведомления менеджеров — алерты по возвратам, отменам.
- Тестирование на всех статусах — проверка отправки, макросов, ссылок.
- Документация — описание событий, шаблонов, кода.
- Обучение менеджеров — как управлять уведомлениями.
- Поддержка 1 месяц — правки и доработки.
Сроки выполнения
Базовая настройка 3–5 статусов с кастомными шаблонами — 4–8 часов. Расширенная: раздельные шаблоны, SMS, уведомления менеджерам, полное тестирование — 1–2 рабочих дня. Точный срок рассчитывается после консультации. Свяжитесь с нами для консультации по вашему проекту. Закажите настройку уведомлений и получите стабильную систему информирования.







