Заявки из почты в CRM и ERPNext: Email Account и правила
АйТи Фреш
IT-аутсорсинг и бизнес

Письмо пришло, заявки нет: как настроить почту в CRM и ERPNext, чтобы переписка не терялась

Автор: , директор ООО «АйТи-Фреш» · · ~15 мин чтения
Почтовый ящик юрфирмы: письма проходят через сито и ложатся папками-карточками, спам отлетает
Письма из ящика заявок должны превращаться в карточки, а не теряться.

Чтобы письма превращались в заявки, нужен выделенный ящик, подключённый по IMAP, и правило, что считать заявкой. В ERPNext это Email Account с полем Append To, в нашей CRM опрос ящика каждые 1–2 минуты. Ниже схема, настройка, типовые ошибки и пример юрфирмы.

Как письмо становится лидом: общая схема для CRM и ERPNext

Типичная жалоба, с которой ко мне приходят: клиент написал на общий адрес, письмо прочитал один человек, ответил ли он и завёл ли заявку, не знает никто. Через неделю клиент уходит к тем, кто ответил быстрее. Решение в принципе одно и то же в любой системе: письма из выделенного ящика автоматически попадают в CRM, привязываются к клиенту, из них создаётся обращение, а ответ уходит из карточки и ложится в ту же цепочку. Мы реализуем это в продукте CRM + AI-отдел продаж, а в ERPNext то же самое достигается настройкой почтового аккаунта; ниже сравниваю оба варианта.

Как это устроено в ERPNext, по исходникам Frappe версии 15. Входящие письма сохраняются как документы Communication. Если письмо относится к существующему документу, оно к нему привязывается: система ищет родителя по заголовку ответа, по номеру документа в теме вида «#LEAD-…» и по совпадению темы и отправителя среди записей за последние 60 дней. Если ничего не найдено, а в почтовом аккаунте указан «Append To», создаётся новая запись этого типа: тема письма попадает в заголовок (первые 140 знаков), адрес отправителя в поле почты, а обязательные поля не проверяются. Для Lead такая настройка доступна из коробки: у типа документа включена возможность «Append To».

В нашей CRM схема другая по форме, но та же по смыслу. По описанию продукта система опрашивает ящик каждые 1–2 минуты, цепочки писем собираются в один диалог, а ответ уходит в ту же ветку. Клиент опознаётся по любому контакту: из какого бы канала он ни написал, он попадает в одну карточку, а незнакомый контакт автоматически создаёт клиента и лид с правильным источником. Почта, Telegram и сайт видны в единой ленте «Диалоги».

Сравнение двух вариантов по ключевым параметрам: | Параметр | ERPNext (Email Account) | CRM + AI-отдел продаж | |---|---|---| | Опрос ящика | по расписанию, в v15 раз в 10 минут | каждые 1–2 минуты | | Что создаётся из письма | Communication и запись типа Append To (например, Lead) | диалог, клиент и лид | | Цепочка писем | по ответу, по номеру в теме и по теме с отправителем | один диалог на цепочку | | Ответ клиенту | из документа, в ту же цепочку | из карточки, в ту же ветку | | Правила «заявка или нет» | нет в самом аккаунте, нужны фильтры на стороне почты | отдельный ящик под заявки и разбор диалогов |

Как подключить ящик: Email Account, IMAP и SMTP

Начну с выбора ящика. Заявки должны приходить на отдельный адрес вида zayavki@example.com, а не в личную почту директора и не в общий info@, куда сыплются рассылки поставщиков. Отдельный ящик это единственная надёжная мера против мусора в CRM, о ней ещё скажу в разделе про правила. Если почту вы держите у себя, посмотрите материалы про свой почтовый сервер или облако и про корпоративную почту.

Настройка в ERPNext делается записью Email Account. Поля, которые я заполняю, по порядку: «Email Address» и «Email Account Name» (например, «Заявки»); «Service» (есть варианты GMail, Outlook.com, Yandex.Mail и другие, для своего сервера оставляем пустым); для входящей почты включить «Enable Incoming», выбрать «Use IMAP», указать «Incoming Server», порт и «Use SSL»; для исходящей включить «Enable Outgoing» и указать «Outgoing Server», порт и «Use TLS» или SSL. Дальше самое важное для заявок: в поле «Append To» выбираем Lead. Тогда каждое новое письмо без родителя превращается в лид.

Несколько настроек, которые стоит знать. «Email Sync Option» принимает значения ALL и UNSEEN: UNSEEN читает только непрочитанные, и это безопаснее для общего ящика, когда люди тоже смотрят его глазами. «Initial Sync Count» (100, 250 или 500) определяет, сколько писем загрузить при первой синхронизации, так что подключайте ящик с большим архивом с запасом и проверяйте результат. «Create Contacts from Incoming Emails» (по умолчанию включён) создаёт контакты из писем, а «Enable Automatic Linking in Documents» привязывает письма к документам автоматически. У аккаунта есть таблица папок «IMAP Folder»: для каждой папки можно указать собственный «Append To». Это удобно: почтовый сервер раскладывает письма по папкам правилами, а ERPNext превращает в лиды только письма из нужной папки.

