Перейти к основному содержимому

Базовые представления о получении статистики через 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

  1. Сервер находит все строки, подходящие под условия, указанные в filter.
  2. Если указан order, то найденные строки сортируются по указанному правилу. Если порядок не указан, то данные выведутся без сортировки, каждый раз по-разному.
  3. Если указан skip, то из вывода исключается указанное количество найденных строк.
  4. Если указан first, то выводится указанное количество строк; если не указан — выводятся все найденные строки.