Как подключить n8n: субагент Cursor шлёт лид в CRM без копипаста

Иллюстрация: субагент Cursor шлёт лид в CRM через n8n

Подключить n8n к субагенту Cursor — это не «поставить платформу с нуля» и не курс по API Bitrix. Субагент собирает поля заявки в JSON и шлёт POST на Webhook; n8n пишет строку в Google Sheets или карточку в CRM. Без Make «потому что так в гайде», без AI Agent-ноды, без копипаста имени и телефона по трём окнам.

Картина знакомая: контакт уже в чате Cursor — имя, телефон, «хочет демо», — а в таблице продаж пусто. Через час вы не помните источник, менеджер орёт, что «лиды не доезжают». Это не автоматизация. Это цирк с клавиатурой. Если n8n у команды уже есть — Cloud или свой сервер — мост собирается за один спокойный прогон.

Мозг собирает, труба несёт, таблица хранит

Сравнение ролей: Cursor собирает поля, n8n принимает webhook, Sheets хранит строку лида

Cursor — мозг. Субагент с отдельным контекстом вытаскивает из переписки поля и упаковывает их. Не продаёт, не квалифицирует воронку на три этажа. Его выход один: валидная карточка лида и HTTP POST. Официально субагенты описаны на cursor.com/docs/subagents — отдельный контекст, кастом в .cursor/agents/, tools от родителя.

n8n — труба. Нода Webhook принимает POST, Edit Fields (Set) достаёт поля из body, Google Sheets делает Append Row. Документация webhook — docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/, Set — рядом в core-nodes, Sheets — в app-nodes. Актуальный релиз n8n на момент текста — 2.32.5. Картотека на спокойный старт — Sheets; CRM-нода — когда перестанете дрожать, что «сломаете боевую базу».

Пока лид живёт только в чате агента, у вас декоративная нейросеть: разговоры есть, очередь продаж пустая.

Два URL, из-за которых «вебхук молчит»

Схема Test и Production URL webhook n8n: Listen на холсте, Executions после publish

У Webhook-ноды n8n два разных адреса: Test URL и Production URL. Это не «одно и то же, только красивее». Test слушает примерно 120 секунд после «Listen for test event» и показывает данные прямо в редакторе. Production оживает только после publish workflow и смотрится во вкладке Executions — на холсте там тишина, и новички решают, что «ничего не пришло».

Классика: шлёте на Production при выключенном сценарии и ждёте чудо на холсте. Или жмёте Listen, уходите пить кофе на три минуты — окно закрылось, POST улетел в никуда, а виноват якобы Cursor. Официальная разница Test/Production — docs.n8n.io/…/webhook/workflow-development/. Пока не усвоите эту развилку, любая «интеграция» — ху@ня с красивым URL в буфере обмена.

Чего не путать с трубой лида

Чеклист: Webhook n8n несёт лид, statusChange и Automations — не труба заявки

У Cursor Cloud Agent есть исходящий webhook со статусом statusChange — FINISHED или ERROR, подпись HMAC, User-Agent Cursor-Agent-Webhook/1.0. Это сигнал «агент закончил», а не посылка имени и телефона. Подставлять его вместо n8n Webhook — н@ебк@ самому себе: вы слушаете статусы, а заявка так и не приехала.

Обратная путаница — inbound webhook у Cursor Automations: внешний POST будит облачного агента. Это вход в Cursor, не выход в CRM. Путь другой: субагент сам делает HTTP POST на URL Webhook в n8n. Направление одно — из Cursor наружу, в трубу.

И ещё: нода AI Agent внутри n8n тут не нужна. В комьюнити давно пишут, что после webhook она не «магически исполняет соседние ноды справа». Для записи лида достаточно Webhook → Set → Sheets. Языковые цепочки оставьте на потом, когда труба уже зелёная.

Сначала труба, потом мозг

Новый workflow в n8n. Нода Webhook, метод POST. Скопируйте Test URL. Нажмите Listen for test event — сценарий должен реально слушать, иначе тестовый POST растворится, а вы час будете чинить «битый» Cursor.

Дальше Edit Fields (Set): вытащите поля из body. В выражениях n8n они лежат как $json.body.name, $json.body.phone и так далее — пример city в официальных expressions docs.n8n.io. Keep Only Set отбрасывает мусор, чтобы в таблицу не утекло полтонны служебного JSON.

Приёмник на спокойный старт — Google Sheets, операция Append Row. Колонки в первой строке листа обязаны совпасть с именами полей: name, phone, email, source, note, created_at. Без строки заголовков Append часто «молча» ломается — строка не появляется, а вы уже клянёте OAuth. Когда увидите зелёный прогон в Executions и строку с теми же полями, что отправили, можете заменить Sheets на CRM-ноду. Страх «сломать CRM» лечится видимой записью, не теорией REST.

