SMTP WebHooks

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);
?>