Webhook-запросы

Когда происходит событие, Emailit отправляет HTTP POST запрос на настроенный URL вашего webhook. На этой странице описывается формат запроса, заголовки и поведение при доставке.

Формат запроса

Все webhook-запросы отправляются как POST запросы с JSON-телом:

  • Метод: POST
  • Content-Type: application/json
  • Таймаут: 30 секунд

Заголовки

Каждый webhook-запрос включает следующие заголовки:

ЗаголовокОписание
Content-Typeapplication/json
User-AgentEmailit-Webhooks/2.0
X-Emailit-SignatureHMAC-SHA256 подпись для проверки подлинности
X-Emailit-TimestampUnix-метка времени создания подписи запроса

Тело запроса

Тело запроса содержит данные события в формате JSON:

{
  "event_id": "evt_2bH7kNwP5mQaV1sXgIdKe6pZr",
  "type": "email.delivered",
  "data": {
    "object": {
      "id": "em_4yM2nTvR8oPcX3uZiKeLg7sB",
      "object": "email",
      ...
    }
  }
}

Ожидаемый ответ

Ваша конечная точка должна вернуть статус-код 2xx (например, 200, 201, 204) для подтверждения получения. Любой другой статус-код рассматривается как ошибка.

Политика повторных попыток

Если ваша конечная точка не отвечает статус-кодом 2xx в течение 30 секунд, Emailit повторит доставку согласно следующему расписанию:

ПопыткаЗадержка
05 секунд
15 минут
230 минут
32 часа
45 часов
510 часов
624 часа

После попытки 6 (всего 7 попыток) webhook автоматически отключается. Вы можете повторно включить его в панели управления Emailit.

Порядок доставки

Webhook-события доставляются практически в реальном времени, но не гарантируется их доставка в правильном порядке. Используйте event_id и временные метки в данных события для обработки порядка в вашем приложении.

IP-адреса

Webhook-запросы отправляются с инфраструктуры Emailit. Если вам необходимо добавить IP-адреса в белый список, обратитесь в службу поддержки за актуальным списком исходящих IP-адресов.

Рекомендации

  • Отвечайте быстро — Обрабатывайте webhook асинхронно и немедленно возвращайте 2xx. Выполняйте тяжёлые операции в фоновых задачах.
  • Обрабатывайте дубликаты — Используйте event_id для исключения повторных событий. Одно и то же событие может быть доставлено несколько раз при повторных попытках.
  • Проверяйте подписи — Всегда проверяйте заголовок X-Emailit-Signature, чтобы убедиться, что запрос пришёл от Emailit. См. Подпись запроса.
Локализовано с помощью ИИ