---
title: "HubSpot konektor"
description: "Kompletan vodič za HubSpot CRM integraciju za sinhronizaciju kontakata, kompanija, poslova, tiketa i marketinških podataka sa Brevo putem Tajo."
url: https://tajo.io/sr/docs/connectors/crm/hubspot/
markdown: https://tajo.io/sr/docs/connectors/crm/hubspot.md
lang: sr-Latn-RS
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslaćemo vam vezu za potvrdu zahteva za pristup Taju.

# HubSpot konektor

Status konektora: U izradi Gradi se. Još nije provereno.

| Izvorno polje | Odredišno polje | Primer vrednosti |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Poveži svoj HubSpot CRM sa Brevo putem Tajo za dvosmernu sinhronizaciju kontakata, praćenje poslova, podatke o angažovanju i ujedinjenu marketing automatizaciju na obe platforme.

## Pregled

| Svojstvo | Vrednost |
| --- | --- |
| **Platforma** | HubSpot |
| **Kategorija** | CRM |
| **Složenost podešavanja** | Srednje |
| **Zvanična integracija** | Ne |
| **Sinhronizovani podaci** | Kontakti, Kompanije, Poslovi, Tiketi, Događaji |
| **Osnovni URL API-ja** | `https://api.hubapi.com` |

## Karakteristike

- **Dvosrna sinhronizacija kontakata** - Drži kontakte sinhronizovanim između HubSpot i Brevo u realnom vremenu
- **Praćenje pipeline poslova** - Sinhronizacija faza i vrednosti poslova za segmentaciju zasnovanu na prihodu
- **Sinhronizacija podataka o kompanijama** - Poveži kontakte sa zapisima o kompanijama i firmografskim podacima
- **Integracija tiketa** - Prati tikete podrške za ocenjivanje zdravlja kupca
- **Praćenje angažovanja** - Sinhronizuj otvaranja emailova, klikove, sastanke, pozive i beleške
- **Podrška za prilagođene objekte** - Mapiranje HubSpot prilagođenih objekata na Brevo atribute
- **Okidači toka** - Koristi promene faze životnog ciklusa u HubSpot-u za pokretanje Brevo automatizacija
- **Webhook događaji** - Obaveštenja u realnom vremenu za promene CRM podataka

## Preduslovi

Pre nego što započneš, proveri da imaš:

1. HubSpot nalog (Free, Starter, Professional ili Enterprise)
2. HubSpot privatnu aplikaciju ili OAuth aplikaciju sa potrebnim skopovima
3. Brevo nalog sa API pristupom
4. Tajo nalog

## Autentifikacija

### Token za pristup privatnoj aplikaciji (preporučeno)

Kreiraj privatnu aplikaciju u HubSpot-u za direktni API pristup sa granularnom kontrolom skopova.

1. Idi na HubSpot Settings > Integrations > Private Apps
2. Kreiraj novu privatnu aplikaciju
3. Konfiguriši potrebne skopove
4. Kopiraj access token

```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

Koristi OAuth 2.0 za integracije sa više naloga koje zahtevaju autorizaciju korisnika.

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

#### Potrebni skopovi

```
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
```

## Konfiguracija

### Osnovno podešavanje

```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
```

### Mapiranje polja

Mapiranje HubSpot svojstava na Brevo atribute kontakta:

#### Default Mappings

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | Email kontakta (primarni identifikator) |
| `firstname` optional | string | Mapira se na FIRSTNAME atribut u Brevo |
| `lastname` optional | string | Mapira se na LASTNAME atribut u Brevo |
| `phone` optional | string | Mapira se na SMS atribut za WhatsApp/SMS |
| `company` optional | string | Naziv pridružene kompanije |
| `lifecyclestage` optional | string | HubSpot faza životnog ciklusa (subscriber, lead, MQL, SQL, customer) |
| `hs_lead_status` optional | string | Status kvalifikacije leada |
| `hubspot_owner_id` optional | string | ID dodeljenog vlasnika prodaje |

#### Mapiranje prilagođenih svojstava

```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 endpointi

### CRM objekti

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `GET` | `/crm/v3/objects/contacts` | Listanje kontakata |
| `POST` | `/crm/v3/objects/contacts` | Kreiranje kontakta |
| `PATCH` | `/crm/v3/objects/contacts/{id}` | Ažuriranje kontakta |
| `GET` | `/crm/v3/objects/companies` | Listanje kompanija |
| `GET` | `/crm/v3/objects/deals` | Listanje poslova |
| `POST` | `/crm/v3/objects/deals` | Kreiranje posla |
| `GET` | `/crm/v3/objects/tickets` | Listanje tiketa |

### Asocijacije

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `GET` | `/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}` | Dohvatanje asocijacija |
| `PUT` | `/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}` | Kreiranje asocijacije |

### Angažovanja

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `GET` | `/crm/v3/objects/calls` | Listanje poziva |
| `GET` | `/crm/v3/objects/emails` | Listanje email angažovanja |
| `GET` | `/crm/v3/objects/meetings` | Listanje sastanaka |
| `GET` | `/crm/v3/objects/notes` | Listanje beleški |
| `GET` | `/crm/v3/objects/tasks` | Listanje zadataka |

