Настройка сегментированных push-уведомлений 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка сегментированных push-уведомлений 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка сегментированных 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 подписчиков.