HubSpot konektor
HubSpot konektor
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 | Da |
| 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š:
- HubSpot nalog (Free, Starter, Professional ili Enterprise)
- HubSpot privatnu aplikaciju ili OAuth aplikaciju sa potrebnim skopovima
- Brevo nalog sa API pristupom
- Tajo nalog
Autentifikacija
Token za pristup privatnoj aplikaciji (preporučeno)
Kreiraj privatnu aplikaciju u HubSpot-u za direktni API pristup sa granularnom kontrolom skopova.
- Idi na HubSpot Settings > Integrations > Private Apps
- Kreiraj novu privatnu aplikaciju
- Konfiguriši potrebne skopove
- Kopiraj access token
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.
# Authorization URLhttps://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}Potrebni skopovi
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.deals.readcrm.objects.deals.writecrm.objects.custom.readcrm.schemas.custom.readKonfiguracija
Osnovno podešavanje
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: 12Mapiranje 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
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 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
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});Pokretanje sinhronizacije kontakata
// 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// }Obrada webhook događaja
// 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');});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:
connectors: hubspot: debug: true log_level: verbose log_webhooks: trueTestiraj vezu
tajo connectors test hubspot# ✓ API connection successful# ✓ Contacts readable# ✓ Companies readable# ✓ Deals readable# ✓ Webhooks registeredNajbolje prakse
- Koristi privatne aplikacije umesto API ključeva - API ključevi su zastareli; koristi privatne aplikacije za bolju bezbednost
- Pažljivo implementiraj dvosmernu sinhronizaciju - Izbegavaj beskonačne petlje praćenjem izvora sinhronizacije
- Mapiraj faze životnog ciklusa - Koristi HubSpot faze životnog ciklusa za segmentiranje kontakata u Brevo
- Grupiši API zahteve - Koristi batch endpointe za bulk operacije da ostaneš u granicama
- Prati isporuku webhook-ova - Postavi logiku ponovnog pokušaja i obradu grešaka
- 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