Перейти к содержанию

Статистика

География и устройство подписчика

Для каждого выпуска система определяет географию, тип устройства, операционную систему, браузер и версию браузера подписчика с помощью который он перешёл по ссылке письма и открыл письмо.

Эта информация доступна через объекты вызова Универсальной Статистики: deliv.member.geo., deliv.member.gadget., click.member.geo., click.member.gadget., read.member.geo., read.member.gadget.

Устройство подписчика

Для устройства подписчика определяются:

  • Тип устройства - Desktop, Mobile, Tablet, Proxy или Robot

  • Операционную систему - Linux, Android, Windows, iOS, Mac, Blackberry, Proxy или Other

  • Семейство браузера - Application, Firefox, Chrome, Opera, Edge, Yandex, Outlook, Safari, IE, Blackberry, Proxy или Other

  • Старшую часть версии браузера

Если браузер Application, то версия - 0

Если устройство определено как Robot, то его операционная система всегда Other, браузер - Other, версия - 0.

Если устройство определено как Proxy, то его операционная система всегда Proxy, браузер - Proxy, версия - 0 - это веб-почта забрала картинку вместо настоящего браузера подписчика

Используйте deliv.member.gadget., click.member.gadget., read.member.gadget.* вызова Универсальной Статистики.

География подписчика

География определяется с точностью до зарубежной страны и с точностью до субъекта федерации для России.

География хранится как одно число совмещающее в себе номер страны и номер региона в виде СССRR000

Для нумерации стран (CCC) используется ISO 3166-1.

Для нумерации субъектов федерации России (RR) - первый уровень классификатора ОКАТО/ОКТМО.

Таким образом код зарубежной страны это код по ISO * 100000, а код для России это 64300000 + код региона * 1000

Не определившаяся страна имеет код 0. Не определившийся регион России имеет код региона 0.

Имеются дополнительные функции по получению из кода географии буквенных кодов стран и регионов и русскоязычных названий.

Используйте issue.geo., deliv.member.geo., click.member.geo., read.member.geo. вызова Универсальной Статистики.

Ссылки с полезной информацией и таблицами кодов:

https://ru.wikipedia.org/wiki/ISO_3166 https://ru.wikipedia.org/wiki/Субъекты_Российской_Федерации https://ru.wikipedia.org/wiki/ОКАТО https://ru.wikipedia.org/wiki/Общероссийский_классификатор_территорий_муниципальных_образований

Универсальная статистика

Универсальная статистика позволяет получить информацию про переходы, открытия писем, тиражи выпусков и результаты доставки. Примеры использования вынесены в отдельный раздел.

Не смотря на то, что этот вызов позволяет получать информации по конкретному письму и таким образом повторяя запросы следить за его доставкой, чтением и кликами он предназначен не для этого, а для выборок статистики по многим объектам за раз. Для отслеживания событий с письмом в реальном времени предназначены Callback/Webhook. Использование же этого вызова в таких целях может блокироваться без предупреждения.

При использовании кэширования запоминаются сами данные, а способ возврата результата задаваемый в "result" и "caption" применяется к ним позже.

При использовании кэширования в режиме "fetch" необходим только параметр "result" и связанные с ним дополнительные параметры так как при отсутствии данных в кэше вычисление результата производиться не будет.

При асинхронном запуске обработку можно прекратить вызовом track.set

Доступ к некоторым поля ограничен права доступа имеющимися у вызвающего.

Список возможных ограничивающих прав можно получить из вызова sys.rights.list - они имеют вид "api.stat.uni/типполя"

При попытке выборки или использования недоступного поля возвращается значение-заменитель или вызова заканчивается ошибкой.

Если relax_field_access_denied равно 0, то вызов заканчивается ошибкой.

Если relax_field_access_denied равно 1 и хоть одно недоступное поле встретилось в filter, order, have, то

  • все значения select получают значения-заменители

  • результат состоит только из одной строки

  • в warnings возвращаются записи про каждое недоступное поле

иначе, если relax_field_access_denied равно 1 и недоступные поля встретились только в select, то

  • такие поля получают значения-заменители, остальные - свои настоящие значения

  • результат состоит из столько строк из скольки бы состоял при отсутствии ошибки

  • результат может быть не такой как ожидается если недоступное поле служит для агрегации

  • в warnings возвращаются записи про каждое недоступное поле

Значения-заменители:

  • числа - 0

  • строки - 'field access denied'

  • email-адреса - 'field@access.denied'

  • домены email-адресов - 'field_access.denied'

  • json - { }

При фильтрации по полям хранящим идентификатор адреса (по простому все поля email - email.email, member.email, read.member.email ....) значения "v" нормализуеются (иначе "v": "Test@Test.Ru" найдено не будет).

По умолчанию нормализуется в предподожении что в "v" email или msisdn. Это годно для 99.9999 % случаев.

Если это не подходит используйте в условии сравнения не обязательный параметр addr_type, так как другим типы идентификаторов могут быть регистрозависимы или иметь другие правила нормализациию.

Так же, без addr_type, не происходит ограничений по типу адреса, что может вызвать не нужное совпадение

Например номер телефона для msisdn и viber и vknotify и pushapp может быть одинаковый и запрос без указания типа адреса данные будет найдены для каждого типа идентификатора.

Поэтому, рекомендуется всегда указывать тип идентификатора если мы работаете не только с email и msisdn

При его указании сравниваемые значения из v сначала нормализуются в соответствии с указанным типом

Если нормализация удалась - используется нормализованное значение, если не удалась - оригинальное

{

 "action" : "stat.uni" 

,"cache" : { параметры кэширования }

,"relax_field_access_denied" : 0 -- если какому-то полю нет доступа, то ошибка
                               1 -- если какому-то полю нет доступа, то в выводе вместо настоящих значений стандартные значения-заменители
                               пусто или отсутствует -- 0 - при работе через apikey/jwt и для выполнения по расписанию. 1-  для остального (например для интерактивных способов - Личный Кабинет)

---- Параметры расчёта

-- или Единичный запрос

,"skip" : число пропускаемых строк данных отчёта от начала. не обязательно. по умолчанию 0

,"first" : число выбираемых строк после пропуска skip. не обязательно. по умолчанию все

,"select" : [ -- обязательно
            --
            --     список полей для выборки
            -- или список полей и функций агрегирования
            -- или список полей и функция unique(*)
            --
            -- указывается или в виде строки
            --
            --  "поле или функция" 
            --
            -- или в виде объекта с картой преобразования для приведения полученных значений к "человеческому виду" 
            -- (например код недоставки можно преобразовать в его словесное описание)
            --
            -- {
            --  "field" : "поле или функция" 
            --
            --  карта преобразования значений одим из двух способов
            --
            -- ,"map" : { -- непосредственно в вызове
            --           "Y" : "Да" 
            --          ,"N" : "Нет" 
            --          ...........
            --          }
            --
            -- или
            --
            -- ,"map" : "Название карты" -- название заранее созданной карты
            --
            -- и к обоим способам управление не найденным значением
            --
            -- ,"map.missing" : "Непонятно" -- не обязательно. чем заменить значение не имеющее соответствия в карте преобразований
            --                              -- если отсутствует, то значение пропускается как есть
            --  }
            --
            --
            -- поля типа дата могут содержать указания на точность в виде двух букв из набора (Y M D h m s)
            -- по умолчанию поля типа дата имеют точность Ys или YD - в зависимости от их назначения
            --
            -- например: dt:YM (дата от года до месяца), dt:Yh (дата от года до часа), dt:YY (год)
            -- не верно: dt:hY  - первый уточнитель (час) младше второго (год)
            --
            -- поля типа дата могут содержать указания на то что требуется получить
            --    номер дня в неделе  - dt:DOW
            --    номер дня в году    - dt:DOY
            --    номер недели в году - dt:WOY
            --    первый день недели  - dt:CW1D
            -- от значения даты
            --
            -- поле с постоянным значением задаётся как
            --
            -- const(-123.456)  -- число
            -- const("АБ ВГ Д") -- стока
            -- const.ID         -- идентификатор аккаунта
            -- const.current    -- текущее время. описано ниже
            --
            -- функции преобразования полей - допустимы только в select
            --    md5_hex(поле)
            --    md5_base64(поле)
            --
            -- допустимые функции агрегирования
            --    count(*)
            --    count(unique имяполя)
            --    max(имяполя)
            --    min(имяполя)
            --    avg(имяполя)
            --    sum(имяполя)
            --    range(имяполя)
            --    stdev(имяполя)
            --    variance(имяполя)
            --
            -- в функциях перед именем поля может использоваться префикс unique
            --
            -- поле не может быть и в списке выбора и при этом использоваться
            -- в функциях агрегирования (даже с разным заданием точности)
            --
            -- нельзя использовать функцию сумммирования sum() для полей хранящих счётчик чего-то уникального
            -- например, сумма количества уникальных чтений каждого выпуска по выпускам за месяц не является
            -- общим количеством уникальных чтений за месяц. такое считается по другому.
            -- функция sum() применённая к такому полю вернёт "NaN" что бы предотвратить её неправильное использование
            -- на случай, если вы всё же твёрдо решили такое просуммировать, то для вас есть функция sum_i_know_uniq_is_not_sumable()
            -- расскажите нам потом зачем такое всё же понадобилось

            --
            -- правильные примеры
            --   a,b,c
            --   a,b,avg(c),max(d)
            --   dt:YM,b,min(c),max(c)
            --   a,b,count(*),min(e)
            --   max(dt:YD),min(y)
            --   max(f),min(f)
            --   a,b,unique(*)
            --   a,b,count(unique c)
            --   const(23)
            --
            -- не правильные примеры
            --
            --   a,b,avg(a)           -- поле а и в выборке и в агрегировании
            --   a,b,unique(*),avg(e) -- функция unique(*) не совместима ни с одной другой функцией
            --   unique(*)            -- unique(*) без списка полей
            --   const(ABC)           -- строка не в кавычках
            --   const(123E+10)       -- запись с экспонентой
            --   sum(issue.u_readed)     -- бессмысленно суммировать значения полей хранящих количество чего-то уникального
          ]

,"filter" : [

           -- фильтр результатов, не обязательно
           --
           -- все элементы списка объединяются через "И" 
           --

           -- элементы условий фильтрации

           -- если имя поля содержит указание точности даты, то
           -- значение для сравнения большей точности будут
           -- автоматически сокращены. значения с меньшей точностью
           -- считаются ошибкой
           --
           -- пример: "2010-05-04 12:13:14" станет "2011-05" для точности YM
           -- не верно: "2010-05-04" не хватает точности для Ys
           --
           -- поля типа дата кроме констант могут так же сравниваться с текущим
           -- временем +/- сдвиг. это описано ниже.

           {

             "a"  : имя поля или функция агрегирования

            ,"op" : операции сравнения ( == != < <= > >= )

            ,"v"  : значение
           }

          ,{

             "a"  : имя поля

            ,"op" : операции (не-)вхождения в список (in !in)

            ,"v" : [ значение, значение, ...] список значений для проверки вхождения (in) или не вхождения (!шт)
           }

          ,{

             "a"  : имя поля

            ,"op" : операции (не-)определённости (is_null !is_null)
                    только для полей помеченных (null)
                    параметр "v" должен или отсутствовать или быть равен "" 
           }

           .........

           -- группировка условий ИЛИ

          ,{

            "op" : "OR" 

            "v" : [
                    массив описывающий элементы фильтра. "ИЛИ" между элементами
                  ]

           }

          ,{

            "op" : "!OR" 

            "v" : [
                    массив описывающий элементы фильтра. "ИЛИ" между элементами потом отрицание полученного результата
                  ]

           }

           -- группировка условий И

          ,{

            "op" : "AND" 

            "v" : [
                    массив описывающий элементы фильтра. "И" между элементами
                  ]

           }
          ,{

            "op" : "!AND" 

            "v" : [
                    массив описывающий элементы фильтра. "И" между элементами потом отрицание полученного результата
                  ]

           }

          ]

"have" : [
           -- дополнительный фильтр результатов после выполнения функций агрегирования из select, не обязательно

           -- синтаксис как у filter
           --
           -- использовать можно только такие простые поля как точно указанные в select или функции агрегирования
           --
           -- например, выпуски после 1 декабря у которых более 10 кликов
           --
           --
           -- "select" : [ "click.issue.id" ]
           -- "filter" : [ { "a" : "click.issue.dt:YD", "op" : ">", "v" : "2019-12-01" } ]
           -- "have"   : [ { "a":"count(*)"  ,"op":">"  ,"v": 10 } ]
  ],

,"order" : [

           -- упорядочивание результата, не обязательно
           --
           -- список полей и функций агрегирования
         --
           -- префикс "-" задаёт сортировку по убыванию
           -- префикс "+" или его отсутствие - по возрастанию
           --
           -- a,-b
           -- +b,-avg(z)
           -- -a,+b,-c
           -- +dt:YM,-c

         ]

-- или Запрос с объединением

-- Результаты всех единичных запросов объединяются в одну строку ответа по уникальным ключам по порядку выполнения запроса.
-- Если в каком-либо запросе результатов для уникального ключа нет, то в строку добавляется соответствующее число значений null.
-- Если в результате строки с уникальным ключом встречается больше одного раза, то используется только первый результат, а остальные отбрасываются.
-- Дублирование уникального ключа в объединённой строке не происходит, так как он удаляется из результатов второго и далее запросов перед их добавкой в объединённую строку.
-- Смотрите пример запроса с объединением в разделе "Примеры запросов универсальной статистики" 

,"join" : [ -- объединяемы запросы. обязательно
           { Единичный запрос-1 }
          ,{ Единичный запрос-2 }
          ,{ Единичный запрос-3 }
          ....
          ]

,"joinby" : "число" -- обязательно. больше или равно 0
                     -- размер уникального ключа для объединения результатов из join
                     -- 0 - без ключа. объединяются все колонки. (например вы выбираете min() из нескольких объектов)
                     -- 1 - первая колонка каждого результата единичного запроса
                     -- 2 - первая и вторая
                     -- 3 - первая, вторая и третья
                     -- и так далее

,"order" : [        -- сортировка результата объединённого запроса. не обязательно
                    -- где "правило" это направление сортировки (- или +), номер колонки результата (с единицы),и способ сравнения (s - строчный, n - числовой)
                    -- например  "-1n","+2s","-4s","+5n" 
        "правило1",
        "правило2,
        .....
]

---- Прочие параметры

-- заголовки столбцов
-- предназначены для создания заголовков в csv и xlsx
-- содержимое и количество элементов не анализируется, вы можете задать заголовков и меньше и больше количества столбцов данных

,"caption" : [ -- не обязательно
              "адын" 
             ,"дыва" 
             ,"тры
              ......
             ]

,"track.info" : "дополнительная информация которая будет потом доступна в track.list/get" -- строка 1024 байта. не обязательно

,"result" : [ способ возврата результата. смотрите общее описание ]
}

