Мониторинг работы почтовых форм

На любом коммерческом сайте присутствуют контакты и формы сбора лидов. Если утрировать и отбросить всю мишуру, то можно сказать, что сайты создаются только ради сбора обращений. Формы могут быть разными: обратная связь, перезвонить/заказать звонок, чат с поддержкой, оформление заказа и т.д. Но важно одно, формы всегда должны быть в рабочем состоянии.

Если с контактами все понятно, достаточно поддерживать их актуальность, то с формами сложней. Не понятно, как быстро отследить, что форма перестала работать. Можно навесить цели метрики и сравнивать достижения целей с количеством обращений. Но это сложно и требует ресурсов, к тому же не всегда получится быстро среагировать на поломку – каждый день никто не будет сверять метрику и заявки.

Формы могут быть достаточно разные по функционалу и сбор лидов с них тоже разный. Начиная от простого письма на почту, заканчивая заявкой в CRM. Серьезные интеграции не всегда оправданы и зачастую даже большие организации останавливаются на классическом приеме заявок, на email. Это не столько экономия, сколько проблема отладки и доработки процессов – не просто встроить новый поток лидов в существующую систему. Проще отправить письмо менеджеру на почту, чтобы он разобрался, что дальше делать с заявкой и куда добавить контакты. Понятно, что это отнимает ресурсы и нужно автоматизировать. Так же всем понятно, что на дальней дистанции, интеграция со встраиванием заявок во все отлаженные процессы, окупится и даже принесет профит за счет разгрузки сотрудника, которому нужно разгребать почту. Но мы живем в реальном мире, где интеграции с CRM-ками встречаются на много реже, простой отправки на почту или записи в гугл таблицу.

В итоге мы имеем большое количество сайтов, где по разным страницам и разделам разнесены формы сбора пользовательских контактов, уведомления с которых отправляются на email. Почтовые отправки не стабильные, есть ряд причин, по которым письма могут перестать отправляться на почты менеджеров: сервер/хостинг попадают в бан, smtp начинает сбоить или меняются настройки, банально не оплачен smtp или обновлен от него пароль и тд. Все эти проблемы решаемы, но их сложно вовремя заметить. Проверки статуса отправки в коде не дают стопроцентную гарантию. Иногда почтовый сервер может без ошибок принимать письма, но не отправлять их или слать в спам. Поэтому просто обработки статуса отправки недостаточно, это может сыграть злую шутку – в логах все в порядке, а письма не доходят до менеджера.

Поэтому, чтобы своевременно реагировать на проблему с отправками писем, мы написали скрипт, который смотрит наш проверочный почтовый ящик наличие писем. Сам же почтовый ящик-мониторинг добавляем в копию получателей для каждой формы, нуждающейся в проверке. То есть мы не надеемся на условия ответа smtp или простого mail. И ложный статус «успеха» от почтового сервера уже никак не повлияет на проверку работоспособности форм. Письмо либо пришло, либо нет, по-другому трактовать не получится. Скрипт мониторинга каждый час подключается к почтовому сервису по IMAP-протоколу, проверяет наличие новых писем и делает их выборку по маске в теме: «Название сайта – название формы». Дальше дело техники – посчитать письма и записать данные в базу данных с разбивкой по доменам и названиям форм. А чтобы держать руку на пульсе, каждое утро собирается отчет, который отправляет бот в телеграм. Трафик на клиентских сайтах такой, что нам достаточно двух уведомлений для оперативного реагирования с минимальными потерями в случае поломок: отчет по всем формам за вчерашний день и сводка по сайтам/формам, с которых уже три дня не приходили письма, это повод проверить форму на работоспособность. Ну и конечно, кроме отправки писем, все данные дублируются в базе данных, чтобы в случаи аварии и ее обнаружении, можно было сделать выгрузку всех потерянных лидов.

Пример сообщений от бота
Пример сообщений от бота

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

Статистика по формам для одного сайта
Статистика по формам для одного сайта

Спасибо за внимание) Если есть идеи, как упростить проверку или наоборот доработать наш вариант реализации, то пишите в комментарии или присылайте в телеграм: мне в ЛС или в группу БАГодельня, где я делюсь подобными наработками нашей команды, кейсами, кодом и другими разработческими штуками.

Начать дискуссию