Многие интернет-магазины на 1С-Битрикс теряют до 70% брошенных корзин после email-рассылок. SMS-канал даёт 95% открываемости, но только при грамотной настройке — иначе деньги на шлюз тратятся впустую. Недавно к нам обратился клиент с каталогом электроники на 50 000 товаров: после email возвращали лишь 5% корзин, а после подключения SMS с трёхчасовым интервалом — 18%. Пришлось точно рассчитывать бюджет, так как каждое сообщение стоило 3-5 руб. Мы настраивали такие сценарии для десятков проектов и знаем, как избежать типовых ошибок: от дублирования сообщений до блокировки номера из-за превышения лимитов.
SMS оправданы для корзин со средним чеком от 3000 руб. и товаров импульсного спроса (электроника, одежда). Email не добирается до клиента — спам-фильтры, неактивные ящики. SMS видят все, но цена за сообщение заставляет считать каждый сценарий.
| Критерий | SMS | |
|---|---|---|
| Открываемость | 20-30% | 95% |
| Стоимость за сообщение | около 0.5 руб. | 3-8 руб. |
| Ограничение длины | 1000+ символов | 160 символов (кириллица — 70) |
| Риск спама | Высокий | Низкий |
| Согласие клиента | Формальное | Обязательное явное (ФЗ-38) |
Почему SMS эффективнее email для возврата корзин?
Email-письма часто попадают в спам. SMS видят почти сразу, но это дорогой канал. Поэтому мы применяем SMS только когда пользователь не открыл email за 3-4 часа — точный интервал настраивается под каталог. Согласно ФЗ-38 «О рекламе», для SMS-маркетинга требуется предварительное согласие, что мы обязательно реализуем.
Какие технические сложности скрываются за SMS-рассылкой?
Главная проблема — точное получение номера телефона. Если в профиле пользователя нет UF_PHONE, приходится парсить последний заказ, а это замедляет агент. Вторая сложность — нормализация номера: разные маски ввода (семь-495-123-45-67) превращаем в единый формат 74951234567. Третья — соблюдение лимитов провайдера: не более 100 сообщений в минуту на аккаунт, иначе блокировка.
Получение телефона пользователя
Телефон может храниться в пользовательских полях (b_user_field) или в свойствах заказа. Наш стандартный подход — проверять сначала UF_PHONE, затем последний заказ:
function getUserPhone(int $userId): string { $user = \Bitrix\Main\UserTable::getById($userId)->fetch(); if (!empty($user['UF_PHONE'])) return $user['UF_PHONE']; $order = \Bitrix\Sale\Order::getList([ 'filter' => ['USER_ID' => $userId], 'order' => ['DATE_INSERT' => 'DESC'], 'limit' => 1, 'select' => ['ID'], ])->fetch(); if (!$order) return ''; $orderObj = \Bitrix\Sale\Order::load($order['ID']); foreach ($orderObj->getPropertyCollection() as $prop) { if ($prop->getField('CODE') === 'PHONE') { return (string)$prop->getValue(); } } return ''; } Подключение SMS-шлюза через API
Битрикс имеет встроенный модуль main.smsmanager, но он не гибок для брошенных корзин. Мы используем прямой API провайдера — SMS.ru как пример:
class SmsRuClient { private string $apiId; public function __construct(string $apiId) { $this->apiId = $apiId; } public function send(string $phone, string $message, string $from = 'SHOP'): bool { $phone = preg_replace('/[^0-9]/', '', $phone); if (strlen($phone) === 10) $phone = '7' . $phone; $ch = curl_init('https://sms.ru/sms/send'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query([ 'api_id' => $this->apiId, 'to' => $phone, 'msg' => $message, 'from' => $from, 'json' => 1, ]), CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, ]); $response = json_decode(curl_exec($ch), true); curl_close($ch); return isset($response['status']) && $response['status'] === 'OK'; } } Как настроить агент отправки SMS?
Пошаговая настройка:
- Создать таблицу
abandoned_cartс полями USER_ID, FUSER_ID, STATUS, EMAIL_SENT_AT, SMS_SENT_AT. - Написать агент, который выбирает записи со статусом
email_sent, у которых прошло 3 часа. - В агенте проверять согласие
UF_SMS_CONSENTи наличие актуального телефона. - Отправлять SMS через
SmsRuClient, обновлять статус. - Зарегистрировать агент с периодичностью 10 минут.
| Этап | Действие | Срок |
|---|---|---|
| 1. Анализ | Сбор требований, выбор шлюза | 0.5 дня |
| 2. Интеграция | Подключение API, тестовый запуск | 1-2 дня |
| 3. Настройка агента | Создание агента с защитой от дублирования | 1 день |
| 4. Тестирование | Проверка на корзинах разных размеров | 0.5 дня |
| 5. Деплой | Запуск на бой, мониторинг | 0.5 дня |
Что входит в работу?
При заказе настройки SMS-уведомлений о брошенных корзинах вы получаете:
- Аудит текущего сбора телефонов и согласий на рассылку.
- Интеграцию выбранного SMS-шлюза (SMS.ru, SMSC.ru, МТС Коммуникатор) с тестовым запуском.
- Создание агента отправки с защитой от дублирования и обработкой лимитов.
- Настройку поля
UF_SMS_CONSENTи формы согласия в личном кабинете. - Документацию по поддержке и мониторингу.
- Обучение администраторов.
Как часто отправлять SMS?
SMS отправляем только один раз, через 3 часа после email, если письмо не открыто. Агент обрабатывает не более 20 корзин за раз, чтобы не перегрузить шлюз:
function sendAbandonedCartSms(): string { $smsClient = new SmsRuClient(getenv('SMSRU_API_ID')); $candidates = AbandonedCartTable::getList([ 'filter' => [ 'STATUS' => 'email_sent', '<EMAIL_SENT_AT' => new \Bitrix\Main\Type\DateTime('-3 hours'), '=SMS_SENT_AT' => false, ], 'limit' => 20, ])->fetchAll(); foreach ($candidates as $row) { $user = \Bitrix\Main\UserTable::getById($row['USER_ID'])->fetch(); if (empty($user['UF_SMS_CONSENT'])) continue; $phone = getUserPhone($row['USER_ID']); if (!$phone) continue; if (hasRecentOrder($row['USER_ID'])) { AbandonedCartTable::update($row['ID'], ['STATUS' => 'recovered']); continue; } $basket = \Bitrix\Sale\Basket::loadItemsForFUser($row['FUSER_ID'], SITE_ID); if ($basket->isEmpty()) continue; $smsText = buildCartSmsText($user['NAME'], $basket->getPrice(), '/basket/'); $sent = $smsClient->send($phone, $smsText); AbandonedCartTable::update($row['ID'], [ 'STATUS' => $sent ? 'sms_sent' : 'sms_failed', 'SMS_SENT_AT' => $sent ? new \Bitrix\Main\Type\DateTime() : null, ]); } return __FUNCTION__ . '();'; } Типичные ошибки при настройке
- Отправка без проверки согласия — нарушение ФЗ-38, блокировка провайдером.
- Дублирование сообщений — агент без флага отправки. Используйте статусы
email_sent,sms_sent. - Неверная нормализация номера:
+7 (495) 123-45-67->74951234567. Ошибка в коде приведёт к пустой отправке. - Слишком частые отправки — шлюз может заблокировать аккаунт. Ограничьте агент лимитом 20 корзин за раз.
Как управлять согласием на SMS-маркетинг?
Поле UF_SMS_CONSENT должно устанавливаться при регистрации или в личном кабинете — явным чекбоксом «Хочу получать SMS с персональными предложениями». Без явного согласия отправка SMS нарушает ФЗ-38. Мы гарантируем соблюдение законодательства при настройке.
Решение подходит как для 1С-Битрикс, так и для Битрикс24. Наша команда имеет многолетний опыт работы с Битрикс и сертификацию «1С-Битрикс: Разработчик». Мы реализовали более 50 проектов с настройкой оповещений. Получите консультацию по вашему проекту — напишите нам. Закажите настройку SMS-уведомлений и верните до 20% брошенных корзин.







