Интеграции
Готовые пакеты для популярных CMS и фреймворков: ключи в настройках, отправка одной строкой, вебхуки с проверкой подписи. Все они построены на серверных SDK и одном REST API. Ключи берутся в дашборде: Приложения → ваше приложение → Настройки → API-ключи (публичный pk_… — для страниц и приложений, секретный pd_… — только для сервера).
Пакеты публикуются. Пока плагины и обвязки не появились в каталогах (wordpress.org, Bitrix Marketplace, npm, PyPI, Packagist, RubyGems, Maven Central), берите их из каталога integrations/<название> репозитория PushData: плагин WordPress и модуль Битрикс ставятся архивом каталога, пакеты фреймворков — локальной зависимостью. Настройка ниже та же.| Платформа | Пакет | Что даёт |
|---|---|---|
| WordPress 6+ | плагин pushdata | кнопка подписки на Web Push, push всем подписчикам при публикации записи |
| 1С-Битрикс | модуль pushdata | подписка в публичной части, push при добавлении элемента инфоблока |
| Tilda | вебхук формы | заявка → контакт (+ запуск сценария), без кода |
| Laravel 10–13 | pushdata/laravel | канал уведомлений pushdata, фасад, middleware вебхуков |
| Symfony 6.4 / 7 | pushdata/symfony-notifier | транспорт Notifier pushdata:// |
| Django 4.2+ | django-pushdata | клиент из settings, send_notification(), view вебхуков + сигнал |
| Rails 6.1+ | pushdata-rails | config.pushdata, PushData::Rails.send_notification, concern вебхуков |
| Spring Boot 3 | ru.pushdata:pushdata-spring-boot-starter | бин PushData из pushdata.*, PushDataWebhooks |
| NestJS 10+ | @pushdata/nestjs | PushDataModule, PushDataService, PushDataWebhookGuard |
| ASP.NET Core | пакет PushData (NuGet) | services.AddPushData(apiKey) |
WordPress
- В дашборде: Провайдеры Push → Web Push → Сгенерировать ключи VAPID.
- Загрузите папку плагина
pushdataвwp-content/plugins/и активируйте. - Настройки → PushData: ID приложения, публичный ключ
pk_…, секретный ключpd_…(для отправки при публикации), при включённой проверке идентичности — секрет идентичности. - Вставьте шорткод
[pushdata_subscribe]в виджет или шаблон (или включите «Предлагать подписку автоматически»). Сайт должен работать по HTTPS. - Откройте сайт, подпишитесь — устройство появится в Устройства. Опубликуйте запись — push с заголовком, анонсом и ссылкой уйдёт всем подписчикам (один раз на запись; фильтр
pushdata_publish_notificationменяет или отменяет отправку).
Эталонный service worker плагин отдаёт с корня сайта (/pushdata-sw.js), вошедшие пользователи регистрируются как wp-<id> — им можно отправлять адресно: target: { user_ids: ['wp-42'] }.
1С-Битрикс
- Скопируйте модуль в
/bitrix/modules/pushdata/и установите его в Marketplace → Установленные решения (при установке/pushdata-sw.jsи/pushdata.jsкопируются в корень сайта,pushdata_identity.php— в/bitrix/tools/). - Настройки → Настройки продукта → Настройки модулей → PushData: ключи, автоподписка, ID инфоблоков, о новых элементах которых слать push.
- В шаблоне сайта — любой элемент с атрибутом
data-pushdata-subscribe(кнопка подписки). - Авторизованные пользователи регистрируются как
bx-<id>; новый активный элемент выбранного инфоблока → push всем подписчикам (заголовок = название, текст = анонс, ссылка = детальная страница).
Tilda
- Приложения → Настройки → API-ключи: секретный ключ
pd_…. - В Tilda: Настройки сайта → Формы → Webhook, URL
https://api.pushdata.ru/api/v1/integrations/tilda?key=pd_…(добавьте&workflow=<id сценария>, чтобы запускать сценарий для каждой заявки). При сохранении Tilda шлёт проверочный запрос — PushData отвечает{ "ok": true }. - В блоке формы: Контент → Приём данных → Webhook. Поля назовите
Name,Email,Phone(или Имя, Почта, Телефон). - Отправьте заявку: контакт появится в Контакты (e-mail или телефон — внешний id, остальные поля — в
metadata), запуск — в сценарии.
Ключ в URL — потому что Tilda не умеет ставить заголовки; URL хранится только в настройках Tilda, при утечке ключ перевыпускается в настройках приложения. Интеграции, которые умеют заголовки, используют Authorization: ApiKey pd_… или X-Api-Key на том же эндпоинте (receiveTildaForm в OpenAPI).
Laravel
composer require pushdata/laravel && php artisan vendor:publish --tag=pushdata-config.env: PUSHDATA_API_KEY=pd_… (PUSHDATA_IDENTITY_SECRET, PUSHDATA_WEBHOOK_SECRET — по необходимости).
class OrderShipped extends Notification
{
public function via(object $notifiable): array { return ['pushdata']; }
public function toPushData(object $notifiable): PushDataMessage
{
return PushDataMessage::create('Заказ отправлен', "Заказ №{$this->order->id} уже в пути.")
->data(['orderId' => (string) $this->order->id])
->clickAction(route('orders.show', $this->order));
}
}
$user->notify(new OrderShipped($order)); // на устройства пользователя (routeNotificationForPushData() или ключ модели)
PushData::sendNotification(['title' => 'Скидка', 'body' => 'Только сегодня.', 'target' => ['tags' => ['beta']]]);Вебхуки: Route::post('/webhooks/pushdata', …)->middleware(VerifyPushDataWebhook::class)->withoutMiddleware(VerifyCsrfToken::class).
Symfony
composer require pushdata/symfony-notifier.env: PUSHDATA_DSN=pushdata://pd_…@default; в notifier.yaml — texter_transports: { pushdata: '%env(PUSHDATA_DSN)%' }; фабрика PushData\Symfony\Notifier\PushDataTransportFactory с тегом texter.transport_factory.
$texter->send((new PushMessage('Заказ отправлен', 'Заказ №123 уже в пути.'))
->options(PushDataOptions::toUser((string) $user->getId())->data(['orderId' => '123'])));Django
pip install django-pushdatasettings.py: INSTALLED_APPS += ["django_pushdata"], PUSHDATA = {"API_KEY": os.environ["PUSHDATA_API_KEY"]}.
from django_pushdata import client, send_notification
send_notification("Заказ отправлен", "Заказ №123 уже в пути.", user_ids=[str(order.user_id)], data={"orderId": "123"})
client().upsert_contact(str(user.pk), email=user.email)Вебхуки: path("webhooks/pushdata/", PushDataWebhookView.as_view()) + сигнал django_pushdata.signals.webhook_received.
Rails
gem "pushdata-rails" # bundle install && rails g pushdata:installconfig/initializers/pushdata.rb: config.pushdata.api_key = ENV["PUSHDATA_API_KEY"].
PushData::Rails.send_notification("Заказ отправлен", "Заказ №#{order.id} уже в пути.", user_ids: [order.user_id], data: { orderId: order.id.to_s })
PushData::Rails.client.upsert_contact(external_id: user.id.to_s, email: user.email)Вебхуки: include PushData::Rails::Webhook в контроллере.
Spring Boot
<dependency><groupId>ru.pushdata</groupId><artifactId>pushdata-spring-boot-starter</artifactId><version>0.1.0</version></dependency>application.yml: pushdata.api-key: ${PUSHDATA_API_KEY} (identity-secret, webhook-secret — по необходимости).
@Autowired PushData pushdata;
pushdata.sendNotification(Map.of("title", "Заказ отправлен", "body", "Заказ №123 уже в пути.", "target", Map.of("user_ids", List.of("user-123"))));Вебхуки: бин PushDataWebhooks — verify(body, signature); identityHash(userId) — для клиентских SDK.
NestJS
npm install @pushdata/nestjs @pushdata/node// app.module.ts
PushDataModule.forRoot({ apiKey: process.env.PUSHDATA_API_KEY!, webhookSecret: process.env.PUSHDATA_WEBHOOK_SECRET })
// любой сервис
@Injectable()
export class OrdersService {
constructor(private readonly pushdata: PushDataService) {}
async shipped(order: Order) {
await this.pushdata.sendNotification({ title: 'Заказ отправлен', body: `Заказ №${order.id} уже в пути.`, target: { user_ids: [String(order.userId)] } })
}
}Вебхуки: @UseGuards(PushDataWebhookGuard) (приложение создаётся с rawBody: true).
ASP.NET Core
dotnet add package PushDatabuilder.Services.AddPushData(builder.Configuration["PushData:ApiKey"]!);
await pushdata.SendNotificationAsync(new JsonObject { ["title"] = "Заказ отправлен", ["body"] = "Заказ №123 уже в пути.", ["target"] = new JsonObject { ["user_ids"] = new JsonArray("user-123") } });Вебхуки: PushDataClient.VerifyWebhookSignature(rawBody, Request.Headers["X-PushData-Signature"], secret).
Своя интеграция
Всё, что делают пакеты, — вызовы REST API по спецификации OpenAPI: отправка, контакты, сценарии, вебхуки. Примеры на одиннадцати языках — в Серверных SDK; контракт устройств и событий — в Уведомлениях.