ответ

{
  <общие поля>

-- для result != response

 ,"track.id" : номер -- номер асинхронного запроса для отслеживания с помощью track.*

-- для result = response

 ,"list" : [

          [строка1,данные в порядке заданном в select]

          [строка2,данные в порядке заданном в select]

          [строка3,данные в порядке заданном в select]

          ........

        ]

}

День недели, день года и неделя года, первый день недели

У полей типа дата можно указать что требуется не сама дата, а производные от неё величины:

  • номер дня в неделе - dt:DOW
  • номер дня в году - dt:DOY
  • номер недели в году - dt:WOY
  • первый день недели - dt:CW1D

Номер дня в неделе

Запись dt:DOW означает получение номера дня в неделе от значения даты.

Результатом является число от 1 до 7 - Пн -1 .... Сб - 6, Вс -7

В условиях понимает также 0 как воскресенье и английские полные названия дней, а так же их английские трёх и двух буквенные аббревиатуры (регистр не важен)

Номер дня в году

Запись dt:DOY означает получение номера дня в году от значения даты.

Результатом является число от 1 до 366.

Номер недели в году

Запись dt:WOY означает получение номера недели в году на которую приходится значения даты.

Результат возвращается как YYYY-Www, где YYYY - год, ww - номер недели от 01 до 53.

Номер недели определяется по ГОСТ ИСО 8601-2001: первой неделей года считается та, в который есть первый четверг года. (для григорианского календаря - та где 4 января).

Таким образом, начальные дни нового года могут быть в последней неделе прошлого года. И последние дни прошлого года - в первой неделе нового года.

Например:

2000-12-31 даст 2000-W52 - конец года в его последней неделе

2001-12-31 даст 2002-W01 - конец года в первой неделе следующего года

2012-01-01 даст 2012-W52 - первый день года в последней неделе предыдущего года

2012-01-02 даст 2012-W01 - а второй уже в первой неделе своего года

2014-05-04 даст 2014-W18 - просто дата на 18 неделе года

Первый день текущей недели

Запись dt:CW1D означает получение даты первого дня недели на которую приходится значения даты.

Результат возвращается как дата с точностью до дня YYYY-MM-DD

Начало недели определяется по ГОСТ ИСО 8601-2001: понедельник.

Константа текущее время

Синтаксис и поведение аналогично использованию current в сравнении.

const.current:HL +Y year +M month +D day +h hour round +m minute round +s second

Точность по умолчанию всегда Ys если она не задана явно необязательным уточнением :HL

Где H - точность старшего компонента (Y M D h m s) Где L - точность младшего компонента (Y M D h m s)

Например

const.current - 1 day - 1971-04-05 06:07:08

const.current:YM - 1 day - 1971-04

Сравнения с текущим временем

Для полей типа дата возможно сравнение с текущим временем +/- сдвиг.

Для этого значение v записывается в виде

"current +Y year +M month +D day +h hour round +m minute round +s second"

Все поля задающие сдвиг не обязательны, но их порядок от года к секунде должен соблюдаться.

Знак сдвига обязателен и может быть "+" (как в примере) или "-".

К названию величины можно добавлять на конце "s"

Указатели округления часов и минут - round - не обязательны.

Результат вычисления current всегда неявно приводится к точности поля заданном в ключе "a"

Например, в условии

issue.dt:YM < current - 1 day

точность результата "current - 1 day" неявно преобразуется к YM.

Вычитание годов и месяцев

Особенность Григорианского календаря такова, что просто так отнимать/прибавлять от даты месяца и года нельзя, так как в месяце получившейся новой даты может не быть такого дня.

Поэтому вычитание годов или месяцев округляет результат.

Например, если сегодня 30е марта, то вычитание 1го месяца даст февраль, а 30е февраля было ранее только в 1712 году и следующий раз может быть, предположительно, в 3328 году.

Например, если сегодня 31 декабря, то вычитание 3х месяцев даст 31 сентября.

Например, если сегодня 29 февраля, то вычитание 1 года даст 29 февраля прошлого года, который явно не високосный.

Строго формально всё ещё хуже - бывает 61я секунда в минуте (не так уж и редко, последние разы 31 декабря 2008 23:59:60 и 30 июня 2012 23:59:60) и 23 или 25 часов в сутках (при переходе на и с летнего времени час или выпадает или добавляется, и без указания временной зоны один час может или пропасть или встретиться дважды). Но это системой не учитывается.

Вычитание дней

Вычитание/прибавление 1 дня можно записать как вычитание/прибавление 24 часов, поэтому вычитание дней тоже округляет результат что иметь возможность установить время в 0:0:0. А вычитание/прибавление часов - не округляет.

Округление часов

Округление часов указываемое словом round необходимо когда временной отрезок должен начинаться точно от начала часа.

Без округления результат сохранит текущие минуты и секунды дав время "на N часов назад/вперёд"

С округлением минуты и секунды будут установлены в 0 что даст время "начало часа N часов назад/вперёд"

Округление минут

Округление минут работает аналогично округления часов - секунды устанавливаются в 0 и вы получаете точно начало минуты.

Правило вычисления current

  • при изменении годов и месяцев

точность даты понижается до года-месяца

к/из полученной даты прибавляются/вычитаются указанное количество годов и месяцев

результат преобразуется обратно к точности год-секунда установкой первого числа 0 часов 0 минут 0 секунд

  • при изменении годов без месяцев

точность даты понижается до года

к/из полученной даты прибавляются/вычитаются указанное количество лет

результат преобразуется обратно к точности год-секунда установкой первого месяца первого числа 0 часов 0 минут 0 секунд

  • при изменении месяцев без годов

точность даты понижается до года-месяца

к/из полученной даты прибавляются/вычитаются указанное количество месяцев

результат преобразуется обратно к точности год-секунда установкой первого числа 0 часов 0 минут 0 секунд

  • при изменении дней

точность даты понижается до года-месяца-дня

к/из полученной даты прибавляются/вычитаются указанное количество дней

результат преобразуется обратно к точности год-секунда установкой 0 часов 0 минут 0 секунд

  • при изменении часов

с округлением

точность даты понижается до года-месяца-дня-часа

к/из полученной даты прибавляются/вычитаются указанное количество часов

результат преобразуется обратно к точности год-секунда установкой 0 минут 0 секунд

без округлением

к/из полученной даты прибавляются/вычитаются указанное количество часов

  • при изменении минут

с округлением

точность даты понижается до года-месяца-дня-часа-минуты

к/из полученной даты прибавляются/вычитаются указанное количество минут

результат преобразуется обратно к точности год-секунда установкой 0 секунд

без округлением

к/из полученной даты прибавляются/вычитаются указанное количество минут

  • к/из полученного результата прибавляются/вычитается указанное количество секунд

  • результат приводится к точности поля заданной в "a"

Примеры

Примеры простые

сейчас

current

сейчас минус 1 час 3 минуты плюс 4 секунды

current -1 hour -3 minutes +4 second

сейчас минус 40 дней назад плюс 78 часов

current -40 days + 78 hours

что-то произошло за два последних часа

dt >= current - 2 hours

что-то произошло за два последних часа и только за них не считая текущий час

dt >= current - 2 hours round and dt < current - 0 hours round

выпуск состоялся в прошлом месяце (ниже есть пример считающийся быстрее)

issue.dt:YM == current - 1 month

выпуск состоялся в прошлом месяце и ранее (ниже есть пример считающийся быстрее)

issue.dt:YM <= current - 1 month

выпуск состоялся вчера

issue.dt:YD == current - 1 day

выпуск состоялся за последние 24 часа

issue.dt > current - 24 hours

выпуск состоялся начиная с 5 числа прошлого месяца и позже обратите внимание, что вычитается 4 дня - так как вычитание месяца установит день в 1, то для получения 5го числа надо прибавить 4, а не 5

issue.dt >= current - 1 month + 4 days

выпуск состоялся начиная с 3 числа текущего месяца и позже обратите внимание, что вычитание ноля месяцев использовано для сброса дня в 1 и уже потом коррекции его до 3

issue.dt >= current - 0 month + 2 days

Примеры, если вы хотите что бы считалось быстрее (но записывать зато сложнее):

Ускорение расчётов основано на том, что округлять до месяца дату каждого проверяемого выпуска и сравнивать с нужным будет дольше, чем не меняя даты сравнивать её константой, хоть хитро записанной, но вычисляемой только один раз.

выпуск состоялся в прошлом месяце и ранее "current - 0 month" даст начало текущего месяца, а вычитание "1 second" даст последнюю секунду прошлого месяца

issue.dt <= current - 0 month - 1 second

выпуск состоялся ровно в прошлом месяце "current - 1 month" даст начало прошлого месяца "current - 0 month" даст начало текущего месяца, а вычитание "1 second" даст последнюю секунду прошлого месяца

issue.dt >= current - 1 month И  issue.dt <= current - 0 month - 1 second

Примеры быстрого сравнения для самостоятельного понимания:

выпуск состоялся с 4 мая до 20 августа этого года

issue.dt >= current - 0 year + 4 month + 3 days И  issue.dt < current - 0 years + 7 month + 19 days

выпуск состоялся с 4 мая по 20 августа этого года

issue.dt >= current - 0 year + 4 month + 3 days И  issue.dt <= current - 0 years + 7 month + 20 days - 1 second

Статистика с точностью до каждого email/sms/viber/push/vk/tg/vknotify/pushapp/max

Каждый email/sms/viber/push/vk/tg/vknotify/pushapp/max имеют уникальный идентификатор состоящий из номера выпуска и номера письма в выпуске. Поэтому вы можете получить статистику с точностью до каждого email/sms/viber/push/vk/tg/vknotify/pushapp/max каждого выпуска для каждого адресата.

Доступные для использования поля

Поля типа дата (помечены dt), временные константы и "текущее время" задаются временем московского часового пояса (с неявным подразумеванием зимнего или летнего времени).

Отметка dt:Ys обозначает, что поле имеет значение времени с точность от года (Y) до секунды (s).

Отметка (null) обозначает, что поле может иметь неопределённое значение. Например если выпуск рассылки не использовал ни какой черновик, то значение поля issue.draft.id будет не определено.

Все логические операции с полем имеющим неопределённое значение всегда не выполняются. Например, неопределённое значение номера черновика не попадёт под фильтр issue.draft.id > 10, но так же оно не попадёт и под фильтр issue.draft.id <= 10.

Запись xxx.yyy.* обозначает что доступны все поля объекта yyy.

Например, при наличии у объекта yyy поля zzz, можно его получить через xxx.yyy.zzz

Если какое-то поле является набором полей другого объекта, то доступны даже те поля другого объекта, что сами являются наборами полей.

Например, так как в объекте Клик доступны все поля объекта Выпуск (click.issue.), а в объекте Выпуск - объекта Группа (issue.group.), то можно получить значение поля "Название группы из выпуска которой был этот клик" - click.issue.group.name

Так же доступны, но не продублированы здесь, все поля от фильтроввызовов *.list использующих синтаксис stat.uni

Информация о домене

domain.id - id домена

domain.name - название домена

Информация про адрес

Вне зависимости от наличия в базе подписчика некоторая информация о его адресе доступна для дальнейшего получения

email.id - id адресе

email.type - тип идентификатора адреса
            - 0 - email
            - 1 - msisdn
            - 2 - csid
            - 3 - push
            - 5 - vk
            - 6 - viber
            - 7 - pushapp
            - 8 - tg
            - 9 - vknotify
            - 11 - max

email.addr_type - строка типа идентификатора адреса (email,msisdn,csid,push,vk,viber,pushapp,tg,vknotify,max)

email.email - значение идентификатора адреса

email.domain.* - информация о домене адреса

-- информация об ошибках доставки. все поля null если последняя доставка была успешной.

email.error.error - количество ошибок доставки (null)

email.error.dt    - дата последней ошибки доставки (YYYY-MM-DD hh:mm:ss) (null)

email.error.str   - текст последней ошибки доставки (null)

email.error.issue -- выпуск последней ошибки доставки
email.error.letter -- письмо последней ошибки доставки

email.error.lock  - 0|1|null - адрес заблокирован (1) из-за ошибок (в зависимости от количества и типа ошибок) (null)
                              - заблокированный адрес не участвует в рассылке и попадает в статистику как hardbounced

email.error.lock_issue -- выпуск приведший к блокировке
email.error.lock_letter -- письмо приведшее к блокировке

Информация о подписчике

Доступна только при его наличии в базе

member.id - id подписчика

member.type - тип идентификатора подписчика
            - 0 - email
            - 1 - msisdn
            - 2 - csid
            - 3 - push
            - 5 - vk
            - 6 - viber
            - 7 - pushapp
            - 8 - tg
            - 9 - vknotify
            - 11 - max

member.addr_type - строка типа идентификатора подписчика (email,msisdn,csid,push,vk,viber,pushapp,tg,vknotify,max)

member.email - значение идентификатора подписчика

member.haslock - блокировка подписчика (доступно так же и через обычный вызов member.get). может ли получать сообщения
                  0 - нет            - может
                  1 - отписался      - не может
                  2 - не подтверждён - не может
                  4 - имеет фатальные ошибки доставки - не может
                  прочие значения ( 3,5,6,7 ) - одновременное наличие нескольких указанных блокировок

member.create.time - дата время создания данных подписчика (Ys) (null)
member.create.host - источник создания (null)

member.origin  - номер Источника (null)

member.update.time - дата время последнего изменения данных подписчика (Ys) (null)
member.update.host - источник изменения (null)

member.import.time - дата и время последнего изменения данных подписчика при импорте (Ys) (null)

member.confirm.time - дата время подтверждения регистрации (Ys) (null)
member.confirm.host - источник подтверждения (null)

member.domain.* - информация о домене подписчика

member.last.tz  - информация о временной зоне последнего действия подписчика (как member.get) (null)

member.mobile_os  - операционная система для pushapp

member.mobile_app - номер внешней аутентификации под которой зарегистрирован подписчик pushapp

-- информация об ошибках доставки. все поля null если последняя доставка была успешной.

member.error.error - количество ошибок доставки (null)

member.error.dt    - дата последней ошибки доставки (YYYY-MM-DD hh:mm:ss) (null)

member.error.str   - текст последней ошибки доставки (null)

member.error.issue -- выпуск последней ошибки доставки
member.error.letter -- письмо последней ошибки доставки

member.error.lock  - 0|1|null - адрес заблокирован (1) из-за ошибок (в зависимости от количества и типа ошибок) (null)
                              - заблокированный адрес не участвует в рассылке и попадает в статистику как hardbounced

member.error.lock_issue -- выпуск приведший к блокировке
member.error.lock_letter -- письмо приведшее к блокировке

-- информация из данных подписчика

member.datakey.DATAKEY - значение ответа как при использовании member.get с таким же ключом данных
                       - *в данный момент допустимо только в select*
                       - *в данный момент не может быть параметром функций агрегации*

-- информация из анкет подписчика

member.anketa.ANKETA.QUEST - значение ответа QUEST из анкеты ANKETA.
                           - при отсутствии ответа на указанный вопрос результат null
                           - *в данный момент допустимо только в select*
                           - *в данный момент не может быть параметром функций агрегации*

-- информация о последнем заполнении форм

member.form.id         -- номер формы

member.form.name       -- название формы

member.form.dt_fill    -- дата последнего заполнения

member.form.dt_confirm -- дата подтверждения (null)

member.form.resp.dk    -- ключ данный ответа в анкетах подписчика

member.form.resp.name  -- название вопроса на который дан ответ

member.form.resp.type  -- тип вопроса на который дан ответ

member.form.resp.value -- значение ответа. для вопросов с выбором это название варианта ответа. для других - сам ответ.

