Сценарии
Сценарии — это визуальные конвейеры автоматизации, определяющие, как и когда отправляются уведомления. Создавайте их в редакторе Приложения → Сценарии — свободном холсте с узлами.
Типы узлов
Триггер (Trigger)
Каждый сценарий начинается с узла «Триггер». Он создаётся автоматически и не может быть удалён. Триггер срабатывает при вызове triggerWorkflow через GraphQL или POST /api/v1/workflows/:id/trigger через REST.
Отправка (Send)
Отправляет уведомление через настроенный канал.
| Параметр | Описание |
|---|---|
| Канал | Push (APNs, FCM, Web Push — без канала) или один из каналов приложения: Email, SMS, Telegram, MAX, In-App |
| Шаблон | Шаблон выбранного типа канала; тема и текст подставляют поля контакта и payload запуска |
| Получатель | Всегда контакт, запустивший сценарий: его устройства для push, email / phone / maxUserId для каналов |
| Категория | Необязательно: контакты, отключившие категорию для этого канала, пропускаются |
Задержка (Delay)
Приостанавливает выполнение на заданный период перед переходом к следующему узлу.
| Параметр | Описание |
|---|---|
| Duration | Задержка в секундах, минутах, часах или днях |
Фильтр (Filter)
Продолжает сценарий по условию на основе значения поля.
| Параметр | Описание |
|---|---|
| Field | Ключ payload запуска (plan), поле контакта (locale, contact.email) или ключ metadata контакта (plan, contact.metadata.plan); без префикса ищется сначала в payload, затем в metadata и полях контакта |
| Operator | eq, neq, contains |
| Value | Значение для сравнения |
Если условие не выполнено, сценарий завершается без выполнения последующих узлов.
Построение сценария
- Откройте Приложения → Сценарии и нажмите Новый сценарий
- Перетащите узлы из левой палитры на холст
- Соедините узлы, протянув связь от правого разъёма одного узла к левому разъёму следующего
- Кликните узел, чтобы настроить его в правой панели
- Нажмите Сохранить по завершении
- Установите статус сценария «Активен», чтобы разрешить запуск
Запуск сценария
mutation {
triggerWorkflow(input: {
workflowId: "019c9a99-8aad-77b4-b2b2-719f3f8e0610"
subscriberId: "019c9359-fe1d-73bc-90fd-594d284d24f3"
payload: {
name: "John"
orderId: "ORD-001"
}
# Необязательно: повторный запуск с тем же ключом вернёт уже начатый
# прогон вместо повторного выполнения сценария.
idempotencyKey: "order-ORD-001-confirmation"
}) {
id
status
startedAt
}
}Из вашего бэкенда то же самое одним REST-вызовом (контакт — по вашему external_id или по PushData-id; ответ 202):
curl -X POST https://api.pushdata.ru/api/v1/workflows/WORKFLOW_ID/trigger \
-H "Authorization: ApiKey pd_ВАШ_СЕКРЕТНЫЙ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"contact_external_id":"user-123","payload":{"name":"Иван","orderId":"ORD-001"},"idempotency_key":"order-ORD-001-confirmation"}'{ "execution_id": "0192…", "workflow_id": "019c…", "status": "pending", "started_at": "2026-09-14T12:00:00.000Z" }Правила
- Сценарий должен быть Активен, чтобы его можно было запустить (иначе
409 workflow_inactive) - Если у какого-либо шага SEND нет жёстко заданного получателя,
subscriberIdобязателен - Объект
payloadдоступен внутри шаблонов как{{ variable }}; это должен быть JSON-объект не больше 64 КБ (иначе400) idempotencyKey(≤ 200 символов, уникален в пределах сценария) делает запуск безопасным для повторов: тот же ключ возвращает существующий прогон- Подписчик должен быть контактом приложения сценария
Порядок выполнения
Сценарий — линейный пайплайн: шаги выполняются один за другим в порядке цепочки, нарисованной на холсте (по связям, а не по визуальному расположению). Не прошедший FILTER завершает прогон со статусом filtered; ветвлений и шага digest нет. Прогон запускается только через triggerWorkflow (API или дашборд); событийных и cron-триггеров нет. Используйте раздел Запуски для отслеживания истории выполнения.