Письмо пришло, заявки нет: как настроить почту в CRM и ERPNext, чтобы переписка не терялась
Чтобы письма превращались в заявки, нужен выделенный ящик, подключённый по 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 я тоже рекомендую отдельный ящик под заявки, а сами правила приёма мы настраиваем вместе с вами при внедрении, потому что они зависят от того, как вы работаете.
Исходящая почта: шаблоны, 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», учитывая опрос раз в десять минут и отсутствие фильтров, о которых говорилось выше.
Итог в терминах, которые можно проверить, а не обещаний: письма из ящика заявок превращаются в обращения, повторные письма клиента попадают в тот же диалог, у каждой заявки есть ответственный. Через месяц я прошу сверить число входящих писем и число обращений: расхождения означают дырявые правила. Показать схему можно на демостенде по запросу.
- День 1: общий ящик zayavki@, тестовые письма с нескольких адресов, проверка ответа в ту же цепочку.
- День 2: фильтры рассылок на сервере, три шаблона ответа, подписи по ролям.
- День 3: обучение сотрудников, сверка суток почты с созданными обращениями.
- Контроль через месяц: число входящих писем сопоставляется с числом обращений.
Частые вопросы
Как настроить получение заявок с почты в 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 только для папки заявок.
Источники
- Исходники Frappe v15: Email Account и приём писем (GitHub) — Проверены поля Email Account (append_to, use_imap, enable_incoming, email_sync_option, initial_sync_count, create_contact, auth_method, connected_app, imap_folder) и логика поиска родителя и создания документа по письму в frappe/email/receive.py. https://github.com/frappe/frappe/blob/version-15/frappe/email/receive.py
- Исходники Frappe v15: расписание и команды (GitHub) — Проверено: задача email_account.pull в cron раз в 10 минут, статусы Email Queue (Not Sent, Sending, Sent, Partially Sent, Error), команды scheduler status, doctor, show-pending-jobs, подписанные ссылки Workflow Action (apply_action). https://github.com/frappe/frappe/blob/version-15/frappe/hooks.py
- Документация ERPNext: Email Account — Проверено: пароль приложения для Gmail, Email Sync Option, Enable Automatic Linking in Documents, суточные лимиты обычных почтовых сервисов. https://docs.frappe.io/erpnext/user/manual/en/email-account Дополнительно по исходнику ERPNext v15: CRM Settings (auto_creation_of_contact=1, carry_forward_communication_and_comments=0) https://github.com/frappe/erpnext/blob/version-15/erpnext/crm/doctype/crm_settings/crm_settings.json
- Страница продукта «CRM + AI-отдел продаж» — Проверено 01.10.2026: опрос ящика каждые 1–2 минуты, цепочки в один диалог, идентификация клиента по контакту, единая лента диалогов, self-hosted. https://itfresh.ru/products/crm-ai/
- Главы 04, 06 и 08 базы знаний ITfresh — Ограничения встроенного Email Inbox, Notification и действия Workflow из письма, ошибки Gmail и Microsoft. projects/erpnext-kb-20261001/kb/06_crm.md
