Интеграция с AmoCRM: как заявка попадает в CRM и что в этой связке ломается
Разбор связки по шагам: поиск контакта и дедупликация, создание сделки, автообновление токена, повторы при сбое и очередь недоставленных заявок. Что проверить на приёмке, чтобы лиды не начали теряться на второй месяц.
«Заявка автоматически попадает в CRM» — одна строчка в техзадании. За ней стоит четыре шага, три способа потерять лид и один токен, который перестаёт работать в самый неподходящий момент.
Разбор для тех, кто заказывает такую интеграцию с формы на сайте, из чат-бота или из внешнего сервиса и хочет понимать, за что платит и что спрашивать на приёмке.
Что происходит между «клиент нажал отправить» и «менеджер увидел лид»
Связка выглядит так.
1. Поиск контакта по телефону. Прежде чем что-то создавать, система ищет: этот человек у нас уже есть? AmoCRM позволяет искать контакты по номеру. Если контакт найден, его нужно обновить, а не создавать заново.
2. Создание или обновление контакта. Имя, телефон, источник обращения. Если человек пришёл второй раз, к существующей карточке добавляется новая информация.
3. Создание сделки. Сделка привязывается к контакту и падает в нужный этап воронки. Здесь же проставляются поля: услуга, бюджет, что именно нужно клиенту.
4. Примечание с полным контекстом. Всё, что человек ответил в форме или диалоге, уходит примечанием к сделке. Менеджер открывает карточку и видит картину целиком.
Каждый из четырёх шагов — отдельный запрос к API, и каждый может не пройти.
Каждый шаг — отдельный запрос к API, и каждый может не пройти.
Этот человек у нас уже есть? Поиск идёт до создания чего-либо.
Без этого шага — дубли в базе
Имя, телефон, источник. Повторное обращение дополняет карточку.
Телефон нормализуется к одному виду
Привязка к контакту, поля услуги и бюджета, источник обращения.
Без источника не посчитать каналы
Все ответы клиента одним блоком. Менеджер видит картину целиком.
Иначе в карточке три поля из двадцати
401 — обновить токен и повторить. 429 — подождать. 5xx и таймаут — повтор с нарастающей паузой, три-пять попыток.
Лид сохраняется с пометкой «не доставлен». Фоновый процесс пробует снова раз в несколько минут.
Сообщение: столько-то заявок ждут. Без него отказ остаётся тихим, и его замечают по нехватке лидов через неделю.
Схема связки из кейса с ботом для автодилера.
Дубли: почему их не бывает случайно
Самая частая претензия к таким интеграциям через месяц работы: в CRM три карточки одного человека.
Механика простая. Система создаёт контакт при каждой заявке, потому что «создать» — это один запрос, а «найти и обновить» два, и второй надо ещё написать. На демонстрации разницы нет: там каждый клиент новый. Разница появляется на реальном потоке, где часть людей обращается повторно.
Лечится дедупликацией по телефону: сначала поиск, потом решение — создавать или обновлять. Телефон в качестве ключа удобнее почты и имени, но требует нормализации формата. +7 900 123-45-67, 8(900)1234567 и 79001234567 — это один и тот же номер, и сравнивать их нужно в одном виде. Делается это библиотекой для разбора номеров, не регуляркой.
На приёмке проверяется одним действием: отправьте заявку дважды с одного номера и посмотрите, сколько контактов появилось.
Токен: тихий отказ через несколько недель
AmoCRM работает по OAuth. Access-токен живёт ограниченное время, refresh-токен одноразовый: использовали, получили новую пару, старая больше не действует.
Отсюда два способа сломать интеграцию:
- Не обновлять токен вообще. Работает ровно до истечения срока. Потом система получает 401 на каждую отправку.
- Обновлять неаккуратно. Refresh одноразовый: если два процесса одновременно попытаются обновиться, второй получит отказ, и связка развалится до ручного перевыпуска.
Рабочая схема: токены хранятся в базе, обновляются по 401 или заранее, при приближении срока истечения, и обновление происходит в одном месте, а не в каждом обработчике.
Главная неприятность этого отказа — он тихий. Форма на сайте продолжает говорить «спасибо, мы свяжемся», бот продолжает вежливо отвечать, заявки собираются. В CRM не приезжает ничего. Замечают обычно через несколько дней, когда кто-то спрашивает, почему на этой неделе так мало лидов.
Что делать, когда CRM не отвечает
API отвечает не всегда: лимит запросов, профилактика, сетевой таймаут. Три ситуации требуют разной реакции.
- 401 — токен. Обновить и повторить запрос.
- 429 — слишком много запросов. Подождать и повторить с нарастающей паузой.
- 5xx и таймауты — на стороне CRM. То же самое: повтор с увеличивающимся интервалом, обычно три-пять попыток.
Если попытки закончились, а заявка так и не ушла, остаётся вопрос: где она сейчас? Ответ «нигде» — самый частый и самый дорогой.
Рабочее решение — очередь недоставленных заявок. Лид сохраняется в базу с пометкой «не доставлен», фоновый процесс раз в несколько минут пробует отправить снова, а ответственный получает сообщение: столько-то заявок ждут. Когда CRM возвращается, очередь разбирается сама, и ни один клиент не потерян.
Небольшая доля дополнительной работы закрывает сценарий, из-за которого вся автоматизация теряет смысл.
Что ещё стоит заложить сразу
Источник обращения в полях сделки. Иначе через квартал не получится ответить, сколько лидов дала форма, сколько бот, а сколько реклама.
Ограничение частоты. Один пользователь не должен иметь возможности отправить сто заявок за минуту.
Тестовый режим. Возможность прогонять заявки без записи в боевую CRM. Иначе отладка засоряет воронку менеджеров мусорными сделками.
Логи с ответами API. Когда лид не дошёл, нужен ответ CRM на конкретный запрос, а не «что-то пошло не так».
Сколько это занимает
Сама связка с AmoCRM — поиск, создание контакта и сделки, примечание, обновление токена — занимает несколько дней работы. Обвязка на отказы (повторы, очередь, алерты, логи) примерно столько же.
Отдельная интеграция к существующей системе считается по часам: 3 500 ₽/час на разработку, минимальный пакет вне подписки — 10 часов. Если интеграция идёт в составе бота квалификации лидов, это уже проект от 100 000 ₽, а вариант с несколькими источниками заявок и скорингом — 180 000–300 000 ₽.
Когда решение принимается до старта, разумнее начать с аудита от 10 000 ₽: разбор процесса, оценка и дорожная карта, стоимость которых засчитывается в проект.
Чек-лист приёмки
- Отправили две заявки с одного номера — в CRM один контакт и две сделки.
- Телефон в разных форматах распознаётся как один номер.
- Отключили доступ к CRM, отправили заявку — она вернулась в воронку после восстановления доступа.
- В карточке сделки виден источник и полный контекст обращения.
- Ответственный получает уведомление, если заявки не доставляются.
- Токен обновляется без участия человека. Проверяется через несколько недель работы, но спросить об этом нужно на старте.
Как это сделано у нас
В кейсе с ботом для автодилера связка собрана целиком: поиск контакта по телефону с дедупликацией, создание сделки с примечанием, OAuth с автообновлением токена, обработка ошибок по типам, очередь failed_leads в PostgreSQL с фоновым воркером и алертом администратору. Целевой показатель по приёмке — готовый лид в CRM за 3 секунды после конца диалога и ноль дублей.
Общий разбор того, какими бывают боты и сколько они стоят, — в статье «Чат-бот для бизнеса: сколько стоит, что закрывает и когда не нужен».