Основной ящик (с флагами «Default Incoming» и «Default Outgoing») используется системой для уведомлений и рассылок, поэтому для заявок заводят отдельный аккаунт без этих флагов, чтобы системные письма не смешивались с перепиской клиентов. Подпись, автоответ и «Always use this email address as sender address» тоже задаются на аккаунте. Для автоответа в поле сообщения есть подсказка: добавить в него ссылку на документ, чтобы клиент мог ответить в той же цепочке.

Почему письма не уходят: Gmail, Microsoft и пароли приложений

Вторая по частоте жалоба: «письма не уходят» или «ERPNext не отправляет через Gmail». Причины почти всегда одни из трёх. Первая: аутентификация. Для Gmail обычный пароль не принимается, нужна двухфакторная аутентификация и пароль приложения; это написано в документации ERPNext. У Microsoft обычный пароль для почтовых протоколов тоже ограничен, и правильный путь это метод «OAuth» с привязкой Connected App; в Email Account для этого есть поля «Method» (Basic или OAuth) и «Connected App». Вторая причина: адрес отправителя не совпадает с авторизованным адресом, и Microsoft отклоняет такую отправку. Третья причина: фоновые задачи.

Про фоновые задачи объясню подробно, потому что это ловушка для тех, кто смотрит только на настройки аккаунта. Исходящие письма не уходят сразу: они попадают в очередь Email Queue, и очередь разбирает планировщик. В списке очереди видны статусы Not Sent, Sending, Sent, Partially Sent и Error. Если много писем висит в Not Sent, смотрите не на аккаунт, а на планировщик и рабочие процессы. Диагностика командами bench:

bench --site site1.example.com scheduler status
bench --site site1.example.com doctor
bench --site site1.example.com show-pending-jobs

Первая команда показывает, включён ли планировщик для сайта. Вторая выводит состояние фоновых воркеров и очереди, третья список заданий, ожидающих выполнения. Если планировщик отключён, его включают командой enable-scheduler. Здесь же покажу и обратную сторону: входящую почту забирает та же система расписания, и в v15 задача опроса ящиков стоит в расписании раз в десять минут, так что письмо появится в CRM не мгновенно.

Ещё одно ограничение, о котором забывают: у обычных почтовых сервисов, таких как Gmail, есть суточный лимит на количество писем. Если вы планируете массовые рассылки, нужен почтовый сервис или своя связка, а не личный ящик. Про настройку паролей приложений на своём сервере у меня есть отдельная заметка: пароли приложений для IMAP и SMTP в Mailcow. Диагностику очередей и планировщика в ERPNext я подробно раскрываю в отдельном техническом материале; здесь важно понять логику: проблема в трёх слоях, аккаунт, очередь и воркер, и проверять их нужно по порядку.

Правила: что считать заявкой, а что просто перепиской

Теперь самое болезненное. Если настроить «Append To = Lead» и ничего больше, каждое входящее письмо, которое система не смогла привязать к существующему документу, станет новым лидом. Это уведомления сервисов, рассылки, автоответы, ответы с чужих адресов. Я искал в аккаунте ERPNext настройки фильтров по отправителям и темам и не нашёл: фильтрация в самом Email Account отсутствует. Значит, правила надо строить вокруг системы, а не внутри неё. Плюс в v15 в CRM Settings по умолчанию включена настройка Auto Creation of Contact: каждый новый Lead сразу порождает Contact, а на аккаунте ещё стоит флажок «Create Contacts from Incoming Emails» (тоже включён по умолчанию). Без фильтров справочник контактов быстро превращается в свалку, поэтому для ящика заявок я одну из этих настроек выключаю.

Что работает на практике, от простого к сложному. Первое: отдельный ящик под заявки, адрес которого вы публикуете на сайте и в подписях. Второе: фильтры на стороне почтового сервера, которые отправляют всё явно не заявочное (рассылки, уведомления) в другую папку, а в таблице «IMAP Folder» аккаунта только папка заявок имеет «Append To = Lead». Третье: антиспам на уровне сервера, а не CRM; про это есть материал про корпоративный антиспам. Четвёртое: отдельный ящик под рассылки, чтобы ответы на них не мешали заявкам.

Что считать заявкой, я прошу заказчика записать в одном абзаце до настройки. Например: письмо от нового адреса с вопросом о услуге это заявка; письмо от существующего клиента это переписка по его карточке; автоматические уведомления это не заявка. У юристов добавляется критерий конфиденциальности: письма с пометкой от действующего клиента не должны попадать в общий пул. В нашей CRM я тоже рекомендую отдельный ящик под заявки, а сами правила приёма мы настраиваем вместе с вами при внедрении, потому что они зависят от того, как вы работаете.

Без правил каждое письмо без родителя становится лидом. Фильтрация в Email Account отсутствует, поэтому разделяйте потоки заранее: отдельный ящик, фильтры на почтовом сервере и папка заявок в таблице IMAP Folder.

Исходящая почта: шаблоны, PDF и согласование из письма

