Как получить статистику через API
Sendsay API позволяет получить статистику о результатах доставки отправленных выпусков. Это реализуется через возвращаемые значения.
Отправка через API-консоль в Sendsay
Для тестирования воспользуемся сервисом Webhook.site:
Перейдите на Webhook.site и скопируйте URL для возвращаемых значений:
В Sendsay перейдите в раздел API → API-консоль и вставьте запрос:
{
"action": "stat.uni",
"select": [
"issue.id",
"issue.name"
],
"result": [
{
"type": "url_file",
"to": "ВАШ URL ДЛЯ ВОЗВРАЩАЕМЫХ ЗНАЧЕНИЙ (КОЛЛБЭКОВ)",
"format": "json"
}
]
}где
ВАШ URL ДЛЯ ВОЗВРАЩАЕМЫХ ЗНАЧЕНИЙ (КОЛЛБЭКОВ)
— скопированный ранее URL для возвращаемых значений.Нажмите «Выполнить» и посмотрите результат на Webhook.site. Примерный результат должен выглядеть так:
Нажмите на ссылку «Download», чтобы скачать JSON-архив с данными статистики.
Отправка через Postman
Протестируйте отправку запроса через Postman. Для этого вам потребуется уникальный API-ключ.
Переходите в Postman и авторизуйтесь, либо зарегистрируйте новый аккаунт. Затем перейдите в раздел My Workspace, нажмите «New» и выберите HTTP — чтобы создать новый HTTP-запрос.
В параметрах запроса выберите метод POST. Затем выберите вкладку body и укажите
raw
, в раскрывающемся меню выберитеJSON
.В поле URL вставьте
https://api.sendsay.ru/general/api/v100/json/Ваш_логин_Sendsay
. ВместоВаш_логин_Sendsay
необходимо добавить ваш логин, его можно скопировать в меню аккаунта:
В поле ниже вставьте запрос:
{
"apikey": "ВАШ API КЛЮЧ",
"action": "stat.uni",
"select": [
"issue.id",
"issue.name"
],
"result": [
{
"type": "url_file",
"to": "ВАШ URL ДЛЯ ВОЗВРАЩАЕМЫХ ЗНАЧЕНИЙ (КОЛЛБЭКОВ)",
"format": "json"
}
]
}где
ВАШ API КЛЮЧ
— ваш API-ключ, сгенерированный в п.4;ВАШ URL ДЛЯ ВОЗВРАЩАЕМЫХ ЗНАЧЕНИЙ (КОЛЛБЭКОВ)
— URL, скопированный в п.1.Затем нажмите «Send».
После отправки запроса должен прийти похожий ответ:
А на Webhook.site вы получите JSON-файл со статистикой:
Это значит, что запрос выполнился успешно — и теперь вы можете получать данные статистики.
Базовые представления о получении статистики через stat.uni
Универсальная статистика позволяет получить информацию про переходы, открытия писем, тиражи выпусков и результаты доставки выпусков рассылок. Все представленные ниже примеры вы можете проверить самостоятельно в API-консоли, при необходимости изменив под ваши конкретные нужды.
Статистика по выпуску
Статистика по выпуску, которую вы видите в веб-интерфейсе Sendsay, получена из кэшированных данных — поэтому вы получаете эти сведения моментально.
Рассмотрим получение данных со всей базовой информацией по отправленным email-выпускам — например, за декабрь 2022 года:
{
"action": "stat.uni",
"result": "response",
"select": ["issue.id", "issue.name", "issue.subject", "issue.dt:Ys", "issue.group.gid", "issue.group.name", "issue.members", "issue.deliv_ok", "issue.deliv_bad", "issue.readed", "issue.u_readed", "issue.clicked", "issue.u_clicked", "issue.unsubed"],
"filter": [{
"a": "issue.dt:Ys",
"op": ">=",
"v": "2022-12-01 00:00:00"
}, {
"a": "issue.dt:Ys",
"op": "<=",
"v": "2022-04-31 23:59:59"
}, {
"a": "issue.format",
"op": "==",
"v": "e"
}],
"order": ["-issue.dt:Ys"]
}
Статистика по выпускам заранее посчитана — и при необходимости вы можете запросить данные по всем отправленным выпускам за весь срок жизни вашего аккаунта.
А чтобы, например, узнать количество отправленных писем с PDF-вложениями за конкретный период, можно получить количество отправленных писем с разбивкой по значению поля issue.features
:
{
"action": "stat.uni",
"select": [
"issue.features",
"sum(issue.members)"
],
"filter": [
{
"a": "issue.dt:YM",
"op": "==",
"v": "2022-12"
},
{
"a": "issue.format",
"op": "==",
"v": "e"
}
]
}
С помощью этого запроса вы получите количество отправленных email-выпусков за декабрь 2022 года. Полный набор и описание полей, описывающих выпуск рассылки issue.*
, есть в документации.
Статистика для конкретного получателя
В отличие от статистики по выпуску, данные по конкретному получателю рассылок собираются и отдаются «на лету» — в момент выполнения запроса.
Данные о каждом типе событий хранятся каждая в своей области:
Нельзя в одном запросе добавить в select
параметры, описывающие разные события.
Далее приведём примеры.
Все выпуски, отправленные за сегодня для конкретного емейла
{
"action": "stat.uni",
"result": "response",
"select": [
"deliv.member.email",
"deliv.issue.id",
"deliv.issue.name",
"deliv.issue.dt",
"deliv.status"
],
"filter": [
{
"a": "deliv.member.email",
"op": "==",
"v": "my@secret.email"
},
{
"a": "deliv.issue.dt:YD",
"op": "==",
"v": "CURRENT"
}
]
}
Количество кликов по каждой ссылке за сегодня для конкретного емейла
{
"action": "stat.uni",
"result": "response",
"select": [
"click.member.email",
"click.issue.id",
"click.link.url",
"count(*)"
],
"filter": [
{
"a": "click.member.email",
"op": "==",
"v": "my@secret.email"
},
{
"a": "click.issue.dt:YD",
"op": "==",
"v": "CURRENT"
}
]
}
Если убрать из массива filter
запроса объект, ограничивающий результаты конкретным емейлом, то в результате будут выведены все адреса, попадающие под оставшиеся условия запроса.
Общее количество строк в результате выполнения запроса не лимитируется, однако отправляемые запросы должны соответствовать базовым лимитам.
Вывод результата запроса
Результат запроса к stat.uni
вы можете получить синхронно — в ответе на сам запрос, а также ассинхронно, — сохранив результат в файле.
Выбранный способ вывода зависит от предполагаемого времени выполнения запроса и количества строк в результате. В целом, ничего не мешает вывести в браузере сотню тысяч строк результата, но жизнь брокера будет зависеть только от мощности вашего компьютера.
За результат выполнения запроса отвечает параметр result
. В примерах выше ожидается синхронный ответ, и при выполнении запроса в API-консоли вы увидите результат на экране.
Если же вы трезво оцениваете сложность запроса и решили сохранить результат в файле, то вам стоит воспользоваться возможностями настройки параметра result API-запроса.
Сохранить в Файлы -> Отчеты -> stat.uni
"result": "save"
Сохранить результат запроса на внешний FTP в utf8
"result": [{
"to": "ftp://login:password@ftp.yourserver/path/",
"filename": "Clients",
"format": "csv",
"type": "url_file",
"utf8": "1"
}]
Последовательность работы запроса stat.uni
- Сервер находит все строки, подходящие под условия, указанные в
filter
. - Если указан
order
, то найденные строки сортируются по указанному правилу. Если порядок не указан, то данные выведутся без сортировки, каждый раз по-разному. - Если указан
skip
, то из вывода исключается указанное количество найденных строк. - Если указан
first
, то выводится указанное количество строк; если не указан — выводятся все найденные строки.