Webhook — механизм получения уведомлений об определённых событиях.
Для включения webhook зайдите в раздел "Настройки аккаунта" -> "API"
Далее укажите URL, на который будут отправляться уведомления, и какие именно события нужно передавать.
Список событий, по которым срабатывает webhook в сервисе SMTP, относительно отправки письма:
- Доставлено
- Не доставлено
- Отклонено (bounce)
- Открыто
- Переход по ссылке
- Отмечено сервером как спам
- Отмечено пользователем как спам
При срабатывании webhook, мы отсылаем на указанный клиентом url данные
тип данных: JSON
тип запроса: POST
Данные отсылаются каждую минуту или же при достижении лимита в 1000 событий (но эти 2 критерия могут еще измениться в процессе тестирования).
Основной формат пересылаемых данных:
[ { "event": "event_name", "timestamp": 1490954061, "recipient": "john.doe@sendpulse.com", "sender": "doe.john@sendpulse.com", "subject": "hello world" } ]
Если событий несколько, то они будут сгруппированы в один или несколько запросов
[ { "event": "event_name", "timestamp": 1490954061, "recipient": "john.doe@sendpulse.com", "sender": "doe.john@sendpulse.com", "subject": "hello world" }, { "event": "event_name", "timestamp": 1490954062, "recipient": "john.doe@sendpulse.com", "sender": "doe.john@sendpulse.com", "subject": "hello world" }, { "event": "event_name", "timestamp": 1490954063, "recipient": "john.doe@sendpulse.com", "sender": "doe.john@sendpulse.com", "subject": "utf8_hello_world" }, ]
Форматы запросов, в зависимости от события:
Доставлено
[ { "smtp_server_response_code": "250", "smtp_server_response_subcode": "", "sender": "john.doe@sendpulse.com", "smtp_server_response": "custom_text_response_from_recipients_server", "timestamp": 1490953933, "recipient": "doe.john@sendpulse.com", "event": "delivered", "subject": "utf8_hello_world" } ]
Не доставлено
[ { "smtp_server_response_code": "554", "smtp_server_response_subcode": "5.7.1", "sender": "john.doe@sendpulse.com", "smtp_server_response": "custom_text_response_from_recipients_server", "timestamp": 1490956117, "recipient": "doe.john@sendpulse.com", "event": "undelivered", "subject": "utf8_hello_world" } ]
Отклонено (bounce)
[ { "smtp_server_response_code": "550", "smtp_server_response_subcode": "5.1.1", "sender": "john.doe@sendpulse.com", "smtp_server_response": "custom_text_response_from_recipients_server", "timestamp": 1490955249, "recipient": "doe.john@sendpulse.com", "event": "bounced", "subject": "utf8_hello_world" } ]
Открыто
[ { "event": "opened", "timestamp": 1490962764, "recipient": "doe.john@sendpulse.com", "sender": "john.doe@sendpulse.com", "subject": "utf8_hello_world" } ]
Переход по ссылке
[ { "event": "clicked", "timestamp": 1490964928, "recipient": "doe.john@sendpulse.com", "sender": "john.doe@sendpulse.com", "subject": "utf8_hello_world" } ]
Отмечено пользователем как спам
[ { "event": "spam_by_user", "timestamp": 1490964607, "recipient": "doe.john@sendpulse.com", "sender": "john.doe@sendpulse.com", "subject": "utf8_hello_world" } ]
Отмечено сервером как спам
[ { "event": "spam_by_server", "smtp_server_response": "custom_text_response_from_recipients_server", "timestamp": 1490964607, "recipient": "doe.john@sendpulse.com", "sender": "john.doe@sendpulse.com", "subject": "utf8_hello_world" } ]
Пример скрипта, принимающего запрос, на языке PHP
<?php $json_string = file_get_contents('php://input'); $data_array = json_decode($json_string, true); ?>