Входящая часть закрыта, переходим к исходящей. Менеджер отвечает на заявку из карточки, а не из личной почты, иначе цепочка рвётся. Для типовых ответов в ERPNext есть шаблоны писем (Email Template): тема и текст с подстановкой значений из документа. Я заводил на проектах три шаблона на старте: «Получили заявку, ответим в течение рабочего дня», «Нужны дополнительные данные», «Коммерческое предложение во вложении». Шаблоны привязаны к понятным ситуациям, и менеджер не пишет с нуля.

Уведомления и согласования строятся на документе Notification: он срабатывает по событию (создание, сохранение, проведение, изменение поля или дата), поддерживает шаблоны Jinja, вложение PDF печатной формы и адресацию по ролям. Для простых рассылок по лидам в Campaign есть расписание писем: в строке указывают шаблон и поле «Send After (days)», то есть день отправки относительно даты старта. Есть и приятная для руководителя возможность: действия Workflow (Approve, Reject) выполняются прямо из письма по подписанной ссылке через метод apply_action. Подписанная ссылка проверяется, а при смене состояния документа открывается страница «ссылка устарела». Срока действия по времени в коде я не нашёл, поэтому ограничение по времени и по пользователю это ваша политика: проверьте её в своей версии.

Про ограничение, о котором надо предупредить. Встроенный почтовый ящик в ERPNext слабее профильных клиентов: нет древовидной группировки писем и кнопок перехода между письмами, а письма из Quotation не всегда видны в таймлайне Lead или Customer. Частично это лечит настройка CRM Settings → Carry Forward Communication and Comments (по умолчанию выключена): при конвертации переписка переносится в следующий документ цепочки, проверьте её на своей версии. Поэтому для юристов и других компаний, где переписка это основной рабочий материал, я предпочитаю CRM с единой лентой диалогов, а ERPNext оставляю там, где почта сопровождает закупки и согласования.

Разбор случая: юридическая фирма «Закон и Порядок Юг» на 16 рабочих мест

Условный пример. Юридическая фирма «Закон и Порядок Юг», 16 рабочих мест: шесть юристов, два помощника, два менеджера по развитию, бухгалтер, офис-менеджер, руководитель и три сотрудника сопровождения. Заявки приходили на общий адрес и в личные ящики, часть писем терялась. Пересылки между сотрудниками шли в обход любой учётной системы. Задача: чтобы каждое письмо клиента попадало в карточку, а ответ уходил в ту же цепочку.

Подключили за три шага. День первый: завели общий ящик zayavki@ и отправили тестовые письма с нескольких адресов, проверили, что они превратились в обращения, а ответ из карточки вернулся клиенту в ту же ветку. День второй: настроили фильтры на стороне почтового сервера (рассылки и уведомления в отдельную папку), завели три шаблона ответа и подписи по ролям. День третий: обучение сотрудников и сверка. Мы взяли сутки реальной почты и проверили, что каждое письмо стало обращением, а лишних не появилось.

Что важно именно для юристов. ИИ-ответы в карточках мы не включали: консультации даёт юрист, а AI-контур в нашей CRM включается поверх поэтапно и управляемо, так что его можно оставить выключенным. Данные хранятся на сервере фирмы, а не в облаке вендора, и это важно для конфиденциальности переписки. Если бы та же фирма уже работала в ERPNext, мы настроили бы аккаунт с «Append To = Lead», учитывая опрос раз в десять минут и отсутствие фильтров, о которых говорилось выше.

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

Частые вопросы

Как настроить получение заявок с почты в ERPNext?

Создайте Email Account с IMAP для входящих и SMTP для исходящих, включите приём, а в поле Append To выберите Lead. Письма сохраняются как Communication и привязываются к существующему документу, а при отсутствии родителя создаётся лид. В v15 ящик опрашивается по расписанию раз в десять минут.

Почему ERPNext не отправляет письма через Gmail?

Для Gmail нужны двухфакторная аутентификация и пароль приложения. У Microsoft обычный пароль ограничен, используйте метод OAuth и Connected App, отправляйте с авторизованного адреса. Если письма висят в Not Sent, проверьте планировщик командой bench --site имя scheduler status и очередь Email Queue.

Как в нашей CRM работает приём писем?

Система опрашивает ящик каждые 1–2 минуты, цепочка писем собирается в один диалог, ответ уходит в ту же ветку. Клиент опознаётся по любому контакту, незнакомый адрес создаёт клиента и лид с источником. Почта, Telegram и сайт видны в единой ленте диалогов.

Можно ли согласовывать документы прямо из письма?

Да: действия Workflow (Approve, Reject) выполняются по подписанной ссылке из письма через метод apply_action. После смены состояния документа ссылка показывает страницу «устарела». Срока действия по времени я в коде не нашёл, поэтому ограничения по времени и пользователю задавайте политикой и проверяйте в своей версии.

Не засорит ли CRM спам и рассылки?

Засорит, если ничего не настроить: в Email Account нет фильтров по отправителям и темам, и любое письмо без родителя станет лидом. Заведите отдельный ящик под заявки, фильтры и антиспам держите на почтовом сервере, а в таблице IMAP Folder включайте Append To только для папки заявок.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи