Перейти к содержимому

Вебхуки (Webhooks)

Вебхук — это пользовательский публичный URL, привязанный к каналу. Каждый вебхук создаётся в админке и работает независимо: можно создать сколько угодно вебхуков на один канал, у каждого свой URL и свои настройки.

Вебхуки не требуют заголовков — токен зашит в URL. Поэтому они работают прямо из браузера через fetch() без CORS-preflight, из CI, из IoT-железок, из любых no-code платформ (n8n, Zapier, IFTTT, Make).

РежимЧто делаетКогда использовать
СтатическийОтправляет заранее заданный текст. Тело запроса игнорируется.«Кнопочные» события: «Курьер вышел», «Билд упал», «Тревога».
ДинамическийПринимает title/message/priority из запроса; настройки = дефолты.Логи, мониторинг, формы на сайте, любые вызовы со своим текстом.
  1. Откройте админку: https://app.notifly.ru/.
  2. Создайте канал в разделе «Каналы» (если ещё нет).
  3. Перейдите в раздел «Вебхуки» в боковом меню → «Создать вебхук».
  4. Заполните:
    • Название — ярлык для удобства.
    • Канал — куда писать сообщения.
    • Режим — статический или динамический.
    • Заголовок / Текст / Приоритет — для статического это содержимое сообщения; для динамического — значения по умолчанию.

После создания вы увидите URL вида:

https://api.notifly.ru/webhook/W<...>

И готовые сниппеты на curl / fetch / GET. Кнопка ✈️ рядом с вебхуком отправляет тестовое сообщение.

Самый простой способ: один URL = одно фиксированное уведомление. Достаточно GET или POST без тела.

Окно терминала
# curl
curl -X POST "https://api.notifly.ru/webhook/W<TOKEN>"
# или просто GET — удобно открывать из адресной строки браузера / закладки
curl "https://api.notifly.ru/webhook/W<TOKEN>"
// JS из браузера
fetch("https://api.notifly.ru/webhook/W<TOKEN>", {method: "POST"});

Идеально для:

  • кнопок «бытового» автоматизированного уведомления (Home Assistant, ESP32);
  • триггеров в no-code (Zapier, n8n, IFTTT);
  • закладок в браузере: открыл — отправилось.

Принимает message (обязательно), title, priority любым способом: JSON (Content-Type: application/json), form-data, query-параметры.

Настройки вебхука (заголовок/текст/приоритет) используются как значения по умолчанию — если поле не передано, возьмётся из настроек.

Окно терминала
curl -X POST "https://api.notifly.ru/webhook/W<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"title":"Деплой","message":"Бэкенд раскатан","priority":5}'
Окно терминала
curl "https://api.notifly.ru/webhook/W<TOKEN>" \
-F "title=Деплой" -F "message=Бэкенд раскатан" -F "priority=5"
https://api.notifly.ru/webhook/W<TOKEN>?title=Hello&message=ping
await fetch("https://api.notifly.ru/webhook/W<TOKEN>", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({
title: "Заявка с сайта",
message: "Иван оставил телефон +7…",
priority: 6,
}),
});
import requests
requests.post("https://api.notifly.ru/webhook/W<TOKEN>", json={
"title": "Новый платёж",
"message": "₽12 500 от user@example.com",
"priority": 7,
})
Окно терминала
Invoke-RestMethod -Uri "https://api.notifly.ru/webhook/W<TOKEN>" -Method POST -Body @{
title = "Сборка упала"
message = "build #482 failed"
priority = 8
}
- name: Notify on failure
if: failure()
run: |
curl -fsS -X POST "https://api.notifly.ru/webhook/${{ secrets.NOTIFLY_WEBHOOK }}" \
-H "Content-Type: application/json" \
-d "{\"title\":\"CI упал\",\"message\":\"${{ github.repository }}@${{ github.sha }}\",\"priority\":8}"
  • Токен вебхука в URL = доступ на отправку только в один канал.
  • Если токен утёк — удалите вебхук в админке, его URL сразу перестанет работать. Остальные вебхуки канала продолжат работать.
  • Не публикуйте URL вебхука в открытом коде, если канал критичный.
  • Вебхуки можно делать «одноразовыми»: создал → использовал → удалил.
POST /messagePOST /webhook/:token
Токенв заголовке X-Notifly-Keyв URL
CORS-preflightда (кастомный заголовок)нет
Из браузератребует preflightработает напрямую
Текст сообщениявсегда из запросаможно задать заранее (статический режим)
Сколько на канал1 токенсколько угодно — у каждого свой текст и режим

Для серверов и CLI оба варианта работают; вебхуки удобнее, когда нужно:

  • отправить заранее заданный текст одним нажатием;
  • сделать несколько разных «триггеров» в один канал;
  • интегрировать без настройки заголовков (no-code, браузер, IoT).