member.form.resp.id    -- код ответа. для вопросов с выборов это код ответа. для других - null.

member.form.issue.id  - номер выпуска из которого заполнена форма (null)

member.form.issue.draft.id - номер черновика использованного в выпуске (null)

member.form.issue.draft.name - название черновика использованного в выпуске (null)

member.form.issue.draft.alias - альтернативный идентификатор черновика использованного в выпуске (null)

member.form.letter.id - номер письма из которого заполнена форма (null)

member.form.letter.dt - дата письма из которого заполнена форма (null)

member.form.letter.custid(element_name) - значение элемента element_name пользовательской метки письма из которого заполнена форма (null)

Существует специальная особенность связанная с выборкой данных подписчика.

Пока вы используете в запросе поля id и email, вы получаете данные о всех подписчиках.

Как только в запросе появляется поле haslock, вы начинаете получать данные только о тех подписчиках, запись о которых до сих пор есть в вашей базе.

Это связано с тем, что информация о адресе подписчика и его номере хранится всегда, а информация о блокировке только при наличии записи о пользователе в вашей базе и она пропадает если вы его удаляете.

Пример когда проявится разница - запрос адресов участвовавших в выпуске ("select":["member.email"]) вернёт все адреса попавшие в выпуск, а такой же запрос с дополнительной выборкой текущего состояния блокировки ("select":["member.email", "member.haslock"]) вернёт только тех, кого вы ещё не удалили из своей базы.

Эту особенность можно использовать специально для отсечения тех кто из базы уже удалён. Фильтрmember.haslock >= 0выберет подписчиков с любым состоянием блокировки, но приведёт к исключению из результатов тех кто уже удалён.

История операций с головами

Отражается история действий с голова в операциях которые присоединяют, отсоединяют, передают головы между телами.

niptuck.dt - Ys
niptuck.action - attach,detach,detachsplit,transplant

операция attach

niptuck.email.dataset - получатель. тело
niptuck.email.email - получатель. идентификатор
niptuck.email.type - получатель. тип идентификатора. число
niptuck.email.addr_type - строка

niptuck.head.email - присоединённый идентификатор
niptuck.head.type - тип присоединённого идентификатора. число
niptuck.head.addr_type - строка

операция detach

niptuck.email.dataset - донор тело
niptuck.email.email - отсоединённый идентификатор
niptuck.email.type - тип отсоединённого идентификатора. число
niptuck.email.addr_type - строка

операция detach+split

niptuck.email.dataset - донор тело
niptuck.email.email - отсоединённый идентификатор
niptuck.email.type - тип отсоединённого идентификатора. число
niptuck.email.addr_type - строка

niptuck.head_dataset - новое тело отсоединённого идентификатора. число

операция transplant

niptuck.email.dataset - получатель. тело
niptuck.email.email - получатель. идентификатор
niptuck.email.type - получатель. тип идентификатора. число
niptuck.email.addr_type - строка

niptuck.head.dataset - донор. тело
niptuck.head.email - переданный идентификатор
niptuck.head.type - тип переданного идентификатора. число
niptuck.head.addr_type - строка

операция replace

записывается как detach и attach

События обогащения данных

tde.dt               -- время события  Ys
tde.topic            -- код тематики тематика
tde.price            -- стоимость данного события

tde.member.id,       -- номер идентификатора подписчика
tde.member.addr_type -- строка типа идентификатора подписчика
tde.member.email     -- идентификатор подписчика
tde.member.dataset   -- номер набора данных подписчика
tde.domain.name      -- домен идентификатора подписчика

Информация o группе

group.id - id группы

group.gid - символический код группы

group.name - название группы

group.type - тип группы -- list|filter

group.addr_type - тип адресов -- email|msisdn|viber|csid|push|vk|tg|vknotify|pushapp|max

-- регулярно обновляемы кэш статистики по всем выпускам вышедшим по группе

-- для email-групп

group.stat.total.email.all.issues -- выпусков рассылок

group.stat.total.email.all.members -- получателей

group.stat.total.email.all.u_members -- уникальный получателей

group.stat.total.email.all.clicked -- кликов

group.stat.total.email.all.u_clicked -- уникальных кликов

group.stat.total.email.all.target -- достижений целевых страниц

group.stat.total.email.all.u_target -- уникальных достижений целевых страниц

group.stat.total.email.all.readed -- чтений

group.stat.total.email.all.u_readed -- уникальный чтений

group.stat.total.email.all.unsub -- отписок из писем выпусков

group.stat.total.email.all.u_unsub -- уникальных отписок из писем выпусков

-- для sms-групп

group.stat.total.sms.all.issues -- выпусков рассылок

group.stat.total.sms.all.members -- получателей

group.stat.total.sms.all.u_members -- уникальный получателей

group.stat.total.sms.all.size -- количество выпущенных смс

group.stat.total.sms.all.cost -- цена выпуск sms в единицах тарификации, в данный момент это копейки

Информация o выпуске

Поля с количеством отсеянных участников содержат актуальное значение для выпусков начиная с 26-07-2013. Для более ранних выпусков поля содержат 0.

Поле issue.cost содержит актуальное значение для выпусков начиная с 01-11-2013. Для более ранних выпусков поля содержат 0 так как старая система тарификации не пересчитываема в новую.

issue.id - id выпуска

issue.dt - дата выпуска (dt:Ys)

issue.name - название выпуска (совпадает с issue.subject если не было указано отдельно при выпуске)

issue.label0 -- метки выпуска по порядку их указания в выпуске/черновике
issue.label1
issue.label2
issue.label3
issue.label4
issue.label5
issue.label6
issue.label7
issue.label8
issue.label9

issue.subject - тема выпуска (тема письма или имя отправителя sms)

issue.to_name - имя получателя (с 10.12.2015)

issue.from_name  - имя отправителя (с 10.12.2015)
issue.from_email - адрес отправителя (с 10.12.2015)

issue.reply_name  - имя для ответа (с 10.12.2015)
issue.reply_email - адрес для ответа (с 10.12.2015)

issue.members - число получателей выпуска

issue.format - формат выпуска. e - email, s - sms, v - viber, p - push, k - vk, g - tg, n - vknotify, m - pushapp, x - max

issue.size  - размер выпуска. Для email, viber, push, vk - размер одного письма/сообщения, для sms - количество выпущенных смс.

issue.cost - цена выпуска. Для email, viber, push, vk, tg, pushapp, max - 0, для sms и vknotify - в единицах тарификации, в данный момент это копейки

issue.archive - ссылка на не персонализированную версию выпуска в веб-архиве
              - для Транзакционных Писем (personal) всегда null так не имеет смысла из-за того, что каждое Транзакционное письмо индивидуально

issue.double - количество дублирующихся адресов в списке. имеет смысл только для Экспресс-Выпуска. заполняется с 11-12-2013

issue.onlyunique - режим подавления дублирующихся адресов при выпуске. имеет смысл только для Экспресс-Выпуска. заполняется с 11-12-2013
                 - 0 - высылать письма на адреса встреченные второй и более разы
                 - 1 - НЕ высылать письма на адреса встреченные второй и более разы

issue.wrongline - (этот параметр назван не очень удачно) количество строк в списке (cvs или json) которые система отбросила по разных причинам (не смогла разобрать, адрес в стоп-листе, ошибки доставки и т.д.). имеет смысл только для Экспресс-Выпуска. заполняется с 11-12-2013

issue.hardbounce - количество адресов не допущенных в выпуск из-за большого количества ошибок доставки

issue.stoplist - количество адресов не допущенных в выпуск из-за нахождения их адреса в стоп-листе

issue.lockunsub - количество адресов  не допущенных в выпуск из-за того, что их адрес отписан

issue.lockconfirm - количество адресов не допущенных в выпуск из-за того, что внесение в базу ими ещё не подтверждено

issue.excludefilter -- количество адресов не допущенных в выпуск из-за того, что попали под группу исключения использованную при выпуске

issue.unsublist  -- количество адресов не допущенных в выпуск из-за того, что попали под группу тематической отписки использованную при выпуске

issue.excludecontactrate - количество адресов не допущенных в выпуск из-за того, что не соблюдён contact_rate

issue.group.* - информация о группе по которой был выпуск

issue.unsub_list.* - информация о группе отписки которая использовалась в выпуске (null)

issue.campaign.* - информация о кампании указанной при задании выпуска

issue.draft.id - номер черновика использованного при выпуске (null)
issue.draft.alias - альтернативный идентификатор черновика использованного при выпуске (null)
issue.draft.name - название черновика использованного при выпуске (null)

issue.class.id - номер класса выпуска использованного при выпуске (null)
issue.class.alias - альтернативный идентификатор класса выпуска использованного при выпуске (null)
issue.class.name - название класса выпуска использованного при выпуске (null)

issue.form.id - номер формы использованной при выпуске (null)
issue.form.name - название формы использованной при выпуске (null)

issue.dkim.id - номер DKIM-ключа использованного при выпуске (null) (до 6 октября 2016 года - null)
issue.dkim.by - источник DKIM-ключа использованного при выпуске (до 6 октября 2016 года - null)
                возможные значения: issue, draft, domain, conf, global

issue.sequence.id - номер последовательности вызвавшей выпуск (null)

issue.sequence.campaign.* - информация о кампаниях в которые входит последовательность выпустившая этот выпуск

issue.utm.campaign - utm-метки выпуска
issue.utm.content
issue.utm.medium
issue.utm.source
issue.utm.term

-- специальные имена для проверки особенностей выпуска
-- правильное использование - сравнение с нулём : == 0 или != 0

issue.feature_none - ничего особенного
issue.feature_pdf  - использовались pdf-атачи
issue.feature_json - использовался json-relay
issue.feature_amp  - выпуск с AMP
issue.feature_csid - выпуск выполнялся по csid
issue.feature_pte  - выпуск использовал pte
issue.feature_fast - выпуск по быстрой схеме

issue.users_slice - выпуск использовал ограничение на размер тиража (0 - нет, > 0 - использованное ограничение в процентах, < 0 - использованное ограничение в штуках)

issue.multiple - выпуск использовал учёт множественных совпадений итератор в фильтре(0|не 0)

issue.contact_rate - выпуск использовал ограничение количества контактов на получателя(0|не 0)

issue.tz_best - выпуск использовал высылку письма в наиболее подходящее для получателя время (0|не 0)

