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







