dmilyin.ru AI-разработка · Нижний Новгород · обновлено 2026-07-09


Интеграция с AmoCRM: как заявка попадает в CRM и что в этой связке ломается

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

Иллюстрация к статье: Интеграция с AmoCRM: как заявка попадает в CRM и что в этой связке ломается

«Заявка автоматически попадает в CRM» — одна строчка в техзадании. За ней стоит четыре шага, три способа потерять лид и один токен, который перестаёт работать в самый неподходящий момент.

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

Что происходит между «клиент нажал отправить» и «менеджер увидел лид»

Связка выглядит так.

1. Поиск контакта по телефону. Прежде чем что-то создавать, система ищет: этот человек у нас уже есть? AmoCRM позволяет искать контакты по номеру. Если контакт найден, его нужно обновить, а не создавать заново.

2. Создание или обновление контакта. Имя, телефон, источник обращения. Если человек пришёл второй раз, к существующей карточке добавляется новая информация.

3. Создание сделки. Сделка привязывается к контакту и падает в нужный этап воронки. Здесь же проставляются поля: услуга, бюджет, что именно нужно клиенту.

4. Примечание с полным контекстом. Всё, что человек ответил в форме или диалоге, уходит примечанием к сделке. Менеджер открывает карточку и видит картину целиком.

Каждый из четырёх шагов — отдельный запрос к API, и каждый может не пройти.

Путь заявки
Четыре шага до карточки и одна ветка, о которой забывают

Каждый шаг — отдельный запрос к API, и каждый может не пройти.

ШАГ 1
Поиск контакта по телефону

Этот человек у нас уже есть? Поиск идёт до создания чего-либо.

Без этого шага — дубли в базе

ШАГ 2
Контакт: создать или обновить

Имя, телефон, источник. Повторное обращение дополняет карточку.

Телефон нормализуется к одному виду

ШАГ 3
Сделка в нужном этапе воронки

Привязка к контакту, поля услуги и бюджета, источник обращения.

Без источника не посчитать каналы

ШАГ 4
Примечание с полным контекстом

Все ответы клиента одним блоком. Менеджер видит картину целиком.

Иначе в карточке три поля из двадцати

Если CRM не ответила
Разбор по типу ошибки

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 секунды после конца диалога и ноль дублей.

Общий разбор того, какими бывают боты и сколько они стоят, — в статье «Чат-бот для бизнеса: сколько стоит, что закрывает и когда не нужен».