## Događaji

### Događaji kontakata

| Događaj | Okidač | Primer upotrebe |
| --- | --- | --- |
| `contact.creation` | Novi kontakt kreiran | Okidač welcome toka |
| `contact.propertyChange` | Svojstvo kontakta ažurirano | Sinhronizacija atributa |
| `contact.merge` | Kontakti spojeni | Obrada deduplikacije |
| `contact.deletion` | Kontakt obrisan | Čišćenje u Brevo |

### Događaji poslova

| Događaj | Okidač | Primer upotrebe |
| --- | --- | --- |
| `deal.creation` | Novi posao kreiran | Obaveštenje prodaje |
| `deal.propertyChange` | Faza posla promenjena | Automatizacija pipelinea |
| `deal.deletion` | Posao uklonjen | Izveštavanje o prihodu |

### Događaji kompanija

| Događaj | Okidač | Primer upotrebe |
| --- | --- | --- |
| `company.creation` | Nova kompanija dodata | Account-based marketing |
| `company.propertyChange` | Podaci kompanije ažurirani | Sinhronizacija firmografije |

## Primeri koda

### Inicijalizacija konektora

```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
});
```

### Pokretanje sinhronizacije kontakata

```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
// }
```

### Obrada webhook događaja

```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');
});
```

## Ograničenja brzine

HubSpot primenjuje ograničenja brzine po privatnoj aplikaciji ili OAuth aplikaciji:

| Plan | Ograničenje | Burst limit |
| --- | --- | --- |
| Free/Starter | 100 zahteva/10 sekundi | 150 zahteva/10 sekundi |
| Professional | 150 zahteva/10 sekundi | 200 zahteva/10 sekundi |
| Enterprise | 200 zahteva/10 sekundi | 250 zahteva/10 sekundi |
| API dodatak | 200 zahteva/10 sekundi | 250 zahteva/10 sekundi |

Dodatna ograničenja:

- **Search API**: 5 zahteva/sekundi po aplikaciji
- **Batch operacije**: 100 zapisa po batch zahtevu
- **Dnevno ograničenje**: 500.000 zahteva/dan (OAuth aplikacije)

Obrada ograničenja brzine

HubSpot vraća `429 Too Many Requests` odgovor kada se prekorače limiti. Koristi eksponencijalno usporavanje i prati `X-HubSpot-RateLimit-*` headere.

## Rešavanje problema

### Česti problemi

| Problem | Uzrok | Rešenje |
| --- | --- | --- |
| 401 Unauthorized | Istekao ili nevažeći token | Regeneriši token privatne aplikacije ili osvježi OAuth token |
| Kontakt nije sinhronizovan | Nedostaje email svojstvo | HubSpot kontakti zahtevaju email za Brevo sinhronizaciju |
| Duplirani kontakti | Nema pravila deduplikacije | Konfiguriši pravila spajanja u HubSpot-u |
| Webhook nije primljen | Pretplata nije aktivna | Ponovo registruj webhook pretplate |
| Svojstvo nije mapirano | Prilagođeno svojstvo nije kreirano | Najpre kreiraj svojstvo u HubSpot-u |

### Debug režim

Uključi detaljno logovanje:

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

### Testiraj vezu

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

## Najbolje prakse

1. **Koristi privatne aplikacije umesto API ključeva** - API ključevi su zastareli; koristi privatne aplikacije za bolju bezbednost
2. **Pažljivo implementiraj dvosmernu sinhronizaciju** - Izbegavaj beskonačne petlje praćenjem izvora sinhronizacije
3. **Mapiraj faze životnog ciklusa** - Koristi HubSpot faze životnog ciklusa za segmentiranje kontakata u Brevo
4. **Grupiši API zahteve** - Koristi batch endpointe za bulk operacije da ostaneš u granicama
5. **Prati isporuku webhook-ova** - Postavi logiku ponovnog pokušaja i obradu grešaka
6. **Koristi inkrementalnu sinhronizaciju** - Sinhronizuj samo promenjene zapise koristeći svojstvo `lastmodifieddate`

## Bezbednost

- **Tokeni privatnih aplikacija** - Skopovani access tokeni sa granularnim dozvolama
- **OAuth 2.0** - Standardna autorizacija sa rotacijom refresh tokena
- **Webhook potpisi** - HMAC verifikacija potpisa (v3)
- **TLS enkripcija** - Sva API komunikacija enkriptovana u tranzitu
- **Skopovane dozvole** - Minimalni potrebni pristup skopovima po integraciji

## Povezani resursi

- [HubSpot API dokumentacija](https://developers.hubspot.com/docs/api/overview)
- [Vodič za HubSpot autentifikaciju](https://developers.hubspot.com/docs/api/working-with-oauth)
- [Salesforce konektor](https://tajo.io/sr/docs/connectors/crm/salesforce)
- [Customer Sync veština](https://tajo.io/sr/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/sr/docs/contact-management)