Self-host на localhost снаружи не достучится без туннеля — для новичка проще n8n Cloud. URL webhook — секрет. Не светите его в публичных чатах и скриншотах. Положите в .env или secrets и скажите субагенту брать адрес оттуда. Header auth на Production — хороший следующий шаг; на первый прогон хватит секретного path и дисциплины не палить URL.

Контракт полей — без романа

Минимальный набор для новичка:

  • name: Иван;
  • phone: +79001234567;
  • email: ivan@example.com;
  • source: cursor-subagent;
  • note: хочет демо на этой неделе;
  • created_at: 2026-07-29T10:00:00Z.

Поля «на вырост» — бюджет, должность, «температура» из головы модели — путь к карточке-фантазии. Пустой phone — отдельная дыра: менеджер позвонит в пустоту. В инструкции субагенту жёстко: нет телефона или почты — не слать POST, вернуть в чат «не хватает контакта».

Субагент-упаковщик, а не весь офис

Кастомный субагент кладётся в .cursor/agents/ — один файл, одна роль. Не превращайте его в «квалификация + прогрев + CRM + ответы клиенту». Роль: валидный JSON по контракту и POST на URL из секрета. В канале maya_pro тот же паттерн «роль = один выход» разбирают на офисе субагентов — посты про Экскалибур и Cursor Jr как раз про это, без романтики «ИИ сам продаст».

В тексте агента напишите по-человечески: извлечь поля, проверить контакт, собрать JSON, выполнить POST на HTTPS URL n8n, в ответ показать статус и что ушло. Без эссе «давайте интегрируем вашу воронку». Если агент ходит в shell за curl — разрешите сеть: в sandbox DNS до внешних хостов иногда отваливается, и люди чинят «мертвый» webhook, хотя труба живая. Сначала проверьте Test URL запросом вне Cursor — потом гоняйте агента.

Первый прогон, после которого можно выдохнуть

Listen включён. Шлёте тестовый POST с именем вроде «Тест Вечер». На холсте видны данные. В Sheets — новая строка с теми же полями. Потом publish workflow, переключаете субагента на Production URL, повторяете без копипаста из чата и смотрите зелёный прогон во вкладке Executions. Вот критерий, что мост работает.

Когда строка появилась, п@зд@ц с ручным переносом из Cursor в таблицу обычно заканчивается. Заявки быстрее доходят до менеджера, меньше контактов тонет в переписке — и сайт с CRM имеет смысл только если в конце цепочки кто-то реально видит лид. Дальше можно усложнять: CRM вместо Sheets, проверка дублей, уведомление в Telegram. Без зелёного первого прогона любая «автоворонка» — декорация.

Где обычно тупят

Путают Test и Production и ждут данные на холсте от боевого URL. Оставляют workflow unpublished. Маппят поля не из body, а «с корня» — и получают пустые колонки. Светят полный webhook URL в публичном репозитории — потом удивляются мусорным прогонам. Тащат AI Agent «ради моды» и тонут в LangChain вместо Append Row.

Ещё одна бл@дь — смешивать этот мост с установкой n8n с нуля на весь вечер. Если n8n уже есть — не уходите в Docker-марафон. Если нет — Cloud за пять минут, а цель всё та же: лид в строке, не «красивый self-host».

Куда смотреть, если надоело собирать в одиночку

В канале maya_pro разбирают офис субагентов Cursor и шины заявок без учебниковой каши. Если хотите собирать такие мосты в компании, а не ночью в пустом чате — загляните в закрытый клуб. Там меньше теории «как подключить всё на свете» и больше сценариев, которые можно включить сегодня.

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

Чем Test URL отличается от Production?

Test слушает около двух минут после Listen и показывает данные в редакторе. Production работает после publish; результат смотрите в Executions, не на холсте.

Нужен ли AI Agent в n8n, чтобы записать лид?

Нет. Webhook → Set → Sheets достаточно. AI Agent — отдельная история про triage внутри n8n, не про первый POST.

Хватит ли Google Sheets вместо CRM?

На первый прогон — да. Увидели строку с теми же полями — подключите CRM тем же маппингом.

Почему curl из Cursor не доходит до n8n?

Часто виноват sandbox и DNS, а не URL. Проверьте webhook вне Cursor, затем разрешите агенту сеть.

Это то же самое, что webhook в Make?

Идея моста похожа, продукт другой: у n8n свои Test/Production URL и Executions. Не копируйте инструкцию Make один в один.

Нужен ли программист?

Нет. Нужны аккаунт n8n, Webhook URL и субагент с контрактом полей. API CRM учит нода, не вы.

)