issue.tz_limit - выпуск использовал ограничение на частоту отправки(0|не 0)

issue.tz_observance - выпуск использовал учёт часового пояса получателя (0|не 0)

issue.source - источник выпуска ("api","smtp","tranz")

issue.track.id - номер трекера выпуска (null)

issue.cron.id - номер действия по расписанию вызвавшего выпуск (null)

issue.sublogin - саблогин вызвавший выпуск (null)

issue.istest - это был тестовый выпуск (0|не 0)

issue.unsub_list.gid - символический код группы использованной как список отписки в выпуске

-- сплит-тестирование в рамках которого вышел этот выпуск

issue.variant.id - номер варианта сплит-тестирования для которого вышел выпуск (null)
issue.split.id  - номер АБ-тестирования в рамках которого вышел этот выпуск
issue.split.campaign.*  - информация о кампаниях в которые входит АБ

issue.thumbnail_800x600 - ссылка на изображения письма выпуска 800x600 (подробности в issue.get) (null)

issue.reltype - параметр классификации
issue.relref  - параметр классификации

-- избранные метрики выпуска

issue.delivery_rate     Delivery Rate (decimal x.2) (null)

issue.error_rate     Error Rate (decimal x.2) (null)

issue.open_rate     Open Rate (decimal x.2) (null)

issue.click_rate     Click Rate (decimal x.2) (null)

issue.click_open_rate     Click to Open Rate (decimal x.2) (null)

issue.unsub_rate     Unsub Rate (decimal x.2) (null)

issue.unsub_open_rate     Unsub to Open Rate (decimal x.2) (null)

-- суммарная статистика по выпуску.
-- это кэш. первые 5 дней он обновляется раз в 15 минут. потом - раз в три часа

issue.deliv_ok - количество успешно доставленных писем

issue.deliv_bad - количество писем с ошибкой доставки

issue.clicked - количество кликов

issue.u_clicked - количество уникальных кликов

issue.readed - количество чтений

issue.u_readed - количество уникальных чтений

issue.duraion - средняя длительность чтений (null)

issue.unsubed - количество отписок из выпуска

-- суммарная статистика по выпуску за час
-- это кэш. он обновляется раз в 20 минут

issue.hourly.dt - дата и час (YYYY-MM-DD hh) для которых сгруппирована статистика

issue.hourly.deliv    - общее количество писем. в первый день рассылки учитывает ok+bad+unk. в остальные - только ok+bad

issue.hourly.deliv_ok - количество успешно доставленных писем

issue.hourly.deliv_bad - количество писем с ошибкой доставки

issue.hourly.clicked - количество кликов

issue.hourly.u_clicked - количество уникальных кликов

issue.hourly.readed - количество чтений

issue.hourly.u_readed - количество уникальных чтений

issue.hourly.unsubed   - количество отписок из выпуска

-- суммарная статистика по выпуску/домену за день
-- это кэш. он обновляется раз в 20 минут

issue.daily.domain.id - id домена

issue.daily.domain.name - название домена

issue.daily.dt - дата (YYYY-MM-DD) для которой сгруппирована статистика

issue.daily.deliv    - общее количество писем. в первый день рассылки учитывает ok+bad+unk. в остальные - только ok+bad

issue.daily.deliv_ok - количество успешно доставленных писем

issue.daily.deliv_bad - количество писем с ошибкой доставки

issue.daily.clicked - количество кликов

issue.daily.u_clicked - количество уникальных кликов

issue.daily.readed - количество чтений

issue.daily.u_readed - количество уникальных чтений

issue.daily.unsubed   - количество отписок из выпуска

-- Количество кликнувших или прочитавших по географии - кэш общего числа

issue.stat.geo.n                 - число кликов и чтений для данной географии

issue.stat.geo.id                - числовой код географии CCCRR000 - CCC числовой код страны по ISO 3166-1, RR - для России числовой код региона по ОКАТО/ОКТМО и 00 для прочих стран и не определившегося региона России

issue.stat.geo.name              - название географии на русском языке "Страна. Регион" или "Страна" если регион не определён

issue.stat.geo.country.id        - числовой код страны по ISO 3166-1

issue.stat.geo.country.alpha2    - двухбуквенный код страны по ISO 3166-1

issue.stat.geo.country.name      - название страны на русском языке

issue.stat.geo.region.alpha5     - пятисимвольный код региона по ISO 3166-2 (имеет вид XX-XXX) для России и совпадает с alpha2 для прочих стран

issue.stat.geo.region.name       - название региона для России на русском языке, пусто для прочих стран

-- Вхождение в мультивыпуск

issue.multi.id          - номер мультивыпуска (null)

issue.multi.name        - название мультивыпуска (null)

Информация o кампании

campaign.id - id кампании

campaign.name - название кампании

---- суммарная статистика по входящим в кампанию выпускам и формам по всей кампании. это кэш.

-- количество кликнувших или прочитавших по географии - кэш общего числа

campaign.stat.geo.n                 - число кликнувших или прочитавших для данной географии

campaign.stat.geo.id                - числовой код географии CCCRR000 - CCC числовой код страны по ISO 3166-1, RR - для России числовой код региона по ОКАТО/ОКТМО и 00 для прочих стран и не определившегося региона России

campaign.stat.geo.name              - название географии на русском языке "Страна. Регион" или "Страна" если регион не определён

campaign.stat.geo.country.id        - числовой код страны по ISO 3166-1

campaign.stat.geo.country.alpha2    - двухбуквенный код страны по ISO 3166-1

campaign.stat.geo.country.name      - название страны на русском языке

campaign.stat.geo.region.alpha5     - пятисимвольный код региона по ISO 3166-2 (имеет вид XX-XXX) для России и совпадает с alpha2 для прочих стран

campaign.stat.geo.region.name       - название региона для России на русском языке, пусто для прочих стран

-- по всем email-рассылкам

campaign.stat.total.email.all.issues    - выпусков email-рассылок

campaign.stat.total.email.all.members   - получателей

campaign.stat.total.email.all.u_members - уникальный получателей

campaign.stat.total.email.all.clicked   - кликов

campaign.stat.total.email.all.u_clicked - уникальных кликов

campaign.stat.total.email.all.target    - достижений целевых страниц

campaign.stat.total.email.all.u_target  - уникальных достижений целевых страниц

campaign.stat.total.email.all.readed    - чтений

campaign.stat.total.email.all.u_readed  - уникальный чтений

campaign.stat.total.email.all.unsub     - отписок из писем выпусков

campaign.stat.total.email.all.u_unsub   - уникальных отписок из писем выпусков

-- только по транзакционным email-рассылкам

campaign.stat.total.email.personal.*    - аналогично campaign.stat.total.email.all, но только по выпускам транзакционных email-рассылок (рассылка personal)

-- только по маркетинговым email-рассылкам

campaign.stat.total.email.marketing.*   - аналогично campaign.stat.total.email.all, но только по выпускам маркетинговых email-рассылок (все рассылки кроме personal)

-- по всем sms-рассылкам

campaign.stat.total.sms.all.issues      - выпусков sms-рассылок

campaign.stat.total.sms.all.members     - получателей

campaign.stat.total.sms.all.u_members   - уникальных получателей

campaign.stat.total.sms.all.size        - количество использованных sms

campaign.stat.total.sms.all.cost        - цена выпуска использованных sms в единицах тарификации, в данный момент это копейки

-- только по транзакционным sms-рассылкам

campaign.stat.total.sms.personal.*      - аналогично campaign.stat.total.sms.all, но только по выпускам транзакционных sms-рассылок (рассылка personal)

-- только по маркетинговым sms-рассылкам

campaign.stat.total.sms.marketing.*     - аналогично campaign.stat.total.sms.all, но только по выпускам маркетинговых email-рассылок (все рассылки кроме personal)

-- по формам

campaign.stat.total.form.members        - заполнений форм

campaign.stat.total.form.u_members      - уникальных пользователей заполнивших формы

---- суммарная статистика по кампании по дням. это кэш.

campaign.stat.daily.dt   - день (YD) - YYYY-MM-DD
campaign.stat.daily.*    - аналогично campaign.stat.total

---- суммарная статистика по кампании по неделям это кэш.

campaign.stat.weekly.dt  - первый день недели (т.е. понедельник) (YD) - YYYY-MM-DD
campaign.stat.weekly.*   - аналогично campaign.stat.total

 -- то же самое по месяцам

campaign.stat.monthly.dt  - месяц (YM) - YYYY-MM
campaign.stat.monthly.*   - аналогично campaign.stat.total

Информация o ссылке

link.id - id ссылки

link.url - url ссылки

link.reltype - параметр классификации
                     -- отрицательные значения зарезервированы для системы
                     -- в данный момент:
                     --  -1 - ссылка из выпуска рассылки
                     --  -2 - ссылка - целевая страница достигнутая подписчиком

link.relref - параметр классификации

link.linkgroup.* - информация о группе в которую входит ссылка

Информация o группе ссылок

linkgroup.id - группы ссылок

linkgroup.name - name группы ссылок

linkgroup.reltype - параметр классификации

linkgroup.relref - параметр классификации

linkgroup.campaign.* - информация о кампаниях в которые входит группа ссылок

Информация о переходах

Не забывайте уточнять в запросе click.link.reltype !

Например, при подсчёте всех кликов из выпуска и без указания reltype вы получите информацию как по самим кликам из выпуска (reltype=-1), так по посещения Целевых Страниц (reltype=-2). Уточните в фильтре не только номер выпуска, но и классификацию ссылки.

click.dt - дата и время клика (dt:Ys)

click.ip - ip кликнувшего

click.source - равно 4 если переход осуществлён из amp-версии email-сообщения

click.letter.* - информация о письме как в deliv.letter

click.member.* - информация о кликнувшем подписчике

click.domain.* - информация о домене кликнувшего подписчика

click.issue.*  - информация о выпуске из которого был клик

click.link.id - id ссылки

click.link.url - url ссылки

click.link.reltype - параметр классификации

click.link.relref - параметр классификации

click.linkgroup.* - группы ссылок

click.linkgroup.campaign.* - информация о кампаниях в которые входит группа ссылок ссылки по которой был переход

-- География

