HubSpot + Intercom: почему нативная интеграция создаёт дубли и теряет контекст

HubSpot + Intercom: почему нативная интеграция создаёт дубли и теряет контекст

Нативная интеграция HubSpot и Intercom существует — и именно это создаёт проблему. Компании включают её, ожидая автоматической синхронизации клиентских данных между CRM и support/chat платформой. Вместо этого получают дублирующиеся контакты в HubSpot, потерянную историю диалогов и данные о сделках, которые не доходят до Intercom. Поддержка не видит, на каком этапе воронки находится клиент. Продажи не видят, что клиент жаловался три раза за месяц.

Проблема не в том, что интеграция плохо сделана — она делает ровно то, что заявлено. Проблема в том, что «синхронизация контактов» — это не то, что нужно большинству компаний.

Что делает нативная интеграция HubSpot ↔ Intercom

Официальная интеграция от Intercom (доступна в App Store HubSpot) синхронизирует:

  • Контакты в одну сторону: пользователи Intercom -> контакты HubSpot. Создаёт или обновляет контакт в HubSpot при появлении нового пользователя в Intercom.
  • Базовые поля: имя, email, телефон, company.
  • Атрибуты Intercom -> свойства HubSpot: часть custom attributes можно смапировать на HubSpot properties.

Не синхронизирует:
— Историю диалогов (conversations) из Intercom в HubSpot
— Данные из HubSpot Deals в Intercom (этап сделки, сумма, ответственный)
— Данные HubSpot Companies в Intercom Companies
— Теги Intercom -> HubSpot lists или properties
— События из HubSpot Workflows -> Intercom

Где именно ломается стандартный коннектор

Проблема 1: дубли контактов

Intercom идентифицирует пользователей по user_id (внутренний ID вашего приложения) или по email. HubSpot идентифицирует контакты по email.

Сценарий дубля:

  1. Пользователь зарегистрировался с john@company.com -> создан в Intercom -> синхронизирован в HubSpot
  2. Тот же пользователь написал в чат под именем John Smith без авторизации -> создан как анонимный lead в Intercom с другим ID
  3. Позже авторизовался -> Intercom объединяет сессии внутри, но в HubSpot уже есть второй контакт

Нативная интеграция не дедуплицирует — она создаёт новый контакт в HubSpot при каждом новом пользователе Intercom. Результат: одна и та же компания имеет 3–5 контактов в HubSpot с частично совпадающими данными.

Проблема 2: потеря истории диалогов

Команда поддержки решает тикеты в Intercom. Менеджер по продажам открывает контакт в HubSpot — и видит только базовые поля. Не видит: клиент жаловался на баг в понедельник, во вторник запросил возврат, в среду всё-таки остался.

Нативная интеграция не передаёт conversations. Менеджер звонит клиенту с питчем — не зная, что тот раздражён багом. Отношения портятся.

Проблема 3: Intercom не знает о статусе сделки

Kлиент находится на этапе «Negotiation» в HubSpot уже 3 недели. Пишет в Intercom-чат с вопросом — оператор поддержки отвечает как на обычного пользователя, не зная что это горячий лид.

Агент поддержки мог бы: приоритизировать ответ, позвать менеджера, не предлагать стандартный ответ «почитайте документацию».

Интеграция не передаёт данные из HubSpot Deals в Intercom -> оператор слеп по отношению к контексту продаж.

Проблема 4: рассинхронизация при обновлении

Если контакт обновляется в HubSpot (например, изменился email или компания) — Intercom об этом не знает. Нативная интеграция работает в одну сторону: Intercom -> HubSpot. Обратного потока нет.

Тот же контакт в HubSpot и Intercom через 6 месяцев использования разойдётся по полям.

Что нужно вместо нативной интеграции

Для реальной синхронизации нужны три потока данных:

1. Intercom -> HubSpot (с дедупликацией):
— Новый пользователь Intercom -> поиск по email в HubSpot -> создание или обновление контакта
— Теги Intercom (paying, churned, trial) -> HubSpot свойства или списки
— Закрытый тикет -> Note в HubSpot с резюме диалога

2. HubSpot -> Intercom:
— Смена Deal Stage -> обновление атрибута пользователя в Intercom (deal_stage: "negotiation")
— Lifecycle Stage изменился на Customer -> тег в Intercom, запуск onboarding-последовательности
— HubSpot Company data -> Intercom Company attributes (MRR, plan, industry)

3. История диалогов -> HubSpot:
— При закрытии диалога в Intercom -> создание Note в HubSpot с текстом + рейтингом CSAT
— Количество открытых тикетов -> кастомное свойство контакта в HubSpot

Техническая схема кастомной интеграции

Intercom Webhooks -> Backend -> HubSpot API:

Intercom: topic = conversation.closed
-> Backend:
   1. GET conversation thread (Intercom API)
   2. Extract contact email, summary, CSAT
   3. HubSpot: search contact by email
      -> found: create Note on contact
      -> not found: create contact + note
   4. Increment property "intercom_tickets_30d" on contact

HubSpot Workflows -> Backend -> Intercom API:

