При просмотре статистики, настройке и анализе вебхуков, получении результатов отправки писем Unisender Go выдаёт статусы писем разной степени подробности. В этой статье описано, какие статусы бывают и как их обрабатывать.
Стандартные статусы
На верхнем уровне можно выделить 9 стандартных статусов письма. Именно этот стандартный статус приходит в вебхуке или выгружается методами event-dump/* в поле status:
- sent — сообщение отправлено. Этот статус не позволяет понять, было ли доставлено сообщение, он всего лишь сообщает о факте прохождения письмом всех проверок на корректность и постановки сообщения в очередь на отправку.
- delivered — сообщение успешно доставлено, т.е. принято сервером получателя. Позже этот статус может измениться на “opened”, “clicked”, “unsubscribed”, “subscribed” или “spam”.
- opened — сообщение доставлено и зарегистрировано его прочтение. Может измениться на “clicked”, “unsubscribed”, “subscribed” или “spam”. Прочтения регистрируются только в случае, если в параметрах отправки письма был использован параметр track_read=1.
- clicked — сообщение доставлено, прочитано и был зарегистрирован переход по одной из ссылок в письме. Может измениться на “unsubscribed”, “subscribed” или “spam”. Переходы по ссылкам регистрируются только в случае, если в параметрах отправки письма был использован параметр track_links=1.
- unsubscribed — сообщение было доставлено получателю и прочитано им, но пользователь отписался по ссылке в письме или по ссылке в заголовке List-Unsubscribe. Может измениться “subscribed”.
- subscribed — сообщение было доставлено получателю и прочитано им, но пользователь отписался, а потом снова подписался по ссылке в письме. Может измениться на “unsubscribed”.
- soft_bounced — временная недоставка сообщения. Unisender Go продолжает попытки доставки в течение 2 суток. В случае успешной доставки письмо перейдёт в статус “delivered”, в случае неуспешной - в “hard_bounced”.
- hard_bounced - доставка не удалась, попыток доставки больше не будет. Статус окончательный. Возможных причин неудачной доставки масса, для их анализа можно использовать текст ответа SMTP-сервера из поля delivery_info.destination_response или нашу внутреннюю классификацию ошибок из поля delivery_info.delivery_status, описанную ниже. ВАЖНО: hard_bounced не означает автоматически, что адресат не существует и не сможет получать сообщения в будущем - он означает, что вот это конкретное письмо не может быть доставлено. В зависимости от delivery_status причина может быть и в том, что адрес неправильный, и в блокировке от спама, и в том, что просто почтовый ящик получателя переполнен.
- spam — сообщение доставлено, но было отмечено как "спам" самим получателем. Статус окончательный. Такая информация может быть получена только от доменов, поддерживающих соответствующие оповещения (используя технологию FBL), например: mail.ru, msn.com, outlook.com, hotmail.com, live.com, ukr.net, yahoo.com, aol.com.
Расширенные статусы
Если при установке вебхука методом webhook/set вы указали "delivery_info"=1, то в вебхуке вы будете дополнительно получать расширенный статус письма. Также этот расширенный статус доступен при выгрузке CSV событий методами event-dump/* или в разделе "Статистика", личного кабинета. Основываясь именно на этом расширенном статусе, мы даём классификацию ошибок в статистике недоставок.
Расширенные статусы мы получаем, в т.ч. основываясь на многолетнем анализе ответов SMTP-серверов - зачастую недостаточно смотреть только на код ошибки и даже на сообщение об ошибке, порой надо знать особенности конкретных mailbox-провайдеров, чтобы правильно интерпретировать их ответ. И поскольку поведение mailbox-провайдеров меняется, есть вероятность и изменения интерпретации текущих расширенных статусов, и даже появления новых. Поэтому мы не приводим здесь исчерпывающий список расширенных статусов и не гарантируем, что список этих статусов останется фиксированным - но гарантируем, что семантический смысл уже существующих статусов меняться не будет.
Не для всех событий, отправляемых в виде вебхука, доступен расширенный статус. И если он недоступен, то событие стоит интерпретировать, основываясь на семантике стандартных статусов, описанных выше.
Ниже приведена таблица расширенных статусов, поделенная на группы в зависимости от предполагаемой реакции на эти статусы.
Успех |
|
ok_sent |
Сообщение было отправлено, промежуточный статус до получения ответа о доставке/недоставке. |
ok_delivered |
Сообщение доставлено. |
ok_read |
Сообщение доставлено и зарегистрировано его прочтение. |
ok_link_visited |
Сообщение доставлено, прочитано и выполнен переход по одной из ссылок. |
Жалоба и отписка - получатель заносится в списки пожаловавшихся/отписавшихся и последующие отправки на этот адрес Unisender Go блокирует, пока адресат не будет удален из списка блокировки через suppression/delete |
|
ok_spam_folder |
Письмо доставлено, но сервер получателя поместил его в папку «Спам». |
ok_fbl |
Сообщение доставлено, но помещено в папку "спам" самим получателем. |
ok_unsubscribed |
Сообщение доставлено и прочитано, но пользователь отписался по ссылке в письме. |
Временная ошибка - soft bounce, попытки доставки будут продолжены |
|
err_will_retry |
Одна или несколько попыток доставки оказались неудачными, но попытки продолжаются. Статус неокончательный. |
Несуществующие - сервер ответил, что адрес не существует. Unisender Go предотвращает попытки отправки на такие адреса в будущем на длительный срок, для большинства mailbox-провайдеров это полгода. Но не навсегда - не исключено, что в будущем такой адрес всё-таки может быть зарегистрирован или реанимирован. |
|
err_user_unknown |
Адрес не существует (и неизвестно, существовал ли когда-либо). |
err_user_inactive |
Адрес когда-то существовал, но сейчас не используется. Доставка не удалась. |
err_mailbox_discarded |
Почтовый ящик получателя удален. |
Отклонены как спам - когда сервер явно сообщает, что не будет принимать письмо, т.к. считает его спамом. Это не всегда означает, что следующее письмо от этого же отправителя будет тоже отклонено. |
|
err_spam_rejected |
Письмо отвергнуто как спам сервером получателя. |
err_spam_skipped |
Отправка отменена системой из-за блокировки рассылки как спама. |
err_spam_removed |
Отправка отменена системой из-за блокировки рассылки как спама (на более поздней стадии). |
Недоступные надолго - в результате многократных попыток неудачной доставки различных писем адрес помечен нами как недоступный на длительный период (полгода для большинства mailbox-провайдеров), и попытки отправки на этот адрес будут отфильтрованы нами. |
|
err_unreachable |
Адрес помечен как постоянно недоступный по причине многократных ошибок доставки на этот адрес. |
skip_dup_unreachable |
Отправка отменена по причине недоступности адреса. |
Недоступные - попытка доставки не удалась, но email не помечается как недоступный на долгое время, и доступен для отправки следующих писем либо сразу, либо через несколько дней. |
|
err_mailbox_full |
Почтовый ящик переполнен. |
skip_dup_mailbox_full |
Отправка отменена из-за полученного ранее статуса err_mailbox_full. |
err_too_large |
По мнению сервера получателя, письмо превышает допустимый размер. |
err_unsubscribed |
Адресат ранее отписался от ваших рассылок. |
err_blacklisted |
Письмо было отклонено по причине наличия IP-адреса или домена отправителя в каком-то из чёрных списков. |
err_skip_letter |
Отправка отменена, так как email адрес временно недоступен. |
err_domain_inactive |
Домен не принимает почту или не существует. |
err_destination_misconfigured |
Домен не принимает почту из-за неверной настройки на стороне получателя, причем ответ сервера содержит информацию об устранимой причине (например, используется неработающий блеклист и т. п.). |
skip_dup_temp_unreachable |
Отправка отменена, по причине временной недоступности адреса. |
err_lost |
Письмо не было отправлено из-за несогласованности его частей, или было утеряно из-за сбоя на нашей стороне. Отправитель должен переотправить письмо самостоятельно, т.к. оригинал не сохранился. |
err_internal |
Внутренний сбой. Необходима переотправка письма. |
err_delivery_failed |
Доставка не удалась по иным причинам. |
Причины блокировки отправки
В некоторых случаях Unisender Go предотвращает отправку писем - например, не давая их отправить ранее отписавшимся. В таких случаях метод email/send возвращает причину блокировки. Аналогичную причину можно получить, обратившись к методам suppression/get или suppression/list, позволяющим работать со списками заблокированных адресов.
Причина блокировки - это не статус отправки письма, это скорее статус самого email-адреса, но она тесно связана с предыдущими результатами отправки, поэтому мы сочли полезным описать возможные причины здесь.
Причины блокировки могут быть такими:
unsubscribed |
Адресат ранее перешёл по ссылке отписки из письма или заголовка List-Unsubscribe, либо был внесён в список отписавшихся методом suppression/set. |
temporary_unavailable |
Одна или несколько предыдущих отправок на этот адрес закончились неудачно, и адрес помечен как “временно недоступный”. Через несколько дней он будет удален из временно недоступных и на него снова можно будет отправлять письма. Причины недоступности могут быть самыми разными и описаны выше, в таблице с расширенными статусами - например, ящик может быть переполнен или предыдущее письмо было заблокировано как спам. |
permanent_unavailable |
Адрес постоянно недоступен из-за многократных недоставок. Строго говоря, это не совсем “постоянная” недоступность - в этом статусе адрес пребывает обычно около полугода, прежде чем снова становится доступен для отправок. |
complained |
Адресат нажал на кнопку “Это спам” или иным образом пожаловался на одно из предыдущих писем, либо был внесен в список пожаловавшихся методом suppression/set. |
blocked |
Адрес заблокирован для отправки на уровне системы. Таких адресов очень ограниченное количество - это могут быть спам-ловушки или адреса наподобие support@gmail.com, которые явно не являются адресами физических лиц. |
invalid |
Email-адрес некорректен (например, без символа “@”). |
duplicate |
Дубликат email-адреса - эта причина блокировки возникает в случае, когда при отправке письма один и тот же email-адрес указан несколько раз. |