Webhook-запросы
Когда происходит событие, Emailit отправляет HTTP POST запрос на настроенный URL вашего webhook. На этой странице описывается формат запроса, заголовки и поведение при доставке.
Формат запроса
Все webhook-запросы отправляются как POST запросы с JSON-телом:
- Метод:
POST - Content-Type:
application/json - Таймаут: 30 секунд
Заголовки
Каждый webhook-запрос включает следующие заголовки:
| Заголовок | Описание |
|---|---|
Content-Type | application/json |
User-Agent | Emailit-Webhooks/2.0 |
X-Emailit-Signature | HMAC-SHA256 подпись для проверки подлинности |
X-Emailit-Timestamp | Unix-метка времени создания подписи запроса |
Тело запроса
Тело запроса содержит данные события в формате JSON:
{
"event_id": "evt_2bH7kNwP5mQaV1sXgIdKe6pZr",
"type": "email.delivered",
"data": {
"object": {
"id": "em_4yM2nTvR8oPcX3uZiKeLg7sB",
"object": "email",
...
}
}
}
Ожидаемый ответ
Ваша конечная точка должна вернуть статус-код 2xx (например, 200, 201, 204) для подтверждения получения. Любой другой статус-код рассматривается как ошибка.
Политика повторных попыток
Если ваша конечная точка не отвечает статус-кодом 2xx в течение 30 секунд, Emailit повторит доставку согласно следующему расписанию:
| Попытка | Задержка |
|---|---|
| 0 | 5 секунд |
| 1 | 5 минут |
| 2 | 30 минут |
| 3 | 2 часа |
| 4 | 5 часов |
| 5 | 10 часов |
| 6 | 24 часа |
После попытки 6 (всего 7 попыток) webhook автоматически отключается. Вы можете повторно включить его в панели управления Emailit.
Порядок доставки
Webhook-события доставляются практически в реальном времени, но не гарантируется их доставка в правильном порядке. Используйте event_id и временные метки в данных события для обработки порядка в вашем приложении.
IP-адреса
Webhook-запросы отправляются с инфраструктуры Emailit. Если вам необходимо добавить IP-адреса в белый список, обратитесь в службу поддержки за актуальным списком исходящих IP-адресов.
Рекомендации
- Отвечайте быстро — Обрабатывайте webhook асинхронно и немедленно возвращайте
2xx. Выполняйте тяжёлые операции в фоновых задачах. - Обрабатывайте дубликаты — Используйте
event_idдля исключения повторных событий. Одно и то же событие может быть доставлено несколько раз при повторных попытках. - Проверяйте подписи — Всегда проверяйте заголовок
X-Emailit-Signature, чтобы убедиться, что запрос пришёл от Emailit. См. Подпись запроса.