Skip to content

Глава 6. Триггеры и автоматизация

Воркфлоу может запускаться вручную, по расписанию, через HTTP или в ответ на событие в другом сервисе. Нода, с которой начинается воркфлоу, называется триггером. Только одна нода в воркфлоу может быть триггером — она всегда стоит первой.

Manual Trigger — запуск вручную

Используется при разработке и тестировании. Воркфлоу запускается кнопкой Test workflow в редакторе или кнопкой в меню активных воркфлоу.

Не несёт данных — первая нода после него должна сама получить данные (HTTP Request, Read File и т.д.).

Schedule Trigger — расписание

Аналог cron. Запускает воркфлоу автоматически по заданному времени.

Режим Interval (каждые N единиц)

Поля:

  • Every: число (например, 30)
  • Unit: Seconds / Minutes / Hours / Days / Weeks / Months

Пример: воркфлоу каждые 15 минут:

Every: 15
Unit: Minutes

Режим Cron Expression

Для точного управления используйте cron-выражение из 5 полей:

┌───── минута (0-59)
│ ┌───── час (0-23)
│ │ ┌───── день месяца (1-31)
│ │ │ ┌───── месяц (1-12)
│ │ │ │ ┌───── день недели (0-6, 0=Вс)
│ │ │ │ │
* * * * *

Примеры:

ВыражениеКогда
0 9 * * 1-5В 9:00 по будням
0 */6 * * *Каждые 6 часов
30 18 * * 5В 18:30 по пятницам
0 0 1 * *В полночь 1-го числа каждого месяца
*/5 * * * *Каждые 5 минут

Часовой пояс

Schedule Trigger выполняется в UTC по умолчанию. Измените глобальный часовой пояс через env-переменную GENERIC_TIMEZONE=Europe/Moscow или через Settings → n8n settings → Timezone в Cloud-версии.

Режим Custom (конкретные даты)

Задайте конкретное время через интерфейс. Можно добавить несколько расписаний в рамках одного триггера кнопкой Add Rule.

Webhook Trigger — HTTP-вызов

Webhook позволяет запускать воркфлоу через HTTP-запрос от любого внешнего сервиса. GitHub, Stripe, Telegram, Shopify — все они умеют отправлять webhook-уведомления.

URL вебхука

При создании ноды Webhook n8n генерирует уникальный URL:

Test:       https://your-n8n.com/webhook-test/abc123-uuid
Production: https://your-n8n.com/webhook/abc123-uuid

Test URL — активен только пока открыт редактор и нажата кнопка Listen for Test Event. Production URL — активен всегда, пока воркфлоу активирован.

Настройка ноды

ПараметрОписание
HTTP MethodGET, POST, PUT, PATCH, DELETE (выбрать один или All Methods)
PathКастомный путь вместо UUID: /github-events
AuthenticationЗащита вебхука (Header Auth, Basic Auth, JWT)
RespondКогда отправить ответ вызывающей стороне

Режимы ответа (Respond)

Immediately — вернуть {"status": "ok"} сразу при получении запроса, не дожидаясь конца воркфлоу. Правильный выбор для большинства вебхуков.

When Last Node Finishes — вернуть данные, которые вернула последняя нода воркфлоу. Используйте, когда вызывающая сторона ожидает результат (синхронный вебхук).

Using 'Respond to Webhook' Node — ответ отправляется явно через специальную ноду Respond to Webhook с произвольным статусом, заголовками и телом.

Что приходит в данных вебхука

json
{
  "headers": {
    "content-type": "application/json",
    "x-github-event": "push"
  },
  "params": {},
  "query": { "source": "github" },
  "body": {
    "ref": "refs/heads/main",
    "repository": { "name": "my-repo" }
  }
}

Доступ в выражениях:

{{ $json.body.repository.name }}
{{ $json.headers['x-github-event'] }}

Защита вебхука

Чтобы только ваш сервис мог вызвать вебхук, добавьте проверку подписи через ноду Code:

javascript
// Проверка HMAC-подписи (GitHub webhook secret)
const crypto = require('crypto');
const secret = 'your-webhook-secret';
const payload = JSON.stringify($input.item.json.body);
const signature = $input.item.json.headers['x-hub-signature-256'];
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(payload).digest('hex');

if (signature !== expected) {
  throw new Error('Invalid webhook signature');
}
return $input.all();

Email Trigger (IMAP) — новые письма

Запускается при получении нового письма в почтовом ящике через протокол IMAP.

Настройка Credential типа IMAP:

Host: imap.gmail.com
Port: 993
SSL: yes
User: your@gmail.com
Password: app-password (не основной пароль!)

Параметры ноды:

ПараметрОписание
MailboxПапка: INBOX, Spam, Sent, или кастомная
ActionMark as Read / Delete after receiving
FormatSimple (только текст/HTML) / RAW (полное письмо)

Gmail

Gmail требует App Password, а не основной пароль аккаунта. Включите двухфакторную аутентификацию, затем создайте App Password в настройках безопасности Google аккаунта.

Сравнение триггеров

ТриггерКогда использовать
ManualРазработка, тестирование, одноразовые задачи
ScheduleРегулярные отчёты, синхронизация данных, уведомления по времени
WebhookРеакция на события в GitHub, Stripe, Telegram и других сервисах
Email (IMAP)Обработка входящей почты, парсинг заказов из писем
Chat TriggerОтветы на сообщения в Telegram, Slack, Discord

Практика: GitHub CI/CD уведомления

Когда в репозитории GitHub завершается GitHub Actions workflow, отправлять уведомление в Telegram.

Шаг 1 — создайте Webhook в n8n (метод: POST, path: github-actions).

Шаг 2 — в GitHub → Repository → Settings → Webhooks добавьте:

Payload URL: https://your-n8n.com/webhook/github-actions
Content type: application/json
Events: ✓ Workflow runs

Шаг 3 — воркфлоу в n8n:

Webhook
  → IF: {{ $json.body.action }} equals "completed"
      true → IF: {{ $json.body.workflow_run.conclusion }} equals "failure"
          true  → Telegram (🔴 Сборка упала: {{ $json.body.workflow_run.name }})
          false → Telegram (✅ Сборка успешна: {{ $json.body.workflow_run.name }})
      false → (ничего не делаем)

Activate workflow

Не забудьте активировать воркфлоу (переключатель в верхнем правом углу). Неактивный воркфлоу не реагирует на webhook-запросы и расписание.

Неофициальная документация. n8n — продукт n8n GmbH.