Conector HubSpot
Conector HubSpot
Conectați HubSpot CRM la Brevo prin Tajo pentru sincronizare bidirecțională a contactelor, urmărirea ofertelor, date de implicare și automatizare de marketing unificată pe ambele platforme.
Prezentare generală
| Proprietate | Valoare |
|---|---|
| Platformă | HubSpot |
| Categorie | CRM |
| Complexitate configurare | Medie |
| Integrare oficială | Da |
| Date sincronizate | Contacte, Companii, Oferte, Tichete, Evenimente |
| URL de bază API | https://api.hubapi.com |
Funcționalități
- Sincronizare bidirecțională a contactelor - Mențineți contactele sincronizate între HubSpot și Brevo în timp real
- Urmărire pipeline oferte - Sincronizați etapele și valorile ofertelor pentru segmentare bazată pe venituri
- Sincronizare date companie - Asociați contactele cu înregistrările companiei și datele firmografice
- Integrare tichete - Urmăriți tichetele de suport pentru evaluarea stării clientului
- Urmărire implicare - Sincronizați deschideri de e-mail, clicuri, întâlniri, apeluri și notițe
- Suport obiecte personalizate - Mapați obiectele personalizate HubSpot la atributele Brevo
- Declanșatoare de flux de lucru - Utilizați schimbările de etapă din ciclul de viață HubSpot pentru a declanșa automatizările Brevo
- Evenimente webhook - Notificări în timp real pentru modificările datelor CRM
Cerințe preliminare
Înainte de a începe, asigurați-vă că aveți:
- Un cont HubSpot (Free, Starter, Professional sau Enterprise)
- O aplicație privată sau OAuth HubSpot cu scopurile necesare
- Un cont Brevo cu acces API
- Un cont Tajo
Autentificare
Token de acces aplicație privată (Recomandat)
Creați o aplicație privată în HubSpot pentru acces direct la API cu control granular al scopurilor.
- Accesați HubSpot Settings > Integrations > Private Apps
- Creați o nouă aplicație privată
- Configurați scopurile necesare
- Copiați tokenul de acces
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
Utilizați OAuth 2.0 pentru integrări cu mai multe conturi care necesită autorizarea utilizatorului.
# URL de autorizarehttps://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}Scopuri necesare
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.deals.readcrm.objects.deals.writecrm.objects.custom.readcrm.schemas.custom.readConfigurare
Configurare de bază
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: 12Mapare câmpuri
Mapați proprietățile HubSpot la atributele de contact Brevo:
Mapări implicite
| Parameter | Type | Description |
|---|---|---|
email required | string | E-mailul contactului (identificator principal) |
firstname optional | string | Mapează la atributul FIRSTNAME în Brevo |
lastname optional | string | Mapează la atributul LASTNAME în Brevo |
phone optional | string | Mapează la atributul SMS pentru WhatsApp/SMS |
company optional | string | Numele companiei asociate |
lifecyclestage optional | string | Etapa din ciclul de viață HubSpot (abonat, lead, MQL, SQL, client) |
hs_lead_status optional | string | Statusul de calificare al lead-ului |
hubspot_owner_id optional | string | ID-ul responsabilului de vânzări atribuit |
Mapare proprietăți personalizate
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: SEGMENTPuncte finale API
Obiecte CRM
| Metodă | Punct final | Descriere |
|---|---|---|
GET | /crm/v3/objects/contacts | Listează contacte |
POST | /crm/v3/objects/contacts | Creează un contact |
PATCH | /crm/v3/objects/contacts/{id} | Actualizează un contact |
GET | /crm/v3/objects/companies | Listează companii |
GET | /crm/v3/objects/deals | Listează oferte |
POST | /crm/v3/objects/deals | Creează o ofertă |
GET | /crm/v3/objects/tickets | Listează tichete |
Asocieri
| Metodă | Punct final | Descriere |
|---|---|---|
GET | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType} | Obține asocierile |
PUT | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} | Creează asociere |
Implicare
| Metodă | Punct final | Descriere |
|---|---|---|
GET | /crm/v3/objects/calls | Listează apeluri |
GET | /crm/v3/objects/emails | Listează e-mailuri |
GET | /crm/v3/objects/meetings | Listează întâlniri |
GET | /crm/v3/objects/notes | Listează notițe |
GET | /crm/v3/objects/tasks | Listează sarcini |
Evenimente
Evenimente de contact
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
contact.creation | Contact nou creat | Declanșare flux de bun venit |
contact.propertyChange | Proprietate contact actualizată | Sincronizare atribute |
contact.merge | Contacte combinate | Gestionare deduplicare |
contact.deletion | Contact șters | Curățare în Brevo |
Evenimente de ofertă
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
deal.creation | Ofertă nouă creată | Notificare de vânzări |
deal.propertyChange | Etapă ofertă schimbată | Automatizare pipeline |
deal.deletion | Ofertă eliminată | Raportare venituri |
Evenimente de companie
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
company.creation | Companie nouă adăugată | Marketing bazat pe cont |
company.propertyChange | Date companie actualizate | Sincronizare firmografică |
Exemple de cod
Inițializare conector
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});Executare sincronizare contacte
// 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// }Gestionare evenimente 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');});Limite de rată
HubSpot aplică limite de rată per aplicație privată sau OAuth:
| Plan | Limită de rată | Limită burst |
|---|---|---|
| Free/Starter | 100 cereri/10 secunde | 150 cereri/10 secunde |
| Professional | 150 cereri/10 secunde | 200 cereri/10 secunde |
| Enterprise | 200 cereri/10 secunde | 250 cereri/10 secunde |
| Add-on API | 200 cereri/10 secunde | 250 cereri/10 secunde |
Limite suplimentare:
- API Căutare: 5 cereri/secundă per aplicație
- Operații în lot: 100 înregistrări per cerere în lot
- Limită zilnică: 500.000 cereri/zi (aplicații OAuth)
Gestionarea limitelor de rată
HubSpot returnează un răspuns 429 Too Many Requests când limitele sunt depășite. Utilizați backoff exponențial și monitorizați anteturile X-HubSpot-RateLimit-*.
Depanare
Probleme frecvente
| Problemă | Cauză | Soluție |
|---|---|---|
| 401 Neautorizat | Token expirat sau invalid | Regenerați tokenul aplicației private sau actualizați tokenul OAuth |
| Contact nesincronizat | Proprietate e-mail lipsă | Contactele HubSpot necesită un e-mail pentru sincronizare cu Brevo |
| Contacte duplicate | Fără regulă de deduplicare | Configurați regulile de combinare în HubSpot |
| Webhook neprimit | Abonament inactiv | Reînregistrați abonamentele webhook |
| Proprietate nemapată | Proprietate personalizată necreată | Creați mai întâi proprietatea în HubSpot |
Modul de depanare
Activați jurnalizarea verbosă:
connectors: hubspot: debug: true log_level: verbose log_webhooks: trueTestare conexiune
tajo connectors test hubspot# ✓ API connection successful# ✓ Contacts readable# ✓ Companies readable# ✓ Deals readable# ✓ Webhooks registeredBune practici
- Utilizați aplicații private în loc de chei API - Cheile API sunt deprecate; utilizați aplicații private pentru securitate sporită
- Implementați sincronizarea bidirecțională cu atenție - Evitați buclele infinite prin urmărirea sursei de sincronizare
- Mapați etapele ciclului de viață - Utilizați etapele ciclului de viață HubSpot pentru a segmenta contactele în Brevo
- Grupați cererile API - Utilizați punctele finale batch pentru operații în bloc pentru a rămâne în limitele de rată
- Monitorizați livrarea webhook - Configurați logica de reîncercare și gestionarea mesajelor nelivrate
- Utilizați sincronizarea incrementală - Sincronizați doar înregistrările modificate folosind proprietatea
lastmodifieddate
Securitate
- Tokeni pentru aplicații private - Tokeni de acces cu scopuri cu permisiuni granulare
- OAuth 2.0 - Autorizare standard industrie cu rotație token de reîmprospătare
- Semnături webhook - Verificare semnătură bazată pe HMAC (v3)
- Criptare TLS - Toată comunicarea API criptată în tranzit
- Permisiuni cu scop limitat - Acces minim necesar per integrare