HubSpot Workflow: Deal Stage = "Customer Won"
-> Webhook Action -> Backend
-> Intercom API:
   GET /contacts?email={contact_email}
   PUT /contacts/{id}
   { "custom_attributes": {
     "deal_stage": "won",
     "deal_value": {amount},
     "account_manager": {manager_name}
   }}
   POST /tags (add tag "customer")

Дедупликация:

def find_or_create_hubspot_contact(email, intercom_data):
    # Search by email
    results = hubspot.crm.contacts.search_api.do_search(
        PublicObjectSearchRequest(
            filter_groups=[{"filters": [{"propertyName": "email",
                                         "operator": "EQ", "value": email}]}]
        )
    )
    if results.total > 0:
        # Update existing
        contact_id = results.results[0].id
        hubspot.crm.contacts.basic_api.update(contact_id, ...)
        return contact_id
    else:
        # Create new
        return hubspot.crm.contacts.basic_api.create(...).id

Сравнение: нативная vs кастомная интеграция

ВозможностьНативнаяКастомная
Intercom -> HubSpot контактыДа (без дедупликации)Да (с дедупликацией)
HubSpot -> Intercom данныеНетДа
История диалогов в HubSpotНетДа (как Notes)
Deal Stage в IntercomНетДа
Теги Intercom -> HubSpotНетДа
CSAT -> HubSpot свойствоНетДа
Двусторонняя синхронизацияНетДа
Дедупликация контактовНетДа

Реальный кейс

SaaS-компания (60 клиентов, $1,000–5,000 MRR каждый, команда: 3 продажи + 2 поддержка):

  • Включили нативную интеграцию -> через 3 месяца в HubSpot 340 контактов вместо 60 реальных клиентов (дубли)
  • Менеджеры тратили 20+ минут на очистку дублей перед каждым QBR
  • Оператор поддержки не знал, что клиент был на чёрном списке из-за просрочки

После кастомной интеграции:
— Дедупликация по email: 340 -> 67 уникальных контактов (7 действительно новых, которых не было)
— Атрибут deal_stage в Intercom: операторы видят «этот контакт — горячий лид на Negotiation»
— CSAT < 4 -> задача менеджеру в HubSpot «чекнуть клиента после закрытия тикета»

Для кого актуально

Кастомная интеграция HubSpot + Intercom имеет смысл если:
— Одна команда ведёт продажи в HubSpot, другая — поддержку в Intercom
— Важно чтобы поддержка видела статус сделки клиента
— Накопились дубли после нативной интеграции
— Нужно передавать CSAT и историю тикетов в CRM для полноты картины по клиенту

Аналогичные проблемы возникают и с другими нативными интеграциями HubSpot — читайте про HubSpot + Calendly и HubSpot + Typeform.

Часто задаваемые вопросы

Intercom App Store предлагает несколько интеграций с HubSpot — они все одинаковые?

Нет. Есть официальная интеграция от Intercom и несколько сторонних (от Hull, Zapier, других). Официальная — самая ограниченная по функциям, но самая стабильная. Сторонние предлагают больше полей для маппинга, но требуют дополнительной подписки и имеют свои ограничения. Ни одна из коробочных интеграций не решает проблему дублей и двусторонней синхронизации полностью.

Как очистить дубли, которые уже накопились в HubSpot после нативной интеграции?

HubSpot имеет встроенный инструмент Duplicates Manager (Contacts -> Actions -> Manage Duplicates). Он находит потенциальные дубли по совпадению email, имени, телефона и предлагает слияние. При большом количестве дублей (1,000+) рекомендуем скрипт через HubSpot API: поиск контактов с одинаковым email, автоматическое слияние с сохранением всей истории.

Можно ли использовать Zapier для двусторонней синхронизации?

Частично. Zapier закрывает простые сценарии: закрыт тикет в Intercom -> создать Note в HubSpot. Для двусторонней синхронизации с дедупликацией и передачей Deal Stage — Zapier не хватает условной логики и надёжности при высокой нагрузке. При 100+ событиях в день Zapier начинает пропускать и задерживать.

Intercom хранит историю диалогов — почему нельзя просто открыть её в HubSpot?

HubSpot и Intercom — разные системы с разными хранилищами данных. HubSpot не «видит» диалоги Intercom напрямую — только то, что явно передано через API. Это принципиальное ограничение архитектуры, не недоработка нативной интеграции.

Итого

  • Нативная интеграция HubSpot + Intercom синхронизирует только контакты в одну сторону — без дедупликации
  • Основные проблемы: дубли контактов, потеря истории диалогов, Intercom слеп по отношению к статусу сделки
  • Кастомная интеграция: двусторонняя синхронизация, дедупликация по email, CSAT и история диалогов в HubSpot
  • При большой базе дублей нужна первичная очистка через Duplicates Manager или скрипт
  • Типовой срок разработки — 3–4 недели

Если вы используете HubSpot и Intercom и видите дубли или разрозненные данные — опишите схему работы. Exceltic.dev оценит объём проблемы и предложит конкретное решение.

Ещё статьи

Все →