Typeform + HubSpot: почему нативная интеграция ломает автоматизацию и как это исправить

Typeform и HubSpot — популярная связка для квалификации лидов: красивые формы с логикой ветвления собирают данные, CRM обрабатывает и распределяет. Нативная интеграция существует и подключается за несколько минут. Но при попытке выстроить реальную автоматизацию быстро выясняется критическое ограничение: сабмиты Typeform не логируются как Form Submissions в HubSpot, Workflows не триггерятся, а популярные типы вопросов — Matrix, Ranking, Checkbox — просто не передаются. Разбираем детально.


Что умеет нативная интеграция

Официальный коннектор Typeform + HubSpot покрывает базовый сценарий сбора лидов:

  • Создание нового контакта в HubSpot при каждой отправке формы Typeform
  • Обновление существующего контакта если email совпадает
  • Базовый маппинг стандартных полей: имя, email, телефон, компания
  • Передача текстовых ответов на кастомные вопросы в свойства контакта

Для простой лид-формы с базовыми полями этого достаточно. Но как только форма используется для квалификации лидов с разветвлённой логикой — интеграция начинает ломать процессы.


Где нативная интеграция ломается

Сабмиты не логируются как Form Submissions — Workflows не работают.
Это самое критичное ограничение. В HubSpot есть два типа триггеров для Workflows: событие Form Submission и изменение свойства контакта. Нативная интеграция Typeform обновляет свойства контакта, но не создаёт запись Form Submission. Это означает, что триггер «Контакт заполнил форму» в Workflows недоступен. Для запуска автоматизации приходится использовать обходные пути через изменение свойств — хрупкое и неочевидное решение.

Matrix, Ranking и Checkbox вопросы не передаются.
Именно эти типы вопросов используются для квалификации лидов: «Какой у вас бюджет?» (Ranking), «Какие функции вам важны?» (Checkbox), «Оцените важность факторов» (Matrix). Нативная интеграция их не поддерживает — ответы на эти вопросы в HubSpot не попадают. Команда собирает квалификационные данные в Typeform и теряет их на этапе передачи в CRM.

Маппинг хрупкий и ломается при изменениях.
Переименование вопроса в Typeform, изменение порядка полей или добавление нового вопроса может сломать существующий маппинг без предупреждения. Команда узнаёт о поломке когда замечает, что новые контакты создаются без ключевых данных. Это системная проблема, активно обсуждаемая пользователями.

Нет роутинга лидов на основе ответов.
Typeform позволяет собирать ответы, которые определяют тип клиента: малый бизнес или enterprise, новый или существующий клиент, интерес к продукту A или B. Нативная интеграция передаёт данные в контакт, но не умеет автоматически назначать лид нужному менеджеру или помещать его в нужный pipeline на основе конкретного ответа.

Нет обработки частичных ответов.
Typeform поддерживает webhook form_response_partial — событие когда пользователь начал заполнять форму но не завершил. Это ценный триггер для follow-up: «Вы начали заполнять форму — могу помочь?». Нативная интеграция передаёт только завершённые сабмиты.

Нет дедупликации при повторных сабмитах.
Если существующий клиент заполняет форму повторно — например, форму запроса на демо — нативная интеграция создаёт дубль контакта или перезаписывает данные непредсказуемо. Нет логики «обновить существующий контакт и создать новую активность».


Что решает кастомная интеграция от Exceltic.dev

  • Регистрация Form Submission — каждый сабмит Typeform логируется как официальное Form Submission событие в HubSpot через Engagements API, что позволяет использовать стандартные Workflow триггеры без обходных путей
  • Передача всех типов вопросов — Matrix, Ranking, Checkbox, File Upload маппируются на кастомные свойства HubSpot с сохранением полной структуры ответа
  • Условный роутинг — на основе конкретного ответа на квалификационный вопрос лид автоматически помещается в нужный pipeline, назначается нужному менеджеру и получает соответствующий тег
  • Дедупликация — перед созданием контакта система проверяет наличие существующего по email; повторный сабмит обновляет контакт и создаёт новую активность без дубля
  • Обработка частичных ответов — webhook form_response_partial создаёт контакт с тегом «Незавершённая форма» и запускает follow-up Workflow
  • Устойчивый маппинг — маппинг строится на field_id Typeform, а не на названии вопроса; переименование вопроса не ломает интеграцию
  • Мультиформенная архитектура — несколько Typeform-форм (лид-форма, форма квалификации, форма онбординга, NPS) маппируются на разные объекты и pipeline HubSpot с единой логикой дедупликации

Как работает интеграция — технический процесс

Архитектура подключения

Интеграция построена на связке Typeform Webhooks → middleware Exceltic → HubSpot CRM API v3 + Engagements API. При каждом сабмите Typeform отправляет webhook-событие form_response с полным payload ответов. Верификация входящих событий выполняется через HMAC-SHA256 подпись в заголовке Typeform-Signature с префиксом sha256=. Аутентификация с HubSpot через Private App Token.

Пошаговый сценарий: квалификационная форма с роутингом

  1. Лид заполняет Typeform-квалификатор — отправляется webhook form_response
  2. Middleware верифицирует подпись и парсит payload по field_id (не по названию)
  3. Извлекаются все типы ответов: текст, email, Checkbox (массив), Ranking (упорядоченный список), Matrix (объект)
  4. Система ищет существующий контакт: GET /crm/v3/objects/contacts?email={email}
  5. Если найден — обновляются свойства контакта, создаётся новая активность
  6. Если не найден — создаётся новый контакт с полным набором ответов
  7. На основе ответа на квалификационный вопрос (например, «Размер компании») определяется pipeline: до 10 сотрудников → «SMB», 10–100 → «Mid-Market», 100+ → «Enterprise»
  8. Создаётся Deal в соответствующем pipeline: POST /crm/v3/objects/deals
  9. Deal привязывается к контакту через Association API
  10. Через Engagements API создаётся Form Submission запись: POST /engagements/v1/engagements — это активирует стандартные Workflow-триггеры HubSpot
  11. На основе других квалификационных ответов назначается owner: hubspot_owner_id обновляется в свойствах контакта

