Push-уведомления (Премиум)
Эта глава относится к редакции «Премиум». В редакции «База» страницы «Push-уведомления» и «Сбор разрешений» остаются в меню, но показывают только предложение перейти на «Премиум» (глава 9).
Push-уведомление — короткое сообщение, которое появляется на экране телефона или компьютера даже тогда, когда сайт закрыт. Его получают только покупатели, которые сами дали разрешение в браузере.
Что нужно знать до начала
- Рассылка ручная. Вы сами пишете сообщение и нажимаете «Отправить». Автоматических рассылок (напоминание о корзине, смена статуса заказа) в PWA нет. Автоматизация коммуникаций — отдельный продукт, в PWA не входит.
- Разрешение браузера — это не маркетинговое согласие. PWA не хранит и не проверяет согласия на рекламу. Если вы шлёте рекламу, получайте и храните согласие по закону отдельно.
- Нужны подписчики. Сообщение придёт только тем, кто нажал кнопку подписки на вашем сайте и разрешил уведомления в браузере.
- iPhone: уведомления работают только у приложения, добавленного на экран «Домой» (iOS 16.4+) (глава 4).
- Нужно PHP-расширение
openssl,curl,mbstring,json— обычно они уже включены у хостинга. Если нет, диагностика и журналы покажут ошибки отправки; обратитесь к хостингу (FAQ). - После включения «Премиум» (или покупки лицензии) откройте настройки каждой витрины и нажмите «Сохранить»: служебный файл Service Worker создаётся заново, и в нём появляется обработчик push. Без этого уведомления могут не показываться.
Шаг 1. Настройте сбор разрешений на сайте
Когда это нужно. Покупателям нужно дать способ подписаться.
Где открыть. Меню → Push-уведомления → Сбор разрешений.
На странице две вкладки:
| Вкладка | Что это |
|---|---|
| Кнопка | Кнопка «Подписаться/отписаться». Вставляется в любое место сайта внутри <body> с помощью хелпера (блок «Хелпер вывода» на странице). Настраиваются текст кнопки, цвет ссылки, размер шрифта, свой CSS |
| Виджет | Панель с настройками подписки; положение: угол экрана или центр. Вставляется хелпером |
Что сделать.
- Выберите вкладку «Кнопка» или «Виджет».
- Скопируйте код из блока «Хелпер вывода» и вставьте его в шаблон сайта (
index.htmlтемы, внутри<body>; например, в шапку или подвал). - Настройте внешний вид и нажмите «Сохранить».
Что должно получиться. На витрине появляется кнопка или виджет подписки. После нажатия браузер спрашивает разрешение на уведомления; если покупатель согласился — вы увидите рост числа в плашке «Подписалось на push-уведомления» вверху страницы настроек.
Если не получилось.
- Кнопки нет на странице — проверьте, что хелпер вставлен в шаблон, PWA активно (глава 3) и у вас редакция «Премиум».
- Если покупатель нажал «Блокировать» в запросе браузера, браузер больше не спрашивает: разрешение нужно вернуть в настройках сайта в браузере.
- Блок подписки сам по себе в тему не добавляется (при проверке на стандартных темах Shop-Script его не было) — без вашего хелпера его не будет.
Шаг 2. Убедитесь, что готовы ключи VAPID
Что это. Ключи VAPID — «пара паролей», по которым браузерные сервисы push понимают, что сообщения идут именно от вашего магазина. Приложение создаёт их само при сохранении настроек и не меняет сама никогда.
Где смотреть. Плашка вверху страницы настроек, строка «Push-ключи (VAPID)»:
| Что написано | Что это значит | Что делать |
|---|---|---|
| Shared (зелёным) | Витрина использует общие ключи приложения | Ничего |
| Legacy keys of this storefront… (оранжевым) | У витрины свои ключи из старой версии, они сохранены намеренно: на них оформлены текущие подписки | Не удалять |
| Error: keys are missing or incomplete… (красным) | Ключи потеряны или неполные | Не создавайте новые, пока есть подписчики. Восстановите ключи из резервной копии (глава 8) |
| Красное предупреждение на английском «The VAPID key differs from the one the current subscribers were created with…» (по-русски такой текст виден только в мастере) | Текущий ключ не совпадает с тем, под которым собраны подписки | Подписчики не получают уведомлений, пока не подпишутся заново. Если смена была случайной — верните ключ из копии |
В русском интерфейсе эти статусы пока показываются на английском языке, а кнопка «Clear all subscribers» — не переведена. В руководстве названия даны так, как они выглядят на экране.
Шаг 3. Создайте уведомление
Когда это нужно. Подготовить сообщение, акцию или объявление.
Где открыть. Меню → Push-уведомления → Push-уведомления. Убедитесь, что выбрана нужная витрина.
Что нажать и заполнить.
-
Нажмите «Создать веб-push-уведомление»: появится карточка.
-
Нажмите «Настройки» в карточке и заполните поля блока «Основное»:
Поле Что вводить Имя Название для вас; видно только администратору Заголовок Заголовок сообщения Сообщение Основной текст Ссылка Куда перейдёт покупатель при нажатии. Лучше путь внутри сайта: /product/123/или/shop/. Можно полный адресИконка Небольшое изображение рядом с заголовком (png, jpg, svg, webp, gif) -
По желанию — блок «Дополнительно»: Изображение (крупная картинка), Бейдж (маленький монохромный значок), Требуется взаимодействие (не исчезает, пока покупатель не закроет), Выключите звук, Повторный показ, Кнопки (не более двух кнопок; у каждой идентификатор действия, ссылка, текст и иконка).
-
Нажмите «Сохранить» внизу страницы.

