---
title: "Коннектор HubSpot"
description: "Полное руководство по интеграции HubSpot CRM для синхронизации контактов, компаний, сделок, тикетов и маркетинговых данных с Brevo через Tajo."
url: https://tajo.io/ru/docs/connectors/crm/hubspot/
markdown: https://tajo.io/ru/docs/connectors/crm/hubspot.md
lang: ru-RU
robots: noindex
---

Подайте заявку на ранний доступ

Укажите имя и рабочий адрес электронной почты. Мы отправим ссылку для подтверждения запроса на доступ к Tajo.

# Коннектор HubSpot

Статус коннектора: В разработке Создаётся. Ещё не проверен.

| Поле источника | Поле назначения | Пример значения |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Подключите вашу HubSpot CRM к Brevo через Tajo для двусторонней синхронизации контактов, отслеживания сделок, данных об активности и единой маркетинговой автоматизации на обеих платформах.

## Обзор

| Свойство | Значение |
| --- | --- |
| **Платформа** | HubSpot |
| **Категория** | CRM |
| **Сложность настройки** | Средняя |
| **Официальная интеграция** | Нет |
| **Синхронизируемые данные** | Контакты, компании, сделки, тикеты, события |
| **Базовый URL API** | `https://api.hubapi.com` |

## Возможности

- **Двусторонняя синхронизация контактов**, контакты синхронизируются между HubSpot и Brevo в реальном времени
- **Отслеживание воронки сделок**, синхронизируйте стадии и суммы сделок для сегментации по выручке
- **Синхронизация данных о компаниях**, связывайте контакты с записями компаний и фирмографическими данными
- **Интеграция тикетов**, отслеживайте тикеты поддержки для оценки здоровья клиентов
- **Отслеживание активности**, синхронизируйте открытия писем, клики, встречи, звонки и заметки
- **Поддержка кастомных объектов**, сопоставляйте кастомные объекты HubSpot с атрибутами Brevo
- **Триггеры рабочих процессов**, используйте изменения стадий жизненного цикла HubSpot для запуска автоматизаций Brevo
- **События вебхуков**, уведомления об изменениях данных CRM в реальном времени

## Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

1. Аккаунт HubSpot (Free, Starter, Professional или Enterprise)
2. Приватное приложение HubSpot или OAuth-приложение с необходимыми scope
3. Аккаунт Brevo с доступом к API
4. Аккаунт Tajo

## Аутентификация

### Токен доступа приватного приложения (рекомендуется)

Создайте приватное приложение в HubSpot для прямого доступа к API с детальным контролем scope.

1. Перейдите в HubSpot Settings > Integrations > Private Apps
2. Создайте новое приватное приложение
3. Настройте необходимые scope
4. Скопируйте токен доступа

```bash
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 для мультиаккаунтных интеграций, которые требуют авторизации пользователя.

```bash
# Authorization URL
https://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}
```

#### Необходимые scope

```
crm.objects.contacts.read
crm.objects.contacts.write
crm.objects.companies.read
crm.objects.deals.read
crm.objects.deals.write
crm.objects.custom.read
crm.schemas.custom.read
```

## Конфигурация

### Базовая настройка

```yaml
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 | Email контакта (основной идентификатор) |
| `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 | Идентификатор назначенного менеджера по продажам |

#### Сопоставление кастомных свойств

```yaml
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: SEGMENT
```

## Эндпоинты API

### CRM-объекты

| Метод | Эндпоинт | Описание |
| --- | --- | --- |
| `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` | Список тикетов |

### Ассоциации

| Метод | Эндпоинт | Описание |
| --- | --- | --- |
| `GET` | `/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}` | Получить ассоциации |
| `PUT` | `/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}` | Создать ассоциацию |

### Активности

| Метод | Эндпоинт | Описание |
| --- | --- | --- |
| `GET` | `/crm/v3/objects/calls` | Список звонков |
| `GET` | `/crm/v3/objects/emails` | Список email-активностей |
| `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` | Обновлены данные компании | Фирмографическая синхронизация |

## Примеры кода

### Инициализация коннектора

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect HubSpot
await tajo.connectors.connect('hubspot', {
  accessToken: process.env.HUBSPOT_ACCESS_TOKEN
});
```

