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.
Сценарий дубля:
- Пользователь зарегистрировался с
john@company.com-> создан в Intercom -> синхронизирован в HubSpot - Тот же пользователь написал в чат под именем
John Smithбез авторизации -> создан как анонимный lead в Intercom с другим ID - Позже авторизовался -> 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 оценит объём проблемы и предложит конкретное решение.