Разработка · 6 мин чтения

n8n сценарий для выгрузки лидов в amoCRM: пошаговая инструкция

За полтора года настройки автоматизаций я собрал рабочий n8n сценарий для выгрузки лидов в amoCRM, который использую и на своих проектах, и у клиентов - от лендингов на Tilda до интернет-магазинов на WooCommerce. В этой статье разберу его по шагам: приём заявки с сайта, авторизация в amoCRM, создание контакта и сделки, и отдельно - как не плодить дубли, когда один и тот же человек оставляет заявку дважды.

Зачем автоматизировать передачу лидов в amoCRM через n8n

Без автоматизации заявки с сайта обычно падают на почту или в Telegram-чат менеджера, и дальше их вручную переносят в CRM. На практике это значит, что часть лидов теряется в течение первых 15-20 минут - самого горячего окна для звонка. У одного клиента с интернет-магазином на WooCommerce я считал конверсию до и после внедрения n8n: до автоматизации менеджеры обрабатывали заявку в среднем через 2-3 часа, после - через 5-7 минут, потому что сделка уже лежала в CRM с тегом источника и всеми полями формы.

n8n в этой связке берёт на себя рутину: слушает вебхук с сайта, разбирает данные, обращается к API amoCRM и создаёт сделку с привязанным контактом. Zapier и Make делают похожее, но n8n можно развернуть на своём сервере, не платить за каждое действие в сценарии и не упираться в лимиты бесплатного тарифа при большом потоке заявок.

Из каких узлов состоит сценарий выгрузки лидов в n8n

Минимальный рабочий сценарий у меня обычно состоит из пяти узлов:

  • Webhook - принимает POST-запрос с сайта или из формы
  • Set / Edit Fields - приводит данные к единому формату (телефон, имя, комментарий)
  • HTTP Request к amoCRM - создаёт или обновляет контакт
  • HTTP Request к amoCRM - создаёт сделку и привязывает к ней контакт
  • IF или Error Trigger - обрабатывает ситуации, когда amoCRM вернул ошибку

Это база. В реальных проектах сценарий обрастает дополнительными узлами: проверка на дубль по телефону, отправка уведомления менеджеру в Telegram через aiogram-бота, запись лога в Google Таблицу для сверки. Но начинать стоит именно с этих пяти блоков - остальное добавляется по мере необходимости, а не заранее.

Приём заявок с сайта: вебхук для Tilda, WooCommerce и форм

Для Tilda я обычно не использую встроенную интеграцию с amoCRM в конструкторе - она ограничена по полям и не даёт гибко обработать данные перед отправкой. Вместо этого ставлю кастомный скрипт на форму, который отправляет POST-запрос напрямую на Webhook-узел n8n.

Пример тела запроса, который прилетает в n8n с формы:

{
  "name": "Иван Петров",
  "phone": "+79261234567",
  "email": "ivan@example.com",
  "source": "tilda-landing",
  "comment": "Интересует расчёт стоимости"
}

Для WooCommerce использую хук woocommerce_checkout_order_processed на стороне сайта: он отправляет данные о новом заказе на тот же Webhook n8n, только с дополнительными полями - составом корзины и суммой заказа. Это удобно, когда заявка приходит не с формы, а с оформленного заказа, и в amoCRM нужно сразу видеть, что клиент купил.

В узле Webhook в n8n важно сразу поставить Response Mode на “Immediately” с кодом 200 - если сайт не получит быстрый ответ, форма может показать пользователю ошибку отправки, хотя сам сценарий в n8n при этом отработает нормально.

Подключение amoCRM к n8n: авторизация и создание сделки

Готового официального узла amoCRM в n8n нет, поэтому работаю через HTTP Request и REST API amoCRM напрямую. Авторизация идёт по OAuth 2.0: сначала получаю долгосрочный токен через интеграцию в личном кабинете amoCRM, затем настраиваю в n8n credential типа “OAuth2 API” с полями client_id, client_secret и redirect_uri.

Создание контакта и сделки одним сценарием

После авторизации первый HTTP-запрос уходит на создание контакта:

POST https://ваш_домен.amocrm.ru/api/v4/contacts

[
  {
    "name": "{{ $json.name }}",
    "custom_fields_values": [
      {
        "field_code": "PHONE",
        "values": [{ "value": "{{ $json.phone }}" }]
      }
    ]
  }
]

Полученный id контакта передаю дальше, во второй запрос - создание сделки с привязкой:

