Заявка с сайта в CRM: Payload CMS, Activepieces и EspoCRM
Заявку с сайта сначала сохраняют, затем передают в CRM и назначают менеджера. Тогда сбой связи не заставляет клиента заполнять форму заново. Начните с одной учебной заявки: проверьте её номер, поля, права и повторную отправку. Надёжный обмен между Payload, Activepieces и EspoCRM требует отдельной разработки.
Что подготовить
- Учебная форма на сайте Payload/Next.js, Activepieces и отдельный EspoCRM без реальных заявок клиентов.
- Список полей, правило назначения менеджера и срок, за который обращение должно попасть в работу.
- Разработчик обмена и ответственный сотрудник, который найдёт заявку при ошибке.
Что должно произойти с заявкой #
В консалтинговой фирме восемь сотрудников. Посетитель оставляет вопрос на сайте, менеджер должен увидеть его в CRM — системе работы с клиентами. Первый шаг — согласовать путь одной заявки и проверить его на вымышленных данных.
На сайте. Обращение сохранено и получило номер. Клиент видит понятное подтверждение приёма.
В CRM. Есть карточка с нужным контактом, темой и текстом. Она связана с исходным номером заявки.
У менеджера. Известно, кто отвечает и когда должен связаться с клиентом. При ошибке назначен человек, который завершит передачу.
Сообщение клиенту должно соответствовать сделанному. Если сайт сохранил заявку, напишите «Заявка принята» и покажите номер. Сообщать, что менеджер её уже получил, стоит после передачи. При сбое клиент не должен гадать, нужно ли отправлять форму снова.
Какие части нужно разработать #
| Часть работы | Что даёт система | Что готовит команда |
|---|---|---|
| Сайт Payload/Next.js | Хранение записей, API и настройка прав | Проверка формы, защита от лишних запросов и сохранение обращения |
| Передача после сохранения | Запуск обработчика изменений | Очередь отправки, проверка отправителя, повторы и состояния |
| Activepieces | Приём Webhook и шаги обращения к другим системам | Связь полей и обработка ошибок |
| EspoCRM | Аккаунты обмена, права и API | Поле исходного номера, защита от дублей и назначение менеджера |
| Сообщение команде | Выбранный канал связи | Текст, адресат и следующий шаг менеджера |
Payload хранит записи сайта и позволяет запускать обработку после изменений. Activepieces выполняет настроенную цепочку шагов. EspoCRM принимает данные через API — способ обмена между программами. В таблице выше показано, какие части команда готовит для вашего сайта.
В Payload обработчик afterChange запускается после изменения записи. Одного запроса из него недостаточно для надёжной передачи: сеть может оборваться или программа остановиться. Принятая заявка должна оставаться доступной для дальнейшей отправки.
Разработчик сохраняет заявку и запись в очереди отправки вместе, затем отдельный процесс передаёт данные. Для выбранной базы нужно проверить, что сохраняются обе записи либо ни одна. Порядок повторов и проверки отправителя также входит в разработку.
Какие данные передавать и кто их видит #
В примере ниже requestId — номер одной заявки. Сервер сохраняет его и использует при каждом повторе. Почта и имя не заменяют номер: один человек может задать два разных вопроса, которые должны остаться разными обращениями.
schemaVersion обозначает версию набора полей. Сервер проверяет размер сообщения, нужные поля и способ связи до сохранения. Проверка в браузере помогает посетителю заполнить форму, но сервер всё равно должен проверить пришедшие данные сам.
{
"schemaVersion": 1,
"eventType": "website.request.created",
"requestId": "demo-web-0001",
"createdAt": "2026-10-07T09:00:00Z",
"contact": {"firstName":"Учебный","lastName":"Клиент","email":"demo@example.com"},
"request": {"topic":"Настройка CRM","message":"Нужна консультация","page":"/services/crm/"}
}Посетитель сайта. Может отправить свою форму, но не читать, менять или удалять прежние обращения.
Подключение к CRM. Ключ хранится на сервере или в закрытых настройках Activepieces. Браузер посетителя не должен получать его вместе с кодом формы.
Отправитель сообщения. Activepieces должен проверить, что запрос пришёл от вашего сайта. Длинный случайный адрес сам по себе не заменяет проверку отправителя.
В Payload права задаются отдельно для каждой операции. Разработчик также проверяет режим overrideAccess и пользователя при внутренних запросах через Local API. Эти настройки нужно учесть, чтобы внутреннее обращение не обошло нужные ограничения.
Как заполнить карточку в EspoCRM #
В EspoCRM создайте API User — отдельный аккаунт для обмена с ограниченными правами. Для примера используется Lead — карточка нового обращения. Разработчик связывает поля события с нужными полями вашей CRM и проверяет обязательные значения.
Для хранения исходного номера заранее создайте поле cSourceRequestId. Функция ниже подготавливает имя, почту, текст и этот номер. Отправка выполняется отдельным запросом к api/v1; метод POST создаёт карточку, после чего нужно сохранить её номер.
Проверка почты в функции лишь ищет знак @. Перед её вызовом рабочая обработка должна проверить весь набор данных, размер и пустые значения. Менеджера назначают по согласованному правилу; текст вопроса сохраняют как данные, без исполнения HTML.
function mapToLead(event) {
if (event.schemaVersion !== 1 || event.eventType !== "website.request.created") {
throw new Error("Unsupported event");
}
if (typeof event.requestId !== "string" || !event.requestId.trim()) {
throw new Error("Missing requestId");
}
const email = event.contact?.email;
if (typeof email !== "string" || !email.includes("@")) {
throw new Error("Missing contact email");
}
return {
firstName: String(event.contact.firstName ?? "").trim(),
lastName: String(event.contact.lastName ?? "").trim(),
emailAddress: email.trim(),
description: `${event.request?.topic ?? ""}
${event.request?.message ?? ""}`,
cSourceRequestId: event.requestId
};
}Как повторить отправку без дубля #
Связь может оборваться после того, как EspoCRM создала карточку. Если просто повторить создание, получится дубль. Сначала выясните по исходному номеру, появилась ли запись, и только затем решайте, нужна ли повторная отправка.
Поиск перед созданием не защищает от двух одновременных запросов. На стороне CRM нужна проверка номера и запись как одна неделимая операция либо специально разработанный обработчик повторов. Одного журнала на сайте для этого недостаточно.
Неверные поля. Оставьте заявку на исправление. Сохраните причину и назначьте сотрудника.
Нет доступа. Проверьте ключ и роль аккаунта обмена. Повтор не исправит отсутствующее разрешение.
Временный сбой. Разрешите несколько попыток с паузой. Если неизвестно, создалась ли карточка, сначала найдите её в CRM.
Используйте понятные состояния: ждёт отправки, обрабатывается, передана, ошибка, результат неизвестен. Последнее важно отличать от обычного отказа. Сотрудник должен видеть номер заявки, попытки и найденную карточку, чтобы закончить работу без догадок.
Проверка от формы до карточки
- Создайте аккаунт обмена с ограниченными правами и собственное поле cSourceRequestId в учебной CRM.
- Отправьте форму, сохраните requestId и найдите принятую заявку на сайте.
- Проверьте данные события и карточку CRM: исходный номер и поля должны совпасть.
- Повторите событие, затем отправьте две копии одновременно. Проверьте защиту от двойного создания.
- Отключите связь до отправки и отдельно воспроизведите потерю ответа после записи. Сотрудник должен различать эти случаи.
- Попросите коллегу найти задержанную заявку и завершить разбор по вашей инструкции.
Кто следит за заявками и исправляет ошибки #
В журнале нужны номер заявки, время, этап, результат, число попыток и номер карточки CRM. Контакты доступны только тем, кому они нужны. Ключи доступа не должны попадать в сообщения об ошибках или общедоступные журналы.
Следите за временем ожидания и необработанными ошибками, а не только за работой сервера Activepieces. Если сайт принимает заявки, очередь не должна незаметно расти несколько дней. Ответственный сотрудник должен знать, где найти задержку и как её исправить.
В расходы входят три системы, копии, обновления и обслуживание обмена. После смены обязательного поля или шага повторите обычную отправку, неверные данные, дубль и сбой. Сохраняйте настройки, версии и описание полей; уведомления добавляйте после проверки передачи самой заявки.
Можно включать рабочую форму, когда
- Посетитель отправляет заявку, но не получает доступ к чужим обращениям.
- Сохранённая заявка имеет номер и понятное состояние передачи в CRM.
- Повтор и потеря ответа обработаны без необъяснимых дублей; защита принимающей стороны проверена.
- Менеджер назначен, ключи закрыты, а задержки и ошибки имеют ответственного.