Выполнение шага
Выберите момент продолжения автоматизации и передайте результат выполнения из приложения.
Откройте созданный шаг приложения.
Настройте продолжение автоматизации
Теперь определите, что произойдёт после выполнения шага. Откройте вкладку «Выполнение».
Сначала в блоке «Как продолжить автоматизацию» выберите выходы шага:
- «Один выход „Далее“» — у узла будет один выход, а webhook не должен возвращать
branch; - «Фиксированные ветки» — разработчик заранее задаёт от 2 до 20 веток, их постоянные ключи и названия на двух языках; webhook возвращает ключ выбранной ветки в
branch; - «Ветки после настройки» — собственная встроенная форма создаёт ветки отдельно для каждого настроенного узла; webhook возвращает один из сохранённых ключей.
После первой публикации способ продолжения изменить нельзя. У опубликованной фиксированной ветки нельзя менять технический ключ или передавать его другой ветке.
Затем в блоке «Когда продолжить автоматизацию» укажите, когда можно переходить к выбранному выходу:
- «Сразу после отправки webhook» — Senler ставит webhook в очередь и сразу идёт по выходу «Далее». Ответ приложения и поля результата не используются. Этот вариант подходит для команды, итог которой не влияет на дальнейшую схему;
- «После ответа webhook» — Senler ждёт HTTP-ответ до 60 секунд и берёт из него ветку и результат. При ошибке или таймауте повтор шага контролирует Runner;
- «После запроса от приложения» — webhook только запускает долгую операцию. Вместе с запросом приложение получает одноразовые URL и токен завершения, а затем отдельным запросом возвращает результат в течение 7 дней.
Немедленный режим совместим только с выходом «Далее» и шагом без полей результата. Для веток или данных результата выберите ожидание ответа webhook либо отдельного запроса приложения.

В блоке «Фиксированные ветки» нажмите «Добавить ветку». Укажите ключ ветки, название на русском и название на английском. Удалить ветку можно, пока в списке остаётся не меньше двух.

Если выбранные режимы несовместимы, форма покажет сообщение с объяснением и не применит выбор. «Понятно» закрывает это сообщение; настройки нужно исправить отдельно.

Способ завершения можно изменить и после публикации. Новые узлы получат текущий вариант, а уже добавленные в схемы узлы сохранят прежний, поэтому после такого изменения проверьте отдельно новую и существующую автоматизацию.
Обработайте webhook
При выполнении шага Senler отправляет на указанный URL POST-запрос. В режимах «Сразу после отправки webhook» и «После запроса от приложения» доставка ставится в очередь; в режиме «После ответа webhook» Senler удерживает запрос до ответа, но не более 60 секунд.
{
"event_id": "event-id",
"idempotency_key": "automation-task-id",
"event_type": "automation_step",
"timestamp": "2026-08-20T08:00:00.000Z",
"app_id": "app-id",
"installation_id": "installation-id",
"project_id": "project-id",
"automation_id": "automation-id",
"run_id": "run-id",
"task_id": "task-id",
"node_id": "node-id",
"lead_id": null,
"dialog_id": null,
"channel_id": null,
"is_test": false,
"channel_type": null,
"platform_user_id": null,
"step_id": "step-id",
"step_name": "create_deal",
"parameters": {
"amount": 1500
},
"configuration": {
"pipeline_id": "sales"
}
}
is_test равен true, когда шаг выполняется в тестовом диалоге редактора. В таком запуске поля канала и платформенного пользователя могут быть null; не записывайте тестовые данные как боевые. Поля контекста лида и диалога также могут быть null, особенно в фоновой автоматизации. Запрос подписывается общим секретом приложения по правилам webhook приложения. Проверяйте подпись и допустимый возраст запроса до обработки данных.
В режиме «После ответа webhook» ответ должен быть JSON-объектом. Для шага с ветками верните branch, а объявленные данные конструктора поместите в result:
{
"branch": "created",
"result": {
"deal_id": "deal-42"
}
}
Для одного выхода не возвращайте branch. Пустое тело допустимо, только если шагу не нужны ветка и обязательные поля результата. Невалидный JSON, неизвестная ветка, неправильный тип результата или ошибка webhook завершают шаг ошибкой.
В режиме «Сразу после отправки webhook» Senler не читает ответ: процесс уже продолжился через выход «Далее».
В режиме «После запроса от приложения» исходный webhook дополнительно содержит объект completion:
{
"method": "PUT",
"url": "https://api.senler.io/api/automation-step-executions/task-id/completion",
"token": "one-time-execution-token",
"expires_at": "2026-08-27T08:00:00.000Z"
}
После завершения долгой операции отправьте PUT на completion.url, передайте токен как Authorization: Bearer <completion.token> и укажите успешный результат:
{
"status": "succeeded",
"branch": "created",
"result": {
"deal_id": "deal-42"
}
}
Для неуспешного завершения передайте status: "failed", стабильный error_code и безопасный error_message. Успешно принятый запрос возвращает { "accepted": true }. URL и токен относятся только к одному выполнению и перестают действовать после срока из expires_at; не сохраняйте токен как общий секрет приложения.
Доставка или задача могут выполняться повторно, поэтому внешнее действие должно быть идемпотентным. Используйте idempotency_key из исходного webhook, чтобы повтор не создал дубликат во внешней системе.