Настройка сегментированных push-уведомлений 1С-Битрикс
Массовые push-уведомления с CTR 0.5% и растущим числом отписок — следствие отсутствия сегментации. Push с релевантным предложением (скидка на категорию, которую пользователь просматривал) даёт CTR 4–8%. Это разница в подходе: не «всем про всё», а конкретному сегменту — конкретное сообщение.
Инфраструктура push-уведомлений в Битрикс
Стандартный модуль 1С-Битрикс не включает push-уведомления для интернет-магазина. Инфраструктура строится на базе:
- Firebase Cloud Messaging (FCM) — для web push и Android
- Apple Push Notification Service (APNs) — для iOS (если есть мобильное приложение)
- Сторонние платформы: OneSignal, Pushwoosh, SendPulse — с готовой сегментацией
Для интеграции с Битриксом наиболее практичен вариант с OneSignal или собственным хранилищем токенов + FCM API.
Хранение токенов и атрибутов пользователей
Токены push-подписки хранятся в пользовательской таблице:
CREATE TABLE custom_push_tokens (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
token TEXT NOT NULL,
platform ENUM('web', 'android', 'ios') DEFAULT 'web',
created_at DATETIME,
last_active DATETIME,
INDEX idx_user (user_id),
INDEX idx_platform (platform)
);
Атрибуты для сегментации хранятся отдельно:
CREATE TABLE custom_push_user_attrs (
user_id INT,
attr_key VARCHAR(100),
attr_value VARCHAR(255),
updated_at DATETIME,
PRIMARY KEY (user_id, attr_key)
);
Атрибуты обновляются по событиям Битрикс: просмотр категории → last_category_viewed, покупка → last_purchase_date и total_orders, сумма в корзине → cart_value.
Сегментация: что и как делить
Типовые сегменты для интернет-магазина:
| Сегмент | Критерии | Пример уведомления |
|---|---|---|
| Брошенная корзина | cart_value > 0, last_cart_update > 2ч | «Ваша корзина ждёт. Оформите сейчас» |
| Активные покупатели | total_orders >= 3 за 90 дней | Эксклюзивная акция для постоянных клиентов |
| Новые пользователи | registration_date < 7 дней | Промокод на первый заказ |
| Интерес к категории | last_category_viewed = 'electronics' | Скидка на электронику сегодня |
| Давно не покупали | last_purchase_date > 60 дней | «Скучаем по вам» + спецпредложение |
Отправка через FCM
Класс-обёртка для отправки:
class PushSender {
private const FCM_URL = 'https://fcm.googleapis.com/fcm/send';
public function sendToSegment(array $filter, string $title, string $body, array $data = []): void {
$tokens = $this->getTokensByFilter($filter);
// FCM принимает не более 500 токенов за запрос
foreach (array_chunk($tokens, 500) as $chunk) {
$this->sendBatch($chunk, $title, $body, $data);
}
}
private function sendBatch(array $tokens, string $title, string $body, array $data): void {
$payload = [
'registration_ids' => $tokens,
'notification' => [
'title' => $title,
'body' => $body,
'icon' => '/favicon-192.png',
'click_action' => $data['url'] ?? '/',
],
'data' => $data,
];
$http = new \Bitrix\Main\Web\HttpClient();
$http->setHeader('Authorization', 'key=' . FCM_SERVER_KEY);
$http->setHeader('Content-Type', 'application/json');
$http->post(self::FCM_URL, json_encode($payload));
}
}
Триггеры обновления атрибутов
Атрибуты сегментации должны обновляться в реальном времени. Это реализуется через обработчики событий Битрикс:
-
OnSaleOrderSaved→ обновлениеtotal_orders,last_purchase_date -
OnSaleBasketItemSaved→ обновлениеcart_value - Кастомное событие при просмотре раздела каталога →
last_category_viewed
Обновление атрибутов — простой REPLACE INTO custom_push_user_attrs.
Подписка на push через браузер
JavaScript для запроса разрешения и сохранения токена:
async function subscribeToPush() {
const registration = await navigator.serviceWorker.register('/sw.js');
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: VAPID_PUBLIC_KEY
});
await fetch('/api/push/subscribe/', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(subscription)
});
}
Сроки выполнения
| Объём работ | Срок |
|---|---|
| Хранение токенов + базовая отправка | 1–2 дня |
| Атрибуты + 5–7 сегментов | 2–3 дня |
| UI управления + аналитика доставки | +2 дня |
Сегментированные push — инструмент удержания, который окупается при базе от 5 000 подписчиков.







