Интеграция 1С-Битрикс с Pushwoosh
Представьте: у вашего интернет-магазина на 1С-Битрикс 50 000 зарегистрированных пользователей, но конверсия в повторные покупки — всего 12%. Вы внедряете push-уведомления через прямую интеграцию с FCM — и уже через месяц понимаете: много кода написано впустую. Сегментация не работает, нет аналитики, поддержка мобильных платформ требует отдельных решений. Мы сталкивались с этим не раз. Например, для сети магазинов электроники интеграция Pushwoosh вместо чистого FCM сократила время настройки с 8 до 2 дней и позволила отправлять персонализированные уведомления без доработок. Экономия бюджета составила до 40%, а результат — рост повторных покупок на 30% за первый месяц. Закажите бесплатный аудит — мы оценим ваш проект.
Pushwoosh — российский сервис push-уведомлений, работающий поверх FCM и APNs. Он предоставляет единый API для веб-пуша, Android, iOS и Huawei. Встроенные сегменты, A/B-тесты и аналитика экономят часы разработки. Время загрузки SDK — менее 1 секунды. Наш опыт: интегрировали Pushwoosh с Битрикс для 10+ проектов, сократив трудозатраты в 3 раза по сравнению с чистым FCM. Pushwoosh обрабатывает уведомления быстрее благодаря оптимизированной маршрутизации.
Как Pushwoosh упрощает отправку push-уведомлений?
В отличие от прямой работы с FCM и APNs, Pushwoosh берет на себя маршрутизацию и управление устройствами. Вам нужно лишь связать hwid (hardware ID) Pushwoosh с пользователем Битрикс. Один пользователь может иметь несколько устройств. Схема взаимодействия: Pushwoosh SDK получает hwid и регистрирует устройство, затем через API привязываем hwid к USER_ID. При наступлении события (заказ, акция) PHP-код отправляет запрос в Pushwoosh API, который доставляет уведомление на все устройства пользователя. До 70% пользователей подписываются на push — выше, чем у email-рассылок.
Инициализация Web SDK
Код ниже стандартный для любого проекта на Битрикс. Обратите внимание: autoSubscribe: false — подписку запрашиваем вручную по клику, это повышает конверсию и соответствует требованиям 54-ФЗ (согласие пользователя). Также в корне сайта разместите service-worker файл /pushwoosh-service-worker.js с содержимым importScripts('https://cdn.pushwoosh.com/webpush/v3/pushwoosh-service-worker.js');.
<script src="https://cdn.pushwoosh.com/webpush/v3/pushwoosh-web-notifications.js"></script> <script> var Pushwoosh = Pushwoosh || []; Pushwoosh.push(['init', { logLevel: 'error', applicationCode: 'XXXXX-YYYYY', safariWebsitePushID: 'web.com.example.shop', defaultNotificationTitle: 'Магазин Пример', defaultNotificationImage: 'https://example.com/push-icon.png', autoSubscribe: false, serviceWorkerUrl: '/pushwoosh-service-worker.js', }]); Pushwoosh.push(function(api) { api.onReady(function() { api.getHWID().then(function(hwid) { if (hwid) { registerPushwooshDevice(hwid); } }); }); }); function registerPushwooshDevice(hwid) { fetch('/local/api/pushwoosh/register', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Bitrix-Csrf-Token': BX.bitrix_sessid() }, body: JSON.stringify({ hwid: hwid, platform: 'web' }) }); } document.getElementById('subscribe-push').addEventListener('click', function() { Pushwoosh.push(function(api) { api.subscribe().then(function() { Pushwoosh.push(function(api) { api.getHWID().then(registerPushwooshDevice); }); }); }); }); </script> Хранение hwid и PHP-клиент Pushwoosh API
Для хранения соответствий используем HL-таблицу PushwooshDeviceTable. Пример PHP-клиента:
class PushwooshService { private string $appCode; private string $apiAccessToken; private string $apiUrl = 'https://cp.pushwoosh.com/json/1.3/'; public function createMessage(array $recipientHwids, string $content, array $extra = []): array { $payload = [ 'request' => [ 'application' => $this->appCode, 'auth' => $this->apiAccessToken, 'notifications' => [[ 'send_date' => 'now', 'ignore_user_timezone' => false, 'content' => $content, 'devices' => $recipientHwids, 'data' => $extra['data'] ?? [], 'ios_title' => $extra['title'] ?? '', 'android_header' => $extra['title'] ?? '', 'link' => $extra['url'] ?? '', ]], ], ]; return $this->request('createMessage', $payload); } public function sendMessageToUser(int $userId, string $content, string $title = '', string $url = ''): void { $hwids = PushwooshDeviceTable::getHwidsByUserId($userId); if (empty($hwids)) return; $this->createMessage($hwids, $content, ['title' => $title, 'url' => $url]); } public function createMessageByTag(string $tagName, string $tagValue, string $content): array { $payload = [ 'request' => [ 'application' => $this->appCode, 'auth' => $this->apiAccessToken, 'notifications' => [[ 'send_date' => 'now', 'content' => $content, 'conditions' => [[$tagName, 'EQ', $tagValue]], ]], ], ]; return $this->request('createMessage', $payload); } private function request(string $method, array $data): array { $ch = curl_init($this->apiUrl . $method); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($data), CURLOPT_HTTPHEADER => ['Content-Type: application/json'], ]); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response ?? []; } } Теги Pushwoosh для сегментации
Pushwoosh поддерживает теги — пользовательские атрибуты устройства. Это позволяет отправлять уведомления по сегментам без передачи списка hwid.
public function setUserTags(string $hwid, int $userId): void { $user = \Bitrix\Main\UserTable::getById($userId)->fetch(); $tags = []; $groups = \CUser::GetUserGroup($userId); if (in_array(7, $groups)) { $tags[] = ['tagName' => 'loyalty_level', 'tagValue' => 'gold']; } if (!empty($user['PERSONAL_CITY'])) { $tags[] = ['tagName' => 'city', 'tagValue' => $user['PERSONAL_CITY']]; } $totalOrders = $this->getUserOrdersTotal($userId); $tags[] = ['tagName' => 'orders_total', 'tagValue' => (int)$totalOrders]; $this->request('setTags', [ 'request' => [ 'application' => $this->appCode, 'auth' => $this->apiAccessToken, 'tags' => $tags, 'hwid' => $hwid, ], ]); } Обработка событий из Битрикс
AddEventHandler('sale', 'OnSaleStatusOrder', function(string $statusId, \Bitrix\Sale\Order $order) { $userId = (int)$order->getUserId(); $notifications = [ 'O' => ['Заказ #' . $order->getField('ACCOUNT_NUMBER'), 'Заказ принят, передаём в обработку'], 'D' => ['Заказ отправлен', 'Посылка уже в пути — отслеживайте доставку'], 'F' => ['Заказ выполнен', 'Спасибо за покупку! Оставьте отзыв — нам важен ваш опыт'], ]; if (!isset($notifications[$statusId])) return; [$title, $content] = $notifications[$statusId]; $url = '/personal/order/detail/' . $order->getField('ACCOUNT_NUMBER') . '/'; (new PushwooshService())->sendMessageToUser($userId, $content, $title, $url); }); Статистика и Inbox
Pushwoosh предоставляет API для получения статистики (getStats) и inbox-уведомлений (getInboxMessages) — список последних push, которые пользователь мог пропустить. Inbox отображается в личном кабинете. JavaScript-код для получения inbox:
Pushwoosh.push(function(api) { api.getInboxMessages().then(function(messages) { renderInbox(messages); }); }); Какие преимущества даёт Pushwoosh перед прямой интеграцией с FCM?
| Критерий | Прямая FCM | Pushwoosh |
|---|---|---|
| Единый API для всех платформ | Нет (отдельно Web, Android, iOS) | Да |
| Встроенная сегментация | Нет | Да (теги, группы) |
| A/B-тесты | Нет | Да |
| Inbox-уведомления | Нет | Да |
| Время на настройку (человеко-дни) | 5–7 | 1–2 |
Типичные ошибки при интеграции
- Не хранить hwid для неавторизованных пользователей — уведомления не дойдут после регистрации.
- Отправлять уведомления без проверки согласия (требование 54-ФЗ). Используйте
autoSubscribe: false. - Игнорировать теги: без них сегментация невозможна, все пользователи получают одинаковые сообщения.
- Забыть про service worker для веб-пуша — уведомления не приходят на закрытый браузер.
Свяжитесь с нами для получения консультации по интеграции — мы поможем избежать этих ошибок.
Что входит в работу
- Аудит текущей архитектуры Битрикс (инфоблоки, события, пользователи)
- Документация API и схемы данных
- Настройка Pushwoosh SDK (Web, Android, iOS)
- Реализация PHP-клиента с полным покрытием методов (sendMessage, setTags, getStats)
- Интеграция с событиями (заказы, регистрации, корзина)
- Тегирование пользователей и создание сегментов
- Настройка inbox и отображение в личном кабинете
- Обучение команды (1–2 часа)
- Техническая поддержка 1 месяц после релиза
Как мы внедряем Pushwoosh в Битрикс?
Процесс интеграции выстроен поэтапно:
- Аналитика: изучаем схему данных, события, пользовательские группы.
- Проектирование: определяем структуру хранения hwid, тегов, сценарии отправки.
- Реализация: пишем PHP-клиент, JS-код, настраиваем SDK.
- Тестирование: проверяем доставку на всех платформах, сегментацию, сценарии.
- Деплой: разворачиваем на продакшн, обновляем service worker.
Сроки ориентировочно
| Задача | Срок |
|---|---|
| SDK инициализация, сохранение hwid | 2–3 дня |
| PHP-клиент API, таблица устройств | 2–3 дня |
| Отправка по событиям заказов | 2–3 дня |
| Теги и сегментация | 2–3 дня |
| Inbox, статистика, управление из ЛК | 3–5 дней |
| Полный комплекс (web + mobile) | 3–4 недели |
Получите консультацию — мы оценим ваш проект и предложим точные сроки под вашу архитектуру. Оставьте заявку, и мы свяжемся с вами.







