Интеграция CRM-системы HubSpot с сайтом
HubSpot — популярная CRM для малого и среднего бизнеса с удобным API и бесплатным тарифом. Интеграция позволяет автоматически добавлять лиды из форм сайта, синхронизировать контакты, отслеживать активность пользователей и запускать автоматические email-цепочки.
Способы интеграции
HubSpot Forms API — отправка данных формы напрямую в HubSpot. Самый простой способ для сбора лидов.
HubSpot CRM API v3 — полный контроль через REST API. Создание и обновление контактов, сделок, тикетов.
HubSpot JS Tracking Code — скрипт отслеживания поведения на сайте. Связывает действия посетителя (просмотр страниц, клики) с контактом в CRM.
Отправка лида через Forms API
// Получить portal_id и form_id из URL формы в HubSpot
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'), // cookie для связи с визитом
pageUri: window.location.href,
pageName: document.title
}
})
}
);
Поле hutk связывает лид с историей визитов на сайте — обязательно для корректной атрибуции.
CRM API: создание контакта и сделки
// composer require hubspot/hubspot-php
$client = \HubSpot\Factory::createWithAccessToken(env('HUBSPOT_ACCESS_TOKEN'));
// Создание или обновление контакта (upsert по email)
$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 // ms
]
])
);
// Привязка сделки к контакту
$client->crm()->deals()->associationsApi()->create(
$deal->getId(), 'contact', $contact->getId(), 'deal_to_contact'
);
Webhook для синхронизации
HubSpot поддерживает webhooks: при изменении контакта или сделки присылает уведомление на endpoint сайта. Используется для синхронизации статуса сделки обратно на сайт (например, менеджер закрыл сделку в HubSpot → статус на сайте обновляется).
Список HubSpot и сегментация
Пользователей сайта можно автоматически добавлять в списки HubSpot для сегментированных email-кампаний:
$client->crm()->lists()->membershipsApi()->addAndRemoveMemberships(
$listId,
new AddAndRemoveMembershipsInput(['recordIdsToAdd' => [$contactId]])
);
Трекинг событий
Для продвинутого трекинга — Custom Behavioral Events через API:
$client->events()->send()->basicApi()->sendEvent([
'eventName' => 'pe123456_product_viewed',
'email' => $user->email,
'properties' => ['product_id' => $productId, 'product_name' => $productName]
]);
Срок интеграции: 3–5 дней для базовой синхронизации лидов и заказов. С двунаправленной синхронизацией и трекингом событий — 1,5–2 недели.







