Интеграция 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 недели |
Получите консультацию — мы оценим ваш проект и предложим точные сроки под вашу архитектуру. Оставьте заявку, и мы свяжемся с вами.