click.member.geo.id                - числовой код географии CCCRR000 - CCC числовой код страны по ISO 3166-1, RR - для России числовой код региона по ОКАТО/ОКТМО и 00 для прочих стран и не определившегося региона России

click.member.geo.name              - название географии на русском языке "Страна. Регион" или "Страна" если регион не определён

click.member.geo.country.id        - числовой код страны по ISO 3166-1

click.member.geo.country.alpha2    - двухбуквенный код страны по ISO 3166-1

click.member.geo.country.name      - название страны на русском языке

click.member.geo.region.alpha5     - пятисимвольный код региона по ISO 3166-2 (имеет вид XX-XXX) для России и совпадает с alpha2 для прочих стран

click.member.geo.region.name       - название региона для России на русском языке, пусто для прочих стран

-- Устройство

click.member.gadget.gender     - Desktop, Mobile, Tablet, Proxy, Robot

click.member.gadget.os         - Linux, Android, Windows, iOS, Mac, Blackberry, Proxy, Other

click.member.gadget.browser    - Application, Firefox, Chrome, Opera, Edge, Outlook, Yandex, Safari, IE, Blackberry, Proxy, Other

click.member.gadget.browmajor  - старшая часть версии браузера

Информация об открытии писем

read.dt - дата и время чтения (dt:Ys)

read.ip - ip прочитавшего (null до 01 декабря 2014 года)

read.duration - длительность чтения в секундах (null до 29 августа 2017 года и если не определилось)
              - максимальная отслеживаемая длительность - 30 секунд
              - если null, то это
               * чтение вызванное кликом (если на момент клика ещё не было чтения, то оно добавляется)
               * канал выпуска не поддерживает определение длительности
               * длительность зафиксировать не удалось (мало вероятно)

read.source - равно 4 если прочтение относится к amp-версии email-сообщения

read.letter.* - информация о письме как в deliv.letter

read.member.* - информация о прочитавшем (открывшем письмо) подписчике

read.domain.* - информация о домене прочитавшего подписчика

read.issue.*  - информация о выпуске который был прочтён

-- География

read.member.geo.id                - числовой код географии CCCRR000 - CCC числовой код страны по ISO 3166-1, RR - для России числовой код региона по ОКАТО/ОКТМО и 00 для прочих стран и не определившегося региона России

read.member.geo.name              - название географии на русском языке "Страна. Регион" или "Страна" если регион не определён

read.member.geo.country.id        - числовой код страны по ISO 3166-1

read.member.geo.country.alpha2    - двухбуквенный код страны по ISO 3166-1

read.member.geo.country.name      - название страны на русском языке

read.member.geo.region.alpha5     - пятисимвольный код региона по ISO 3166-2 (имеет вид XX-XXX) для России и совпадает с alpha2 для прочих стран

read.member.geo.region.name       - название региона для России на русском языке, пусто для прочих стран

-- Устройство

read.member.gadget.gender     - Desktop, Mobile, Tablet, Proxy, Robot

read.member.gadget.os         - Linux, Android, Windows, iOS, Mac, Blackberry, Proxy, Other

read.member.gadget.browser    - Application, Firefox, Chrome, Opera, Edge, Outlook, Yandex, Safari, IE, Blackberry, Proxy, Other

read.member.gadget.browmajor  - старшая часть версии браузера

Информация о доставке и прочих свойствах каждого сообщения

deliv.member.* - информация о подписчике-получателе

deliv.member.geo.* - информация о географии подписчика (null)

deliv.domain.* - информация о домене подписчика-получателя

deliv.issue.*  - информация о выпуске который доставлялся

deliv.letter.id - номер письма в выпуске

deliv.letter.dt - дата и время (dt:Ys) последнего изменения статуса доставки. (null)
                - до февраля 2015 года - null

deliv.letter.start_dt -- запланированная дата старта (dt:Ys) при растянутом выпуске (tz_limit/batch)
                      -- или при выпуске с учётом часового пояса (tz_observance)
                      -- до 18 мая 2016 года - null

deliv.letter.custid(element_name) - значение элемента element_name пользовательской метки письма

