При запуске интернет-магазина на Laravel столкнулись с проблемой: лиды из формы обратной связи терялись, менеджеры вручную переносили данные 20+ контактов ежедневно. HubSpot CRM и её API решили задачу — теперь данные текут автоматически, без копипаста. За 5 лет работы мы интегрировали HubSpot с десятками проектов: от одностраничных сайтов до крупных маркетплейсов. Знаем типичные грабли и как их обойти.
HubSpot — CRM с открытым REST API, бесплатным тарифом и встроенным трекингом. Интеграция позволяет передавать контакты, сделки, события и запускать цепочки писем без участия разработчика после настройки. Мы обеспечиваем полный цикл: от аудита до внедрения. Автоматизация сокращает время обработки лида на 60% — цифры из нашей практики. В одном проекте после интеграции количество обработанных заявок выросло с 20 до 70 в день без расширения штата.
Как передать лиды через Forms API?
Forms API — простой endpoint для отправки данных формы. Пример на JavaScript:
const PORTAL_ID = '12345678'; const FORM_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; const response = await fetch( `https://api.hsforms.com/submissions/v3/integration/submit/${PORTAL_ID}/${FORM_ID}`, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ fields: [ {name: 'firstname', value: formData.firstName}, {name: 'lastname', value: formData.lastName}, {name: 'email', value: formData.email}, {name: 'phone', value: formData.phone}, {name: 'message', value: formData.message} ], context: { hutk: getCookie('hubspotutk'), pageUri: window.location.href, pageName: document.title } }) } ); hutk связывает лид с историей визита — без него атрибуция сломается. Важно проверять ответ сервера: код 200 — лид создан, 400 — ошибка валидации. Обрабатывайте статусы, чтобы не терять данные. Ответ сервера содержит ID контакта, который можно сохранить в локальной БД для последующей синхронизации.
Почему CRM API лучше готовых модулей?
Готовые модули WordPress обрабатывают до 10 запросов в минуту, CRM API v3 — до 100 в секунду. Разница в 600 раз. Для высоконагруженных проектов выбор очевиден. Кроме производительности, готовые модули не дают кастомной логики: сложно синхронизировать сделки, привязывать пользователей или создавать кастомные поля. CRM API v3 даёт полный контроль.
Пример создания контакта и сделки на PHP (через официальный SDK):
$client = \HubSpot\Factory::createWithAccessToken(env('HUBSPOT_ACCESS_TOKEN')); $contact = $client->crm()->contacts()->basicApi()->create( new \HubSpot\Client\Crm\Contacts\Model\SimplePublicObjectInput([ 'properties' => [ 'email' => $user->email, 'firstname' => $user->first_name, 'phone' => $user->phone, 'website_user_id' => $user->id ] ]) ); $deal = $client->crm()->deals()->basicApi()->create( new \HubSpot\Client\Crm\Deals\Model\SimplePublicObjectInput([ 'properties' => [ 'dealname' => "Заказ #{$order->id}", 'amount' => $order->total / 100, 'dealstage' => 'closedwon', 'closedate' => $order->created_at->timestamp * 1000 ] ]) ); $client->crm()->deals()->associationsApi()->create( $deal->getId(), 'contact', $contact->getId(), 'deal_to_contact' ); Обратите внимание: ассоциация сделки с контактом — отдельный вызов. Без неё в HubStats видна только разрозненная информация.
Как настроить двунаправленную синхронизацию?
Webhooks HubSpot присылают уведомления при изменении контакта или сделки. Endpoint сайта обновляет локальную БД — статус заказа меняется без ручного ввода. Пример подписки на события через Webhooks API:
$client->crm()->lists()->membershipsApi()->addAndRemoveMemberships( $listId, new AddAndRemoveMembershipsInput(['recordIdsToAdd' => [$contactId]]) ); При изменении статуса сделки в HubSpot вебхук отправляет POST-запрос на ваш endpoint. Ваш скрипт обновляет локальную БД — статус заказа меняется автоматически. Так достигается полная синхронизация без задержек.
Продвинутый трекинг через Events API
Custom Behavioral Events позволяют передавать любые действия пользователя (просмотр товара, добавление в корзину). Создайте событие в интерфейсе HubSpot и отправляйте:
$client->events()->send()->basicApi()->sendEvent([ 'eventName' => 'pe123456_product_viewed', 'email' => $user->email, 'properties' => ['product_id' => $productId, 'product_name' => $productName] ]); События позволяют отследить, какой товар пользователь просматривал, сколько раз, и на каком этапе бросил корзину. В одном из проектов мы настроили 15 кастомных событий — это повысило точность таргетинга писем на 40%.
Сравнение способов интеграции
| Способ | Сложность | Функции | Скорость внедрения |
|---|---|---|---|
| HubSpot Forms API | Низкая | Только лиды | 1–2 дня |
| CRM API v3 | Средняя | Контакты, сделки, тикеты | 3–5 дней |
| Webhooks + CRM | Высокая | Двунаправленная синхронизация | 1–2 недели |
| Tracking Code | Низкая | Поведение, события | 1–2 дня |
Сроки интеграции HubSpot
| Этап | Длительность |
|---|---|
| Базовая интеграция (формы, контакты) | 3–5 дней |
| С трекингом и кастомными событиями | 1–2 недели |
| Двунаправленная синхронизация с Webhooks | 2–3 недели |
Стоимость рассчитывается индивидуально на основе ТЗ. Обратитесь за оценкой — мы подготовим коммерческое предложение за 1 рабочий день.
Что входит в работу под ключ?
- Аудит текущих форм и сценариев — выявим узкие места.
- Настройка API-ключей и портала HubSpot — безопасное подключение.
- Разработка отправки лидов, контактов, сделок — с использованием PHP или JavaScript SDK.
- Установка tracking-скрипта и кастомных событий — точная атрибуция.
- Реализация вебхуков для обратной связи — синхронизация в реальном времени.
- Документация по API и обучение команды — вы сможете поддерживать сами.
- Тестирование синхронизации и исправление ошибок — гарантируем стабильность.
Помощь инженера в нестандартных случаях
Если на сайте нестандартная логика (кастомные поля, сложные воронки, многоязычность), привлекаем веб-разработчика с опытом HubSpot. Пример: интеграция с ERP-системой через промежуточный слой или синхронизация пользовательских списков.
Получите консультацию по интеграции HubSpot — оценим ваш проект за 1 день. Свяжитесь с нами, чтобы обсудить детали.







