Налаштування сегментованих push-повідомлень у 1С-Bitrix
Масові push-повідомлення з CTR 0,5% і зростаючою кількістю відписок — наслідок відсутності сегментації. Push з релевантною пропозицією (знижка на категорію, яку переглядав користувач) дає CTR 4–8%. Це різниця в підході: не «всім про все», а конкретному сегменту — конкретне повідомлення.
Інфраструктура push-повідомлень у Bitrix
Стандартний модуль 1С-Bitrix не включає push-повідомлення для інтернет-магазину. Інфраструктура будується на базі:
- Firebase Cloud Messaging (FCM) — для web push і Android
- Apple Push Notification Service (APNs) — для iOS (якщо є мобільний додаток)
- Сторонні платформи: OneSignal, Pushwoosh, SendPulse — з готовою сегментацією
Для інтеграції з Bitrix найпрактичніший варіант з 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)
);
Атрибути оновлюються подіями Bitrix: перегляд категорії → last_category_viewed, покупка → last_purchase_date і total_orders, сума у кошику → cart_value.
Сегментація: що і як ділити
Типові сегменти для інтернет-магазину:
| Сегмент | Критерії | Приклад повідомлення |
|---|---|---|
| Заброшений кошик | cart_value > 0, last_cart_update > 2h | «Ваш кошик чекає. Оформіть зараз» |
| Активні покупці | 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));
}
}
Триггери оновлення атрибутів
Атрибути сегментації повинні оновлюватися у реальному часі. Реалізується через обробники подій Bitrix:
-
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 підписників.