deliv.status - код статуса доставки
             - больше 0 - доставлено
             - равно  0 - в процессе доставки
             - меньше 0 - ошибка доставки или отсеян из рассылки

             - Общие кода ошибок
             -  -2 - все попытки доставки успеха не имели, но и не был получен ответ, что точно не примут
             -  -3 - письмо приняли за спам
             -  -4 - письмо отменено (например выпуск растянутый по времени решено вообще не выпускать дальше)

             - -100010 - находится в стоп листе
             - -100011 - блокировка из-за постоянных ошибок доставки
             - -100012 - не подтверждена регистрация
             - -100013 - отписался
             - -100014 - сотовый оператор заблокирован нами
             - -100015 - исключен по фильтру исключения используемого черновика
             - -100016 - исключен из-за нахождения в списке тематической отписки используемого черновика
             - -100017 - превышена установленная частота контакта с пользователем
             - -100018 - указан не верный номер черновика
             - -100019 - не досталось промокода
             - -100020 - адрес получателя синтаксически не верен
             - -100021 - не подошло под фильтр включения в выпуск
             - -100022 - аутентификация не верна или не найдена
             - -100023 - адрес в спам-листе
             - -100024 - не удалось подобрать адрес (голову) нужного типа при кросс-канальном выпуске

             - Для email кода ошибок обозначают
             -  -5yz - код ошибки SMTP-Enchanced status code 5.Y.Z (RFC 3463 https://datatracker.ietf.org/doc/html/rfc3463)
             -  -15xx - код ошибки SMTP (5xx) сдвинутый на -1000

             - Для sms, vknotify и viber кода ошибок обозначают
             -     -4 - сообщение отменено
             -  -2000 - прочие ошибки
             -  -2003 - истекло время доставки
             -  -2004 - sms-центр принял сообщение, но потом не стал доставлять и просто удалил
             -  -2005 - не удалось доставить на телефон абонента
             -  -2006 - sms-центр сообщил, что потерял информацию о статусе доставки
             -  -2007 - неизвестная ошибка доставки
             -  -2008 - sms-центр сразу отверг сообщение
             -  -2009 - sms-провайдер не принял сообщение
             -  -2010 - рассылка по данному направлению невозможна (номер не мобильный или данный оператор у вас не подключён)
             -  -2011 - новая ошибка sms-провайдера описание которой он нам не сообщал
             -  -2012 - неправильно задан номер абонента
             -  -2013 - номер в чёрном списке
             -  -2014 - неверное имя отправителя

             - Для push кода ошибок обозначают
             -  -2100 - InternalServerError
             -  -2101 - Invalid JSON
             -  -2102 - InvalidRegistration
             -  -2103 - InvalidParameters
             -  -2104 - MissingRegistration
             -  -2105 - InvalidPackageName
             -  -2106 - MismatchSenderId
             -  -2107 - DeviceMessageRate Exceeded
             -  -2108 - TopicsMessageRate
             -  -2109 - InvalidApnsCredential
             -  -2110 - Unknown subscription
             -  -2199 - нераспознанная ошибка
             -  -2201 - Missing necessary crypto keys
             -  -2202 - InvalidDataKey / Invalid URL endpoint
             -  -2203 - Expired URL endpoint
             -  -2204 - MessageTooBig / Data payload too large
             -  -2205 - Endpoint became unavailable during request
             -  -2206 - NotRegistered /Invalid subscription
             -  -2208 - Router type is invalid
             -  -2209 - UnauthorizedRegistration / Invalid authentication
             -  -2210 - Invalid crypto keys specified
             -  -2211 - Missing Crypto Headers, TTL
             -  -2213 - Invalid Topic header value
             -  -2212 - InvalidTtl / Invalid TTL header value
             -  -2301 - Unavailable / Use exponential back-off for retries

             - Для vk кода ошибок обозначают
             -  -3000 - Ошибка доступа к серверу или нераспознанный ответ сервера
             -  -3001 - Произошла неизвестная ошибка.
             -  -3002 - Приложение выключено.
             -  -3003 - Передан неизвестный метод.
             -  -3004 - Неверная подпись.
             -  -3005 - Аутентификация пользователя не удалась.
             -  -3006 - Слишком много запросов в секунду.
             -  -3007 - Нет прав для выполнения этого действия.
             -  -3008 - Неверный запрос.
             -  -3009 - Слишком много однотипных действий.
             -  -3010 - Произошла внутренняя ошибка сервера.
             -  -3011 - В тестовом режиме приложение должно быть выключено или пользователь должен быть залогинен.
             -  -3014 - Требуется ввод кода с картинки (Captcha).
             -  -3015 - Доступ запрещён.
             -  -3016 - Требуется выполнение запросов по протоколу HTTPS, т.к. пользователь включил настройку, требующую работу через безопасное соединение.
             -  -3017 - Требуется валидация пользователя.
             -  -3018 - Страница удалена или заблокирована.
             -  -3020 - Данное действие запрещено для не Standalone приложений.
             -  -3021 - Данное действие разрешено только для Standalone и Open API приложений.
             -  -3023 - Метод был выключен.
             -  -3024 - Требуется подтверждение со стороны пользователя.
             -  -3027 - Ключ доступа сообщества недействителен.
             -  -3028 - Ключ доступа приложения недействителен.
             -  -3100 - Один из необходимых параметров был не передан или неверен.
             -  -3101 - Неверный API ID приложения.
             -  -3113 - Неверный идентификатор пользователя.
             -  -3150 - Неверный timestamp.
             -  -3200 - Доступ к альбому запрещён.
             -  -3201 - Доступ к аудио запрещён.
             -  -3203 - Доступ к группе запрещён.
             -  -3300 - Альбом переполнен.
             -  -3500 - Действие запрещено. Вы должны включить переводы голосов в настройках приложения.
             -  -3600 - Нет прав на выполнение данных операций с рекламным кабинетом.
             -  -3603 - Произошла ошибка при работе с рекламным кабинетом.
             -  -3900 - Нельзя отправлять сообщение пользователю из черного списка
             -  -3901 - Пользователь запретил отправку сообщений от имени сообщества
             -  -3902 - Нельзя отправлять сообщения этому пользователю в связи с настройками приватности
             -  -3913 - Слишком много пересланных сообщений
             -  -3914 - Сообщение слишком длинное
             -  -3917 - You dont have access to this chat
             -  -3921 - Невозможно переслать выбранные сообщения
             -  -3260 - Доступ к запрошенному списку групп ограничен настройками приватности пользователя.
             -  -3125 - Недопустимый идентификатор сообщества.

             - Для tg кода ошибок обозначают
             - -4400 - Не верный запрос. Обычно - не найден чат, означает, что пользователь вышел из чата
             - -4401 - Не аутентифицирован. Например невалидный токен.
             - -4403 - Запрещено. Бот заблокирован пользователем
             - -4404 - Обращение к несуществующему объекту, методу спи телеграмма
             - -4420 - Флуд. Слишком много сообщений пользователю.
             - -4429 - слишком много реквестов (были предприняты повторы, безрезультатно)
             - -4500 - Ошибка сервера Телеграма
             - -4600 - Ошибка при разборе сообщения, например не экранированы символы
             - -4601 - Ошибка в идентификаторе файла или скачивания URL
             - -4602 - Слишком большой текст подписи, например у изображения
             - -4603 - Слишком большой размер сообщения
             - -4604 - Отписан: бот заблокирован пользователем
             - -4605 - Отписан: пользователь деактивирован
             - -4606 - Отправка запрещена: чат не найден, например не был подписан
             - -4607 - Отправка сообщения боту запрещено
             - -4608 - Бот не может инициировать чат
             - -4609 - Отправка этому пользователю запрещена

             - Для pushapp кода ошибок обозначают
              - -6000 - Нераспознанная ошибка
              - -6001 - Tokens are invalid (FCM, APNs, HMS)
              - -6400 - FCM. Bad request. Request parameters were invalid.
              - -6401 - FCM. APNs certificate or web push auth key was invalid or missing.
              - -6403 - FCM. The authenticated sender ID is different from the sender ID for the registration token.
              - -6404 - FCM. App instance was unregistered from FCM.
              - -6429 - FCM. Sending limit exceeded for the message target.
              - -6500 - FCM. An unknown internal error occurred.
              - -6503 - FCM. The server is overloaded.
              - -6400 - APNs. Bad request
              - -6403 - APNs. There was an error with the certificate or with the provider authentication token
              - -6405 - APNs. The request used a bad `:method` value. Only `POST` requests are supported.
              - -6410 - APNs. The device token is no longer active for the topic.
              - -6413 - APNs. The notification payload was too large.
              - -6429 - APNs. The server received too many requests for the same device token.
              - -6500 - APNs. Internal server error
              - -6503 - APNs. The server is shutting down and unavailable.
              - -6602 - HMS. Successfully sent to some tokens except identified by illegal_tokens
              - -6605 - HMS. Some request parameters are incorrect
              - -6610 - HMS. Incorrect message structure
              - -6615 - HMS. The message expiration time is earlier than the current time
              - -6620 - HMS. The collapse_key message field is invalid
              - -6625 - HMS. A maximum of 100 topic-based messages can be sent at the same time
              - -6630 - HMS. OAuth authentication error
              - -6635 - HMS. OAuth token expired
              - -6640 - HMS. The current app does not have the permission to send messages
              - -6645 - HMS. All tokens are invalid
              - -6650 - HMS. The message body size (excluding the token) exceeds the default value (4096 bytes)
              - -6655 - HMS. The number of tokens in the message body exceeds the default value
              - -6660 - HMS. Invalid receipt URL
              - -6665 - HMS. Failed to request the OAuth service
              - -6670 - HMS. An internal error of the system occurs

deliv.result - результат доставки
             -  1 - доставлено
             -  0 - в процессе доставки
             - -1 - ошибка доставки

-- для sms-рассылок (до 04.12.2013 - null, для прочих - null)

deliv.oper - оператор получателя (null)
           - other    - 0
           - megafon  - 1
           - skylink  - 2
           - mts      - 3
           - beeline  - 4
           - tele2    - 5

deliv.size - количество смс использованных для передачи сообщения (null)

deliv.cost - стоимость сообщения. сотых долях копейки (null)

-- информация о доставке ответов на данное письмо рассылки если активна настройка проксирования ответных писем получателей на письма выпуска

deliv.replyed.to - адрес получателя ответа

deliv.replyed.dt - дата и время (Ys) доставки/недоставки ответа

deliv.replyed.status - код статуса доставки/недоставки ответа. аналогичен deliv.status

deliv.replyed.errstr - строка ошибки доставки ответа (null)

-- География

deliv.member.geo.id                - числовой код географии CCCRR000 - CCC числовой код страны по ISO 3166-1, RR - для России числовой код региона по ОКАТО/ОКТМО и 00 для прочих стран и не определившегося региона России

deliv.member.geo.name              - название географии на русском языке "Страна. Регион" или "Страна" если регион не определён

deliv.member.geo.country.id        - числовой код страны по ISO 3166-1

deliv.member.geo.country.alpha2    - двухбуквенный код страны по ISO 3166-1

deliv.member.geo.country.name      - название страны на русском языке

deliv.member.geo.region.alpha5     - пятисимвольный код региона по ISO 3166-2 (имеет вид XX-XXX) для России и совпадает с alpha2 для прочих стран

deliv.member.geo.region.name       - название региона для России на русском языке, пусто для прочих стран

-- Устройство

deliv.member.gadget.gender     - Desktop, Mobile, Tablet, Proxy, Robot

deliv.member.gadget.os         - Linux, Android, Windows, iOS, Mac, Blackberry, Proxy, Other

deliv.member.gadget.browser    - Application, Firefox, Chrome, Opera, Edge, Outlook, Yandex, Safari, IE, Blackberry, Proxy, Other

deliv.member.gadget.browmajor  - старшая часть версии браузера

Вместо префикса deliv можно использовать префиксы

  • deliv_ok - только те, кому успешно доставлено
  • deliv_bad - только те, у кого ошибка доставки
  • deliv_unk - только те, кому ещё доставляется

Информация об отписке

Поля аналогичны одноимённым в stoplist.*

Но, в отличии от stoplist. (откуда запись удаляется при удалении из стоп-листа), записи в unsub. остаются навсегда.

unsub.dt     - дата получения информации об отписке (YYYY-MM-DD hh:mm:ss)

unsub.why    - способ отписки

unsub.reason - сообщение от подписчика о причине отписки если было указано (null)

unsub.label  - произвольная метка (64 байта) (null)
             - указывается в ссылке отписке в параметрe label
             - например [% param.url_unsub %]?label=campaign23

unsub.letter.* - информация о письме как в deliv.letter

unsub.member.* - информация об отписавшемся подписчике

unsub.domain.* - информация о домене отписавшегося подписчика

unsub.issue.*  - информация о выпуске из которого отписались, если он известен (null)

unsub.sender.id - номер адреса отправителя, 0 - глобальная отписка

unsub.sender.email  - адрес отправителя, null - глобальная запись

unsub.ip       - ip-адрес отписки. не для всех способов отписки. (null) (заполняется с 23 апреля 2024 года)

Клиентские метки писем

custid.name - название клиентской метки

custid.val - значение клиентской метки

custid.member.* - информация о получателе письма

custid.issue.* - информация о выпуске

custid.letter.id - информация о письме

custid.letter.dt

Выданные промо-кода

promocode.val - выданный код

promocode.dt - момент выдачи Ys

promocode.issue.* - выпуск

promocode.letter.* - письмо

promocode.member.* - подписчик

Информация о ряде данных

datarow.id    - идентификатор ряда данных

datarow.name  - название ряда данных

datarow.prec  - точность даты ряда данных

datarow.campaign.* - информация о кампаниях в которые входит ряд данных

-- Одна запись ряда данных

datarow.record.dt     - дата записи
                      - ! дата всегда возвращается с точностью Ys вне зависимости от datarow.prec

datarow.record.value  - значение записи

Стоп-лист

stoplist.dt       - дата записи (Ys)

stoplist.source   - источник (null)

stoplist.type     - А - внесено владельцем аккаунта, М - владельцем адреса

stoplist.sender.id  - номер адреса отправителя, 0 - глобальная запись

stoplist.sender.email  - адрес отправителя, null - глобальная запись

stoplist.email    - адрес

stoplist.why    - способ отписки (null)
             - 1 - нажав кнопку "Это спам" в своей почтовой системе/программе
             - 2 - по стандартной ссылке отписаться внизу письма
             - 3 - через жалобу в нашу Службу поддержки
             - 4 - нажав кнопку "Отписаться" в своей почтовой системе/программе
             - 5 - по ссылке тематической отписки в письме

stoplist.reason - сообщение от подписчика о причине отписки если было указано (null)

stoplist.label  - произвольная метка (64 байта) (null)
             - указывается в ссылке отписке в параметрe label
             - например [% param.url_unsub %]?label=campaign23

stoplist.letter.* - информация о письме как в deliv.letter (null)

stoplist.member.* - информация об отписавшемся подписчике  (null)

stoplist.domain.* - информация о домене отписавшегося подписчика  (null)

stoplist.issue.*  - информация о выпуске из которого отписались, если он известен (null)

stoplist.ip       - ip-адрес отписки. не для всех способов отписки. (null) (заполняется с 23 апреля 2024 года)

Последнее заполнение заполнения форм опросов

При повторном заполнения подписчиком формы старые данные заменяются новыми

form.id - идентификатор формы

form.name - название формы

form.state - состояние формы

form.member.id - id заполнившего

form.member.email - адрес заполнившего

form.member.dt_fill - дата заполнения Ys (null)

form.member.dt_confirm - дата подтверждения заполнения Ys (null)

form.member.issue.id - номер выпуска из которого заполнена форма  (null)

form.member.issue.draft.id - номер черновика использованного в выпуске (null)

form.member.issue.draft.name - название черновика использованного в выпуске (null)

form.member.issue.draft.alias - альтернативный идентификатор черновика использованного в выпуске (null)

form.member.letter.id - номер письма из которого заполнена форма (null)

form.member.letter.dt - дата письма из которого заполнена форма (null)

form.member.letter.custid(element_name) - значение элемента element_name пользовательской метки  письма из которого заполнена форма (null)

form.campaign.* - информация о кампаниях в которые входит форма  (null)

form.origin.* - информация об источнике, связанной с формой  (null)

Лог заполнения форм

formfilling.dt -- дата действия Ys

formfilling.id -- номер формы

formfilling.action : "showed" | "filled" | "confirmed" -- действие

formfilling.answer : {  -- ответы на вопросы для filled и confirmed (null)
                      "код вопроса" : "ответ" 
                      ......
                     }

formfilling.dt_filled -- для confirmed дата когда было filled Ys (null)

formfilling.origin.id -- номер источника, связанного с формой (null)

formfilling.ip -- ip-адрес заполнявшего

formfilling.member.id -- номер подписчика

formfilling.member.email -- идентификатор подписчика

formfilling.member.addr_type -- строка типа идентификатора подписчика (email,msisdn,csid,push,vk,viber,pushapp,tg,vknotify,max)

formfilling.member.dataset -- номер набора данных подписчика

formfilling.domain.name -- домен идентификатора подписчика

formfilling.letteer.id -- номер письма из которого произошло действие (null)

formfilling.issue.* -- информация о выпуске из письма которого произошло действие (null)

Общая информация об аккаунте

stat.common.dt     - дата (YYYY-MM-DD)

stat.common.tarif - код тарифа на эту дату

-- данные вызова member.list.count на эту дату. все поля null до 29.01.2014

stat.common.emails        - количество адресов в базе

stat.common.phones        - количество телефонов в базе

stat.common.csids         - количество пользовательских идентификаторов в базе

stat.common.pushs         - количество веб-пуш подписок в базе

stat.common.vks           - количество подписок ВКонтакте в базе

stat.common.vibers        - количество вайбер в базе

stat.common.tgs           - количество подписок Телеграм в базе

stat.common.maxs          - количество подписок MAX в базе

stat.common.active_emails - количество адресов способных участвовать в рассылках

stat.common.active_phones - количество телефонов способных участвовать в рассылках

stat.common.active_csids  - количество пользовательских идентификаторов способных участвовать в рассылках

stat.common.active_pushs  - количество веб-пуш подписок способных участвовать в рассылках

stat.common.active_vks    - количество подписок ВКонтакте способных участвовать в рассылках

stat.common.active_vibers - количество вайбер способных участвовать в рассылках

stat.common.active_tgs    - количество подписок Телеграм способных участвовать в рассылках

stat.common.active_maxs   - количество подписок MAX способных участвовать в рассылках

stat.common.locked        - уникальное количество заблокированных - не могут быть в рассылке.

stat.common.stoplist      -    в том числе заблокированные так как находятся в стоп-листе

stat.common.lockconfirm   -    в том числе заблокированные так как не подтвердили внесение в базу

stat.common.hardbounce    -    в том числе заблокированные так как имеют фатальные ошибки доставки

stat.common.lockunsub     -    в том числе заблокированные так как отписались

Информация о последовательности (триггере)

sequence.id - id последовательности

sequence.name - название последовательности

sequence.alias - алиас последовательности

sequence.addr_type - "any|email|sms|viber|push|vk|tg|vknotify|pushapp|max" - тип адресов последовательности

sequence.create.date - дата-время создания (Ys)

sequence.update.date - дата-время изменения (Ys)

sequence.dictnode - номер узла словаря

sequence.protected - защищённость от изменений

sequence.exclude.gid - код группы-исключения

sequence.exclude.name - название группы-исключения

sequence.onlyonce - однократность прохождения

sequence.parallel - параллельность прохождения

sequence.closed - закрытость последовательности

sequence.pause - последовательность на паузе

sequence.reltype - параметр классификации

sequence.relref - параметр классификации

sequence.info - произвольная информация о последовательности

sequence.progress.* - устарело, не использовать, будет удалено 17 января 2026 года. замените на sequence_progress

-- информация о каждом прохождении последовательности каждым участником

sequence_progress.id - id последовательности

sequence_progress.step - шаг в последовательности

sequence_progress.state - состояние
                            --   1 - активен - происходящие события учитываются
                            --   0 - пауза - происходящие события игнорируются
                            --  -1 - последовательность закончена
                            --  -2 - последовательность закончена из-за sequence.member.stop
                            --  -3 - последовательность закончена из-за parallel = 0 или -1
                            --  -4 - последовательность закончена из-за action = sequence.start, seqeunce.stop, sequence.goto
                            --  -5 - последовательность закончена из-за изменений по указанию
                            --  -6 - последовательность закончена из-за изменений так как участник оказался вне последовательности
                            --  -7 - последовательность закончена так как её прохождение отменено
                            --  -8 - последовательность закончена так как подписчик был удалён
                            --  -9 - последовательность закончена так как подписчик никогда не проёдёт дальше
                                     (например на шаге только member.match и ни каких альтернатив, а member.match не сработал)
                            -- -10 - отсеяно exclude_filter

sequence_progress.dt - дата-время попадания на последовательность (Ys)

sequence_progress.dt_step - дата-время попадания на текущий шаг (Ys)

sequence_progress.dt_stop - дата-время окончания прохождения последовательности. c 04 мая 2024 года. (Ys) (null)

sequence_progress.email - адрес участника

sequence_progress.addr_type - тип адреса участника email|msisdn|viber|csid|push|vk|tg|vknotify|pushapp|max

Информация о черновиках

draft.id - номер черновика

draft.name - название черновика

draft.alias - альтернативный идентификатор (null)

draft.format - "html|text|sms|viber|push|vk|tg|vknotify|pushapp|max" -- формат черновика

draft.create.time - дата и время создания" -- Ys, null

draft.update.time - дата и время последнего изменения" -- Ys, null

draft.template - 0|1 - признак черновика-шаблона

draft.public_preview - ссылка просмотра черновика без пароля

draft.thumbnail_800x600 - ссылка на изображения черновика 800x600 (подробности в draft.get) null

draft.reltype -- параметр классификации
draft.relref  -- параметр классификации

draft.sender -- Имя отправителя  (null)

draft.from -- Email отправителя  (null)

draft.link.qsid -- Параметр для отслеживания переходов по ссылкам  (null)

draft.class.id -- идентификатор класса выпуска (null)

draft.dkim.id -- идентификатор dkim-ключа  (null)

draft.issue_member_list.gid -- символ. код группы, в которую будут добавляться участники выпусков по черновику (null)

draft.issue_member_list.name -- название группы (null)

draft.issue_member_list.type -- тип группы: list или filter (null)

draft.issue_member_list.addr_type -- тип адресов: email|msisdn|viber|csid|push|vk|tg|vknotify|pushapp|max|any (null)

draft.issue_exclude_filter.gid -- симв. код группы, участники которой будут исключены из выпусков по черновику (null)

draft.issue_exclude_filter.name -- название группы (null)

draft.issue_exclude_filter.type -- тип группы: list или filter (null)

draft.issue_exclude_filter.addr_type -- тип адресов: email|msisdn|viber|csid|push|vk|tg|vknotify|pushapp|max|any (null)

draft.unsub_list.gid -- симв. код группы списка отписки черновика (null)

draft.unsub_list.name -- название группы (null)

draft.unsub_list.type -- тип группы: list или filter (null)

draft.unsub_list.addr_type -- тип адресов: email|msisdn|viber|csid|push|vk|tg|vknotify|pushapp|max|any (null)

Информация о источнике

origin.id            -- идентификатор источника

origin.name          -- название источника

origin.label         -- метка источника

origin.status        -- активность источника

origin.type          -- тип источника: "site" | "internal" | "external" | "other" 

origin.create.date   -- дата создания (Ys)

origin.update.date   -- дата изменения (Ys)

origin.reltype       -- параметр классификации
origin.relref        -- параметр классификации

Информация о бухгалтерских документах

Сами документы доступны через Хранилище (вызовы rfs.*) в области Документы (domain:"pase").

Имя файла с документом (path) строится по схеме "/<значение pase.doc.id>.pdf". Например "/123.pdf".

pase.doc.id            -- номер документа в системе

pase.doc.create.time   -- дата загрузки Ys

pase.doc.type          -- тип документа.
                       -- 0 - счёт
                       -- 1 - акт
                       -- 2 - лицензия
                       -- 3 - счет-фактура
pase.doc.dt            -- дата документа YD

pase.doc.name          -- название/номер документа в бухгалтерии

pase.doc.summa         -- сумма документа decimal(16,2) null

Комбинирование в одном запросе

Возможно одновременное использование следующих сочетаний полей в одном запросе

  • Статистика чтений со Статистикой выпусков и/ полями подписчика

  • Статистика кликов со Статистикой выпусков и/или полями подписчика

  • Статистика доставки со Статистикой выпусков и/или полями подписчика

  • Статистика выпусков с полями подписчика

Сводная статистика

Специальные названия полей используются для функций count() и sum() если в запросе участвуют несколько типов статистики.

Область вычисления функции задается аргументом.

В фильтре можно использовать поля из конкретной области статистики.

*.dt - дата события

*.issue.id - id выпуска

*.issue.name - тема выпуска

*.issue.group.id - id группы выпуска

*.issue.group.gid - код группы выпуска

*.issue.group.name - name группы выпуска

*.issue.dt - дата выпуска

*.issue.members - число получателей выпуска

*.issue.format - формат выпуска

*.issue.deliv_ok - количество успешно доставленных писем

*.issue.deliv_bad - количество писем с постоянной ошибкой доставки

*.issue.clicked - количество кликов

*.issue.u_clicked - количество уникальных кликов

*.issue.readed - количество чтений

*.issue.u_readed - количество уникальных чтений

*.issue.duration - среднее время чтений

*.issue.unsubed - количество отписок из выпуска

*.issue.draft.id - номер черновика использованного при выпуске (null)
*.issue.draft.alias - альтернативный идентификатор черновика использованного при выпуске (null)
*.issue.draft.name - название черновика использованного при выпуске (null)

*.issue.class.id - номер класса выпуска использованного при выпуске (null)
*.issue.class.alias - альтернативный идентификатор класса выпуска использованного при выпуске (null)
*.issue.class.name - название класса выпуска использованного при выпуске (null)

*.issue.form.id - номер формы использованной при выпуске (null)
*.issue.form.name - название формы использованной при выпуске (null)

*.issue.sequence.id - номер последовательности вызвавшей выпуск (null)

*.issue.variant.id - номер варианта сплит-тестирования для которого вышел выпуск (null)

*.member.id - id подписчика

*.member.email - значение email или телефона подписчика

*.member.haslock - блокировка подписчика