POST https://ваш_домен.amocrm.ru/api/v4/leads

[
  {
    "name": "Заявка с сайта: {{ $json.source }}",
    "_embedded": {
      "contacts": [{ "id": "{{ $json.contact_id }}" }]
    }
  }
]

Один нюанс, на который я тратил лишние часы на первых проектах: amoCRM не даёт создать сделку и контакт одним запросом с гарантированной связкой, если контакт уже существует - нужно сначала искать его по телефону через GET-запрос с фильтром, и только если не нашёлся, создавать новый. Иначе на каждой повторной заявке от одного клиента появляется свежий дублирующий контакт.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Как защититься от дублей лидов и потери заявок

Дубли - самая частая жалоба от отделов продаж после внедрения интеграции. Решается это так: перед созданием контакта добавляю узел HTTP Request с GET-запросом на поиск по номеру телефона (query=). Если API возвращает совпадение, беру существующий id и создаю только новую сделку, привязанную к нему - без нового контакта.

Вторая проблема - потерянные заявки при сбое amoCRM или временной недоступности API. Для этого в конце сценария ставлю Error Trigger, который при любой ошибке HTTP-запроса пишет данные заявки в отдельную Google Таблицу и параллельно шлёт уведомление в Telegram. У одного клиента с СДЭК-интеграцией на сайте так спасли порядка 40 заявок за первый месяц - amoCRM отдавал 429 при превышении лимита запросов в пиковые часы, и без страховки эти лиды просто исчезали бы.

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

Сравнение способов интеграции сайта с amoCRM

Прежде чем звать разработчика, стоит понять, какой вариант подойдёт именно вам:

Способ Гибкость Стоимость на рынке Когда подходит
Встроенная интеграция Tilda Низкая, ограниченный набор полей Бесплатно Простая форма без доп. логики
Zapier / Make Средняя от 1 500 до 5 000 ₽/мес на рынке за подписку Небольшой поток заявок, нет своего сервера
n8n сценарий Высокая, любая логика на JS/Python-нодах Разовая настройка + хостинг Средний и большой поток, нужны проверки на дубли, несколько источников
Кастомный бэкенд Максимальная от 100 000 ₽ на рынке у студий Сложные воронки, множество интеграций помимо CRM

Настройку n8n сценария для выгрузки лидов в amoCRM под ключ - с приёмом заявок, поиском дублей и уведомлениями - я делаю от 25 000 ₽, срок обычно 3-5 рабочих дней в зависимости от количества источников заявок и полей в CRM. Если параллельно нужна доработка формы на Tilda под передачу нестандартных полей, это отдельная задача - комплексная интеграция такого рода у меня от 40 000 ₽.

Связка сервисов без программистов

Автоматизация / n8n

от 25 000 ₽

Подробнее →

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

Нужен ли платный тариф n8n для интеграции с amoCRM

Нет, для одного-двух сценариев хватает self-hosted версии n8n на своём сервере или VPS - она бесплатна, платить нужно только за хостинг. Облачный тариф n8n имеет смысл, если не хотите заниматься администрированием сервера и обновлениями.

Можно ли обойтись без HTTP Request и использовать готовый модуль amoCRM

В n8n нет официального нода amoCRM, есть только сторонние community-нодыс ограниченным набором методов. На практике я всегда работаю через HTTP Request и REST API - это даёт доступ ко всем эндпоинтам amoCRM, включая кастомные поля и воронки, которых в готовых модулях обычно нет.

Как быть, если у меня несколько источников заявок - сайт, Telegram-бот, звонки

Каждый источник заводится через свой Webhook или триггер в n8n, а дальше все ветки сходятся в общий блок обработки: поиск дубля, создание контакта, создание сделки с тегом источника. Это позволяет видеть в amoCRM, откуда реально пришёл лид, даже если каналов пять и больше.

Что делать, если amoCRM меняет лимиты API или структуру полей

amoCRM периодически меняет лимиты запросов (сейчас это 7 запросов в секунду на аккаунт) и иногда обновляет структуру ответов API. Сценарий в n8n стоит проверять раз в несколько месяцев, особенно после крупных обновлений CRM - обычно правки минимальные, но без них можно словить тихий сбой, когда заявки перестают доходить, а уведомления об ошибке никто не настроил.

Есть задача?

Обсудим в мессенджере

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

Самозанятый Калинкин Н. А. · работаю с физлицами и юрлицами

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно