Інтеграція 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 // мс
]
])
);
// Пов'язати угоду з контактом
$client->crm()->deals()->associationsApi()->create(
$deal->getId(), 'contact', $contact->getId(), 'deal_to_contact'
);
Webhook для синхронізації
HubSpot підтримує webhook: при зміні контакту або угоди відправляє сповіщення на 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 тижні.







