Кастомная интеграция через Intercom Webhooks позволяет передавать полную историю переписки из Intercom в примечания Kommo автоматически - при создании чата и при каждом ответе пользователя. Продажи видят контекст разговора прямо в карточке сделки, без переключения между интерфейсами.
Нативная интеграция Kommo + Intercom создаёт лид при новом чате и синхронизирует контактные данные. Этого достаточно для базового сценария - но она не записывает текст переписки в карточку сделки и не реагирует на изменение статуса сделки в Kommo. Кастомный webhook-коннектор закрывает оба эти пробела.
В интеграционных проектах Exceltic.dev регулярно встречается одна ситуация: команда поддержки ведёт чаты в Intercom, команда продаж работает в Kommo. Когда чат конвертируется в сделку, менеджер открывает карточку Kommo и видит контактные данные - но не видит, о чём разговаривала поддержка. Контекст теряется. Менеджер либо пишет клиенту повторно с теми же вопросами, либо тратит 10-15 минут на поиск нужного чата в Intercom. Эта статья описывает архитектуру кастомной интеграции, которая решает проблему без Zapier и без ручной работы.
Операционная боль: продажи начинают разговор вслепую
Когда лид переходит из поддержки в воронку продаж, менеджер теряет до 20 минут на восстановление контекста каждого нового чата. При объёме 30-50 новых лидов в неделю это 10+ часов командного времени, потраченных на поиск информации, которая уже существует в системе - просто в другой.
Типичная схема разрыва: пользователь написал в Intercom -> поддержка квалифицировала лид -> передала его менеджеру в Kommo -> менеджер позвонил клиенту, не зная деталей запроса.
Нативная интеграция: что умеет и где потолок
Kommo предлагает нативную интеграцию с Intercom через раздел Settings -> Integrations. По состоянию на Q2 2026, она делает следующее: при появлении нового чата в Intercom создаёт лид в Kommo и заполняет имя и email контакта.
Чего нативная интеграция не делает:
- Не записывает текст переписки в примечания сделки
- Не синхронизирует теги Intercom в поля Kommo
- Не реагирует на обновления чата после создания лида
- Не работает в обратную сторону: смена статуса сделки в Kommo не передаёт тег в Intercom
Это не баг, а ограничение архитектуры: нативная интеграция решает задачу захвата лида, не задачу синхронизации контекста на протяжении всего цикла сделки.
Что реализуется через кастомную интеграцию
Кастомный коннектор строится на четырёх webhook-событиях Intercom и REST API Kommo.
Прямая ветка: Intercom -> Kommo
Событие conversation.user.created - пользователь открыл новый чат.
После срабатывания webhook приложение выполняет:
- Извлекает из payload
conversation.idиcontacts[0].email - Запрашивает
GET https://api.intercom.io/conversations/{id}- получает полный объект сconversation_parts[] - Строит текст из массива
conversation_parts: каждая часть содержитbody,author.name,created_at - Ищет контакт в Kommo:
GET /api/v4/contacts?query={email} - Если контакт найден и у него есть открытая сделка - добавляет примечание:
POST /api/v4/leads/notesсnote_type: 4(common_note) и текстом переписки вparams.text - Если сделки нет - создаёт лид и добавляет примечание к нему
Событие conversation.user.replied - пользователь ответил в существующем чате.
Применяется та же логика, но вместо создания нового примечания - добавляется обновление к уже существующей сделке. Таким образом менеджер видит хронологию переписки прямо в ленте карточки.
Теги Intercom как метки в Kommo. Объект разговора содержит массив tags - список меток, которые операторы поддержки проставляют вручную (например: «заинтересован», «горячий лид», «технический вопрос»). Кастомный коннектор маппит эти теги в кастомное поле Kommo типа «чекбокс» или «список».
Обратная ветка: Kommo -> Intercom
Kommo поддерживает исходящие webhooks через Settings -> Integrations -> Webhooks. При смене этапа воронки (например, «Квалифицирован» или «Выиграна») приложение вызывает POST https://api.intercom.io/conversations/{id}/tags и добавляет соответствующий тег в разговор Intercom.
Это позволяет операторам поддержки видеть статус сделки без входа в Kommo.
Пошаговая схема интеграции
-
Создание приложения в Intercom Developer Hub. Необходим OAuth App с разрешением «Read conversations». Webhook-подписки настраиваются на
conversation.user.createdиconversation.user.replied. -
Настройка endpoint. Приложение принимает POST-запросы от Intercom. Intercom подписывает каждый webhook заголовком
X-Hub-Signature(HMAC-SHA256). Подпись верифицируется перед обработкой. -
Запрос полного разговора. После проверки подписи приложение вызывает
GET https://api.intercom.io/conversations/{conversation_id}с Bearer-токеном. Endpoint возвращает до 500conversation_partsв одном запросе. -
Сборка текста переписки. Из массива
conversation_partsфильтруются части с непустымbody. Каждая строка форматируется:[HH:MM автор]: текст. HTML-теги изbodyочищаются перед записью. -
Поиск сделки в Kommo. По email из
contacts[0].emailвыполняетсяGET /api/v4/contacts?query=email. Если контакт найден - ищется связанная открытая сделка через_embedded.leads. -
Запись примечания.
POST /api/v4/leads/notesс телом:
[
{
"entity_id": 12345,
"note_type": 4,
"params": {
"text": "[Intercom] Чат #conv_id от 2026-06-25\n\n[10:15 Иван]: Добрый день, интересует план Pro...\n[10:18 Поддержка]: Здравствуйте! Расскажите..."
}
}
]
-
Обратный webhook из Kommo. В Kommo настраивается исходящий webhook на событие смены этапа. При смене статуса приложение вызывает Intercom Conversations API для добавления тега к разговору.
-
Идемпотентность. Каждое примечание содержит
conversation_idиз Intercom. Перед добавлением нового примечания приложение проверяет, не было ли примечание с этим ID уже записано - чтобы избежать дублей при повторных webhook-доставках.
Реальный кейс
Компания в сфере B2B SaaS с командой поддержки 4 человека и командой продаж 6 человек использовала Intercom для входящих чатов и Kommo для воронки продаж. Интеграции между ними не было.
Проблема: около 40 новых чатов в неделю конвертировались в лиды вручную - оператор поддержки пересказывал суть разговора менеджеру в Slack или делал копипаст текста в поле «Описание» сделки Kommo. Процесс занимал 5-7 минут на каждый лид.
После внедрения кастомной интеграции:
- История каждого чата появляется в примечаниях Kommo в течение 5-10 секунд после события
- Менеджер видит полный текст переписки до первого звонка клиенту
- Теги «горячий», «тестирует конкурента», «технический вопрос» из Intercom маппятся в кастомное поле Kommo - менеджер сразу видит приоритет
- Обратная ветка: при переводе сделки в статус «Выиграна» в разговоре Intercom автоматически проставляется тег
deal_won- команда поддержки видит результат без входа в CRM
Объём разработки в типовом проекте: 3-4 рабочих дня включая тесты и деплой.
Для кого подходит эта интеграция
Решение актуально для компаний от 15 человек, где поддержка и продажи работают в разных инструментах. Особенно выражена польза, когда:
- Объём входящих чатов от 20 в неделю - при меньшем объёме ручная передача контекста терпима
- Лиды из Intercom проходят квалификацию перед передачей в воронку - кастомная интеграция сохраняет результат квалификации
- Менеджер продаж не имеет доступа к Intercom или не хочет переключаться между интерфейсами
- Используются теги Intercom для сегментации обращений - их можно автоматически переносить в поля Kommo
Если вы уже используете кастомные интеграции для Kommo и хотите добавить Intercom в этот стек, архитектура коннектора стандартная и ложится на уже существующую инфраструктуру. Аналогичный подход работает для AI-саммари переписки - подробнее об этом в статье про ChatGPT-саммари переписки в сделку.
Термин: conversation_parts - массив объектов в API Intercom, каждый из которых представляет одно сообщение в разговоре. Содержит поля body (текст), author (автор с именем и типом - admin, user, bot) и created_at (unix timestamp).
Часто задаваемые вопросы
Что именно попадает в примечание Kommo - весь чат или только последнее сообщение?
В примечание записывается полная история разговора на момент события. При conversation.user.created это первое сообщение пользователя и приветственный ответ оператора (если он уже есть). При conversation.user.replied добавляется обновление с новыми сообщениями. Таким образом в карточке сделки накапливается хронологическая лента переписки - не отдельные сообщения, а структурированный лог.
Работает ли интеграция с ботом Intercom (Fin AI)?
Да. Ответы Fin AI также передаются в conversation_parts с author.type: "bot". Кастомный коннектор может либо включать ответы бота в лог (с пометкой [Bot]), либо фильтровать их - в зависимости от того, нужен ли менеджеру контекст автоматических ответов. По умолчанию Exceltic.dev настраивает включение ответов бота, так как они содержат информацию о том, что именно пытался найти пользователь.
Нужен ли Zapier или Make для этой интеграции?
Нет. Архитектура строится напрямую: Intercom webhook -> кастомное приложение -> Kommo API. Zapier и Make добавляют задержку (до 15 минут в бесплатных тарифах), ограничивают объём данных в одном шаге и не позволяют реализовать бизнес-логику вроде дедупликации примечаний или маппинга тегов. Кастомный коннектор обрабатывает событие в течение нескольких секунд и не зависит от лимитов сторонних сервисов.
Что происходит, если в Kommo нет контакта с таким email?
Есть два варианта поведения, настраиваемых под конкретный процесс. Первый: при отсутствии контакта автоматически создаётся новый лид в Kommo с данными из Intercom (имя, email, текст переписки) - лид попадает в начало воронки. Второй: событие логируется, а менеджер получает уведомление (например, в Slack) о новом чате без матчинга - для ручного решения. Чаще используется первый вариант.
Как интеграция обрабатывает конфиденциальные внутренние заметки операторов?
В Intercom есть тип conversation_part с полем part_type: "note" - это внутренние заметки операторов, не видимые пользователю. По умолчанию кастомный коннектор фильтрует такие части и не записывает их в Kommo. Если нужно, чтобы менеджер видел внутренние заметки - это настраивается отдельно с соблюдением политики доступа к данным.
Итог: что настроить, чтобы продажи работали с контекстом
- Подключить webhook-подписки
conversation.user.createdиconversation.user.repliedв Intercom Developer Hub - именно эти два события покрывают 95% сценариев - Настроить кастомный коннектор, который вызывает
GET /conversations/{id}, строит текст изconversation_partsи пишет в Kommo API черезPOST /api/v4/leads/notes - Добавить маппинг тегов Intercom в кастомные поля Kommo
- При необходимости - настроить обратную ветку: смена этапа в Kommo -> тег в Intercom
Если у вас есть Intercom и Kommo и чаты сейчас передаются вручную или теряются при переходе в воронку - опишите задачу команде Exceltic.dev. Разберём архитектуру под ваш стек и оценим объём работ.