Маппинг сложных типов вопросов

text

Typeform Checkbox → HubSpot Multi-select property ["Email marketing", "SEO", "PPC"] → "Email marketing;SEO;PPC" Typeform Ranking → HubSpot Text property (упорядоченная строка) [1: "Price", 2: "Quality", 3: "Speed"] → "1. Price, 2. Quality, 3. Speed" Typeform Matrix → несколько HubSpot Number properties {"Price": 4, "Quality": 5, "Speed": 3} → отдельные свойства per row

Сценарий: частичный ответ и follow-up

  1. Пользователь открывает форму, заполняет 3 из 7 вопросов и закрывает
  2. Typeform отправляет webhook form_response_partial через настроенный интервал
  3. Middleware создаёт контакт с доступными данными и тегом Incomplete Form
  4. В HubSpot создаётся Task для менеджера: «Лид начал заполнять форму — связаться»
  5. Запускается Workflow с follow-up email через 2 часа

Что происходит при ошибке

Typeform повторяет доставку webhook каждые 2–3 минуты до 10 часов при статусах 429, 408, 503, 423. Middleware использует idempotency keys на основе response_id Typeform — повторная доставка не создаёт дубль контакта. При недоступности HubSpot API событие сохраняется в очередь с exponential backoff.


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

SaaS-компания, 4 менеджера по продажам, ~80 лидов в месяц через форму запроса демо.

Компания использовала Typeform для квалификационной формы перед демо: 8 вопросов включая Checkbox (нужные функции), Ranking (приоритеты) и текстовое поле (текущий стек). Нативная интеграция с HubSpot передавала только текстовые ответы — Checkbox и Ranking данные терялись. Менеджеры видели лида в HubSpot без квалификационных данных и шли смотреть ответы напрямую в Typeform перед каждым звонком.

Главная проблема: Workflow для автоматической отправки confirmation email и назначения менеджера не работал — Typeform-сабмиты не триггерили HubSpot Workflows. Команда настроила триггер через изменение кастомного свойства — он ломался при каждом обновлении маппинга.

После подключения кастомной интеграции все квалификационные ответы передаются в HubSpot, сабмиты логируются как Form Submissions, Workflows работают стабильно, роутинг по размеру компании назначает лид нужному менеджеру автоматически.

Результат: менеджеры видят полные квалификационные данные прямо в карточке HubSpot, время подготовки к демо сократилось с 15 до 3 минут, 0 поломок Workflow за 4 месяца после внедрения.


Для каких бизнесов подходит

Кастомная интеграция наиболее актуальна для SaaS и сервисных компаний, использующих Typeform для квалификации лидов перед демо, онбордингом или консультацией — где ответы на сложные типы вопросов (Checkbox, Matrix, Ranking) являются ключевыми данными для подготовки менеджера и персонализации коммуникаций.

Критически важна для компаний с автоматизированными Workflows в HubSpot — без корректной регистрации Form Submission автоматизация на основе Typeform-сабмитов либо не работает, либо строится на хрупких обходных путях, которые ломаются при любом изменении формы.


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

Почему нативная интеграция Typeform + HubSpot не триггерит Workflows?
Нативная интеграция обновляет свойства контакта, но не создаёт запись Form Submission в HubSpot. Workflows с триггером «Контакт заполнил форму» требуют именно этой записи — она создаётся только через HubSpot Engagements API, который нативный коннектор не использует. Кастомная интеграция Exceltic.dev создаёт Form Submission запись через Engagements API при каждом сабмите.

Какие типы вопросов Typeform поддерживает кастомная интеграция?
Все типы: Short Text, Long Text, Email, Number, Dropdown, Multiple Choice, Checkbox, Ranking, Matrix, Rating, Opinion Scale, Date, File Upload, Payment. Каждый тип маппируется на соответствующий тип свойства HubSpot с сохранением структуры данных.

Как работает роутинг лидов на основе ответов Typeform?
В настройках интеграции задаются правила роутинга: «Если ответ на вопрос X равен Y — поместить Deal в pipeline Z и назначить owner W». Правила поддерживают условия для всех типов вопросов включая Checkbox (содержит значение) и Ranking (первое место).

Поддерживает ли интеграция несколько Typeform-форм?
Да. Каждая форма регистрируется с собственными правилами маппинга и роутинга. Например, форма запроса демо создаёт Deal в pipeline «Продажи», форма онбординга создаёт Task, NPS-форма обновляет свойство NPS Score контакта.

Сколько времени занимает разработка интеграции Typeform и HubSpot?
Базовая интеграция с передачей всех типов вопросов и Form Submission — 2–3 рабочих дня. Версия с условным роутингом, частичными ответами и мультиформенной архитектурой — 4–6 рабочих дней. Exceltic.dev определяет точные сроки после технического брифа.

Если нативная интеграция Typeform + HubSpot ломает вашу автоматизацию — опишите задачу команде Exceltic.dev. Разберём структуру форм и настроим роутинг под ваши процессы.

Ещё статьи

Все →