Рис. 6.1. Редактор уведомления на тестовом стенде (тестовые значения; «Премиум» включён заглушкой лицензии). Снимок — фрагмент страницы.
Что должно получиться. Карточка сохранена и видна в списке (в ней имя и ссылки «Настройки» и «Удалить»); карточки можно переставлять перетаскиванием.
Если не получилось. Нет кнопки «Создать…» — на странице написано про «премиум-версию»: у вас редакция «База» или лицензия не активна.
Кнопка «Отправить» берёт данные карточки с экрана, даже если вы их ещё не сохранили.
Пишите текст так, чтобы он не раскрывал личных данных: экран телефона может увидеть другой человек.
Шаг 4. Отправьте уведомление
Когда это нужно. Нужно разослать сообщение подписчикам.
Где открыть. Меню → Push-уведомления → Push-уведомления.
Что нажать.
- Сначала проверьте на себе. Подпишитесь на свой сайт в своём браузере (шаг 1) и разошлите сообщение только если получатели согласны получать тест. Отправка идёт всем подписчикам витрины.
- Откройте карточку кнопкой «Настройки» (в списке у каждой карточки есть «Настройки» и «Удалить») и нажмите синюю кнопку «Отправить» вверху открытой карточки. Кнопка «Назад» возвращает к списку.
- Если выбран пункт «Все витрины», отправка идёт по каждой витрине, у которой есть адрес.
Что должно получиться. Возле кнопки появляется надпись «Отправлено!». На устройствах подписчиков — уведомление (если браузер его принял и показал).
Как понять, что отправка обработана — и чего это не значит.
| Что видите | Что значит |
|---|---|
| «Отправлено!» возле кнопки | Сервер ответил на запрос. Надпись появляется при любом ответе, даже если push-сервис отклонил сообщения или отправка по витрине не удалась; число получателей не показывается, доставка не подтверждается. Реальный итог виден только в журнале wa-log/pwa-push.log |
| «Ошибка!» с подсказкой «Подробности в консоли браузера» | Запрос не выполнен; подробности — в консоли браузера (для специалиста). Попробуйте ещё раз и загляните в журнал |
| Число подписчиков в плашке уменьшилось | Браузерный сервис ответил, что подписка недействительна (404 или 410), и приложение её удалило — это нормально |
| Уведомление пришло на ваш тестовый телефон | Это единственный надёжный признак доставки |
Важно различать:
- «Принято push-сервисом» ≠ «доставлено». Push-сервис (например, Google или Apple) подтверждает, что принял сообщение; будет ли оно показано, зависит от устройства, его настроек и сети. PWA не отслеживает показ и прочтение.
- Если подписчиков нет, нажатие всё равно показывает «Отправлено!»: сообщать некому. Проверьте число подписчиков в плашке.
- Журнал
wa-log/pwa-push.log(папкаwa-logна сервере) хранит сбои отправки и удаление недействительных подписок. В нём только короткий хеш адреса подписки, а не сам адрес и не ключи. Читать журнал может хостинг или разработчик.
Если не получилось. См. FAQ: не приходит push.
Управление подписчиками
На странице «Push-уведомления» в карточках и сверху есть дополнительные действия.
| Кнопка | Что делает | Когда нужна |
|---|---|---|
| «Clear all subscribers» | Удаляет всех подписчиков этой витрины. Они перестанут получать уведомления, пока не подпишутся заново | После осознанной смены ключей VAPID (глава 8) или по требованию. Необратимо без резервной копии |
| «Снять все персональные привязки» | Снимает привязки устройств покупателей для персональных уведомлений. Массовая рассылка не затрагивается | После восстановления базы из копии; при подозрении на утечку |
Сервер никогда не отказывает в удалении подписки. Но без «Премиум» блок подписки на витрине не показывается, и посетитель сам отписаться не сможет; подписки, созданные при «Премиум», остаются в настройках.
Адресные уведомления для интеграций
Что это. Возможность другого приложения или плагина вашего Webasyst отправить одно уведомление одному покупателю на устройство, которое покупатель сам подтвердил. Например, интеграция может сообщить покупателю об изменении статуса его заказа.
Чего здесь нет.
- В PWA нет формы «отправить покупателю», нет очередей, расписаний и автоматических повторов. Уведомление отправляет другое приложение.
- Это не автоматические рассылки PWA. Автоматизация — отдельный продукт, и её готовность с PWA 1.6.2 здесь не заявляется.
- Нет доставки гостям: только вошедшим в аккаунт покупателям с подтверждённым устройством.
Что должно быть. Редакция «Премиум», таблицы подписок в базе на InnoDB, включённое PWA на витрине, ключи VAPID и обновлённый Service Worker.
Как это выглядит для покупателя.
- Покупатель входит в аккаунт на витрине и подписывается на push.
- Рядом с подпиской появляется флажок «Получать уведомления о моих заказах на этом устройстве»; покупатель ставит его, и устройство привязывается к его аккаунту. Снять привязку можно тем же флажком.
- Если страница была открыта больше часа, флажок может показать ошибку: перезагрузите страницу.
Что делает владелец.
- Разрешает интеграцию. Меню → Push-уведомления → Push-уведомления → блок «Интеграции, которым разрешены персональные уведомления». Приложение появляется в списке после первого обращения для витрины, со статусом «Ожидает вашего решения»; нажмите «Разрешить». Разрешайте только тем, кому доверяете. «Отозвать» действует со следующего вызова.
- Ниже можно задать «Сколько дней помнить отправленные адресные уведомления» (7–90, по умолчанию 30) и нажать «Сохранить»: так покупатель не получит дубль, если отправляющее приложение повторит запрос.
Ограничения (кратко).
- Результат «принято» означает только «принято push-сервисом», не «доставлено».
- Выход покупателя из аккаунта в другом браузере может снять привязку не сразу (до 7 дней).
- Уведомление, уже принятое push-сервисом, может быть показано в течение часа после снятия привязки.
- Без InnoDB персональная доставка недоступна; ручная рассылка работает как обычно.
- Если вам нужны автоматические сообщения о заказах, обратитесь к разработчику интеграции: готовой кнопки в PWA для этого нет.
Что проверено, а что нет
| Что | Статус |
|---|---|
| Создание и отправка push, подписка в Chrome и Firefox на компьютере (с заглушкой лицензии, настоящие push-сервисы Google и Mozilla) | Проверялось разработчиком |
| Формат шифрования, принимаемый Apple (исправлен в 1.6.2) | Проверен автотестами; на настоящем iPhone не проверялся |
| Показ уведомления на телефонах | Не проверялось |
| «Премиум» с настоящей лицензией из Store | Не проверялось (у разработчика нет лицензии на собственный продукт) |
Публикация приложения в магазинах
PWA можно подготовить к размещению в Google Play, Microsoft Store и App Store через PWABuilder, но это отдельная процедура, не автоматическая функция PWA. Потребуются действующие аккаунты разработчиков, необходимые пакеты и модерация магазина.
- Настройте витрину, HTTPS, Manifest, иконки и Service Worker.
- Откройте PWABuilder и укажите URL витрины.
- Исправьте найденные сервисом требования и подготовьте пакет для нужной платформы.
- Следуйте действующим правилам выбранного магазина.
Дополнительно: инструкция разработчика Webasyst.