Як підключити вебхуки для транзакційних листів
Webhook — механізм отримання повідомлень про певні події. Ви можете налаштувати оповіщення собі в систему про доставлюваність листів та активність підписників.
Як створити вебхук
Щоб підключити вебхуки транзакційних листів SMTP, перейдіть в розділ Налаштування облікового запису у вкладку API і натисніть Створити webhook (Create a webhook).
Вкажіть URL-адресу вашого обробника, на яку потрібно надсилати події. Також виберіть, які саме події потрібно передавати.
Список подій, за якими спрацьовує webhook у сервісі SMTP щодо відправки листа:
Доставлено (Delivered) | Лист успішно доставлено до одержувача. |
Не доставлено (Not delivered) | Лист не вдалося доставити до одержувача. |
Відкрито (Open) | Одержувач відкрив лист. |
Перехід по посиланню (Click on a link) | Одержувач натиснув на посилання, яке міститься у листі. |
Відмічено як спам (Marked as spam) | Одержувач позначив лист як спам та відписався |
Відписався (Unsubscribed) | Одержувач відписався від отримання подальших листів. |
Перепідписався (Resubscribed) | Відписаний раніше одержувач підтвердив підписку в листі, яке було відправлено через метод Resubscribe a recipient. |
Помилка Hard bounce (Hard bounces) | Лист не вдалося доставити через постійну помилку. Причиною може бути неіснуюча або невалідна електрона адреса. |
Помилка Soft bounce (Soft bounces) | Лист не вдалося доставити через тимчасову помилку. Причини можуть включати переповнений поштовий ящик або тимчасові проблеми з сервером одержувача. |
Формат даних, що надсилаються
Вебхук спрацьовує кожні 30 секунд або якщо зібрано 500 подій для відправки.
При спрацюванні вебхука SendPulse надсилає на вказаний URL POST запит із JSON типом даних.
Дані надсилаються в наступному форматі:
[
{
"event": "event_name",
"timestamp": 1490954061,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
}
]
Якщо подій кілька, вони будуть згруповані в один або кілька запитів:
[
{
"event": "event_name",
"timestamp": 1490954061,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
},
{
"event": "event_name",
"timestamp": 1490954062,
"message_id": 1149317311,
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
},
{
"event": "event_name",
"timestamp": 1490954063,
"message_id": 1149317311,
"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,
"message_id": 1149317311,
"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,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"event": "undelivered",
"subject": "utf8_hello_world"
}
]
Відкрито:
[
{
"event": "opened",
"timestamp": 1490962764,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Перехід по посиланню:
[
{
"event": "clicked",
"timestamp": 1490964928,
"message_id": 1149317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Відписався:
[
{
"event": "unsubscribed",
"recipient": "john.doe@sendpulse.com",
"sender": "doe.john@sendpulse.com",
"subject": "hello world"
}
]
Перепідписка:
[
{
"timestamp":1717500409,
"message_id":"",
"recipient":"john.doe@sendpulse.com",
"event":"resubscribed",
"subject":""
}
]
Відмічено як спам:
[
{
"event": "spam_by_user",
"timestamp": 1490964607,
"message_id": 1145317311,
"recipient": "doe.john@sendpulse.com",
"sender": "john.doe@sendpulse.com",
"subject": "utf8_hello_world"
}
]
Отриманий soft bounce:
[
{
"smtp_server_response_code": 550,
"smtp_server_response_subcode": "5.1.0",
"task_id": 17076325,
"smtp_server_response": " vch15@i.ua MX: mx23.i.ua RESP: Mailbox over quota. See http://mail.i.ua/err/4/",
"timestamp": 1658998170,
"event": "soft_bounces",
"email": "example@example.com"
}
]
Отриманий hard bounce:
[
{
"smtp_server_response_code": 550,
"smtp_server_response_subcode": "5.1.1",
"task_id": 17076325,
"smtp_server_response": " example@example.com MX: mx.dereck.cn.ua RESP: 5.1.1 <example@example.com>: Recipient address rejected: User unknown in local recipient table",
"timestamp": 1658998170,
"event": "hard_bounces",
"email": "example@example.com"
}
]
Приклад скрипта, який приймає запит, мовою PHP:
<?php
$json_string = file_get_contents('php://input');
$data_array = json_decode($json_string, true);
?>
Оновлено: 06.11.2024
або