### Запуск синхронизации контактов

```javascript
// Full bidirectional sync
await tajo.connectors.sync('hubspot', {
  type: 'full',
  resources: ['contacts', 'companies', 'deals'],
  direction: 'bidirectional',
  since: '2023-01-01'
});

// Check sync status
const status = await tajo.connectors.status('hubspot');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-01-15T10:30:00Z',
//   contactsSynced: 34200,
//   companiesSynced: 5100,
//   dealsSynced: 2340
// }
```

### Обработка событий вебхуков

```javascript
// Handle HubSpot webhook notifications
app.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-приложение:

| Тариф | Лимит | Burst-лимит |
| --- | --- | --- |
| 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 запросов/секунду на приложение
- **Пакетные операции**: 100 записей на пакетный запрос
- **Дневной лимит**: 500 000 запросов/день (OAuth-приложения)

Обработка лимитов запросов

HubSpot возвращает ответ `429 Too Many Requests` при превышении лимитов. Используйте экспоненциальную задержку и отслеживайте заголовки `X-HubSpot-RateLimit-*`.

## Устранение неполадок

### Частые проблемы

| Проблема | Причина | Решение |
| --- | --- | --- |
| 401 Unauthorized | Истёкший или недействительный токен | Перегенерируйте токен приватного приложения или обновите OAuth-токен |
| Контакт не синхронизирован | Отсутствует свойство email | Контакты HubSpot требуют email для синхронизации с Brevo |
| Дубликаты контактов | Нет правила дедупликации | Настройте правила объединения в HubSpot |
| Вебхук не получен | Подписка неактивна | Повторно зарегистрируйте подписки вебхуков |
| Свойство не сопоставлено | Кастомное свойство не создано | Сначала создайте свойство в HubSpot |

### Режим отладки

Включите подробное логирование:

```yaml
connectors:
  hubspot:
    debug: true
    log_level: verbose
    log_webhooks: true
```

### Проверка подключения

```bash
tajo connectors test hubspot
# ✓ API connection successful
# ✓ Contacts readable
# ✓ Companies readable
# ✓ Deals readable
# ✓ Webhooks registered
```

## Лучшие практики

1. **Используйте приватные приложения вместо API-ключей**, API-ключи устарели; используйте приватные приложения для лучшей безопасности
2. **Осторожно внедряйте двустороннюю синхронизацию**, избегайте бесконечных циклов, отслеживая источник синхронизации
3. **Сопоставляйте стадии жизненного цикла**, используйте стадии жизненного цикла HubSpot для сегментации контактов в Brevo
4. **Объединяйте API-запросы в пакеты**, используйте пакетные эндпоинты для массовых операций, чтобы не выходить за лимиты
5. **Отслеживайте доставку вебхуков**, настройте логику повтора и обработку “мёртвых” писем
6. **Используйте инкрементальную синхронизацию**, синхронизируйте только изменённые записи с помощью свойства `lastmodifieddate`

## Безопасность

- **Токены приватных приложений**, токены доступа с детальными разрешениями
- **OAuth 2.0**, отраслевой стандарт авторизации с ротацией refresh-токенов
- **Подписи вебхуков**, проверка подписи на основе HMAC (v3)
- **TLS-шифрование**, все API-коммуникации зашифрованы при передаче
- **Разрешения по scope**, доступ с минимально необходимыми scope для каждой интеграции

## Связанные ресурсы

- [Документация API HubSpot](https://developers.hubspot.com/docs/api/overview)
- [Руководство по аутентификации HubSpot](https://developers.hubspot.com/docs/api/working-with-oauth)
- [Коннектор Salesforce](https://tajo.io/ru/docs/connectors/crm/salesforce)
- [Навык синхронизации клиентов](https://tajo.io/ru/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/ru/docs/contact-management)
