Конектор HubSpot
Конектор HubSpot
Свържете своя HubSpot CRM с Brevo чрез Tajo за двупосочна синхронизация на контакти, проследяване на сделки, данни за ангажираност и унифицирана маркетингова автоматизация между двете платформи.
Преглед
| Свойство | Стойност |
|---|---|
| Платформа | HubSpot |
| Категория | CRM |
| Сложност на настройка | Средна |
| Официална интеграция | Да |
| Синхронизирани данни | Контакти, компании, сделки, билети, събития |
| API Base URL | https://api.hubapi.com |
Функции
- Двупосочна синхронизация на контакти – Поддържайте контактите синхронизирани между HubSpot и Brevo в реално време
- Проследяване на пайплайна от сделки – Синхронизирайте етапите и стойностите на сделките за сегментация на базата на приходите
- Синхронизация на данни за компаниите – Свържете контактите с фирмени записи и фирмографски данни
- Интеграция на билети – Проследявайте билети за поддръжка за оценка на клиентското здраве
- Проследяване на ангажираност – Синхронизирайте отварянията на имейли, кликванията, срещите, обажданията и бележките
- Поддръжка на персонализирани обекти – Mапвайте персонализирани обекти на HubSpot към атрибути в Brevo
- Тригери на работни процеси – Използвайте промените в етапа от жизнения цикъл на HubSpot, за да задействате автоматизации в Brevo
- Събития през webhook – Нотификации в реално време за промени в CRM данните
Предварителни условия
Преди да започнете, уверете се, че имате:
- Акаунт в HubSpot (Free, Starter, Professional или Enterprise)
- Частно приложение или OAuth приложение в HubSpot с необходимите обхвати
- Акаунт в Brevo с API достъп
- Акаунт в Tajo
Автентикация
Токен за достъп от частно приложение (препоръчително)
Създайте частно приложение в HubSpot за директен API достъп с гранулиран контрол на обхватите.
- Отидете в HubSpot Settings > Integrations > Private Apps
- Създайте ново частно приложение
- Конфигурирайте необходимите обхвати
- Копирайте токена за достъп
curl -X GET "https://api.hubapi.com/crm/v3/objects/contacts" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json"OAuth 2.0
Използвайте OAuth 2.0 за интеграции с множество акаунти, които изискват оторизация от потребителя.
# Authorization URLhttps://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}Необходими обхвати
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.deals.readcrm.objects.deals.writecrm.objects.custom.readcrm.schemas.custom.readКонфигурация
Основна настройка
connectors: hubspot: enabled: true access_token: "${HUBSPOT_ACCESS_TOKEN}"
# Data sync options sync: contacts: true companies: true deals: true tickets: true engagements: true
# Sync direction direction: bidirectional # or 'hubspot_to_brevo' | 'brevo_to_hubspot'
# List assignment in Brevo lists: all_contacts: 10 qualified_leads: 11 customers: 12Мапване на полета
Мапвайте свойствата от HubSpot към атрибутите на контактите в Brevo:
Мапвания по подразбиране
| Parameter | Type | Description |
|---|---|---|
email required | string | Имейл на контакта (основен идентификатор) |
firstname optional | string | Мапва се към атрибута FIRSTNAME в Brevo |
lastname optional | string | Мапва се към атрибута LASTNAME в Brevo |
phone optional | string | Мапва се към атрибута SMS за WhatsApp/SMS |
company optional | string | Име на свързаната компания |
lifecyclestage optional | string | Етап от жизнения цикъл в HubSpot (subscriber, lead, MQL, SQL, customer) |
hs_lead_status optional | string | Статус на квалификация на лийда |
hubspot_owner_id optional | string | ID на определения собственик от продажбите |
Мапване на персонализирани свойства
field_mapping: # Standard fields email: email firstname: FIRSTNAME lastname: LASTNAME phone: SMS
# CRM fields lifecyclestage: LIFECYCLE_STAGE hs_lead_status: LEAD_STATUS company: COMPANY_NAME
# Deal metrics hs_total_deal_value: DEAL_VALUE num_associated_deals: DEAL_COUNT
# Custom properties preferred_channel: PREFERRED_CHANNEL customer_segment: SEGMENTAPI крайни точки
CRM обекти
| Method | Endpoint | Описание |
|---|---|---|
GET | /crm/v3/objects/contacts | Списък на контактите |
POST | /crm/v3/objects/contacts | Създаване на контакт |
PATCH | /crm/v3/objects/contacts/{id} | Обновяване на контакт |
GET | /crm/v3/objects/companies | Списък на компаниите |
GET | /crm/v3/objects/deals | Списък на сделките |
POST | /crm/v3/objects/deals | Създаване на сделка |
GET | /crm/v3/objects/tickets | Списък на билетите |
Асоциации
| Method | Endpoint | Описание |
|---|---|---|
GET | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType} | Извличане на асоциации |
PUT | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} | Създаване на асоциация |
Ангажираност
| Method | Endpoint | Описание |
|---|---|---|
GET | /crm/v3/objects/calls | Списък на ангажиментите от обаждания |
GET | /crm/v3/objects/emails | Списък на имейл ангажиментите |
GET | /crm/v3/objects/meetings | Списък на срещите |
GET | /crm/v3/objects/notes | Списък на бележките |
GET | /crm/v3/objects/tasks | Списък на задачите |
Събития
Събития за контакти
| Събитие | Тригер | Случай на употреба |
|---|---|---|
contact.creation | Създаден нов контакт | Тригер за приветствен поток |
contact.propertyChange | Обновено свойство на контакта | Синхронизация на атрибути |
contact.merge | Обединени контакти | Обработка на дубликати |
contact.deletion | Изтрит контакт | Почистване в Brevo |
Събития за сделки
| Събитие | Тригер | Случай на употреба |
|---|---|---|
deal.creation | Създадена нова сделка | Известие до продажбите |
deal.propertyChange | Променен етап на сделката | Автоматизация на пайплайна |
deal.deletion | Премахната сделка | Отчитане на приходи |
Събития за компании
| Събитие | Тригер | Случай на употреба |
|---|---|---|
company.creation | Добавена нова компания | Account-based маркетинг |
company.propertyChange | Обновени данни за компанията | Фирмографска синхронизация |
Примери за код
Инициализация на конектора
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect HubSpotawait tajo.connectors.connect('hubspot', { accessToken: process.env.HUBSPOT_ACCESS_TOKEN});Изпълнение на синхронизация на контакти
// Full bidirectional syncawait tajo.connectors.sync('hubspot', { type: 'full', resources: ['contacts', 'companies', 'deals'], direction: 'bidirectional', since: '2023-01-01'});
// Check sync statusconst status = await tajo.connectors.status('hubspot');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 34200,// companiesSynced: 5100,// dealsSynced: 2340// }Обработка на webhook събития
// Handle HubSpot webhook notificationsapp.post('/webhooks/hubspot', async (req, res) => { const signature = req.get('X-HubSpot-Signature-v3');
// Verify webhook signature if (!verifyHubSpotSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
for (const event of req.body) { await tajo.connectors.handleWebhook('hubspot', { eventType: event.subscriptionType, objectId: event.objectId, propertyName: event.propertyName, propertyValue: event.propertyValue }); }
res.status(200).send('OK');});Лимити на заявки
HubSpot прилага лимити на заявките за всяко частно приложение или OAuth приложение:
| План | Лимит на заявки | Лимит при пикове |
|---|---|---|
| Free/Starter | 100 заявки/10 секунди | 150 заявки/10 секунди |
| Professional | 150 заявки/10 секунди | 200 заявки/10 секунди |
| Enterprise | 200 заявки/10 секунди | 250 заявки/10 секунди |
| API add-on | 200 заявки/10 секунди | 250 заявки/10 секунди |
Допълнителни лимити:
- Search API: 5 заявки/секунда за приложение
- Операции в batch: 100 записа на batch заявка
- Дневен лимит: 500 000 заявки/ден (OAuth приложения)
Обработка на лимита на заявки
HubSpot връща отговор 429 Too Many Requests при надвишаване на лимитите. Използвайте експоненциално отлагане и наблюдавайте хедърите X-HubSpot-RateLimit-*.
Отстраняване на проблеми
Често срещани проблеми
| Проблем | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Изтекъл или невалиден токен | Генерирайте нов токен за частно приложение или обновете OAuth токена |
| Контакт не е синхронизиран | Липсващо свойство email | Контактите в HubSpot изискват имейл за синхронизация с Brevo |
| Дублирани контакти | Няма правило за дедупликация | Конфигурирайте правила за обединяване в HubSpot |
| Webhook не е получен | Абонаментът не е активен | Регистрирайте отново webhook абонаментите |
| Свойството не е мапнато | Персонализираното свойство не е създадено | Първо създайте свойството в HubSpot |
Debug режим
Активирайте подробно логиране:
connectors: hubspot: debug: true log_level: verbose log_webhooks: trueТестване на връзката
tajo connectors test hubspot# ✓ API connection successful# ✓ Contacts readable# ✓ Companies readable# ✓ Deals readable# ✓ Webhooks registeredНай-добри практики
- Използвайте частни приложения вместо API ключове – API ключовете са отхвърлени; използвайте частни приложения за по-добра сигурност
- Внимателно прилагайте двупосочна синхронизация – Избягвайте безкрайни цикли, като проследявате източника на синхронизация
- Мапвайте етапите от жизнения цикъл – Използвайте етапите от жизнения цикъл в HubSpot за сегментиране на контактите в Brevo
- Групирайте API заявките – Използвайте batch крайни точки за групови операции, за да останете в рамките на лимитите
- Наблюдавайте доставката на webhook – Настройте логика за повторен опит и обработка на dead letter
- Използвайте инкрементална синхронизация – Синхронизирайте само променените записи чрез свойството
lastmodifieddate
Сигурност
- Токени за частни приложения – Обхватни токени за достъп с гранулирани разрешения
- OAuth 2.0 – Индустриален стандарт за оторизация с ротация на refresh токени
- Webhook подписи – HMAC-базирана верификация на подписи (v3)
- TLS криптиране – Цялата API комуникация е криптирана при предаване
- Обхватни разрешения – Минимално необходим обхват за всяка интеграция