HubSpot Connector
HubSpot Connector
Forbind dit HubSpot CRM med Brevo via Tajo for tovejs-kontaktsynkronisering, aftalesporing, engagementsdata og samlet marketingautomatisering på tværs af begge platforme.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | HubSpot |
| Kategori | CRM |
| Opsætningskompleksitet | Medium |
| Officiel integration | Ja |
| Synkroniserede data | Kontakter, virksomheder, aftaler, tickets, hændelser |
| API-base-URL | https://api.hubapi.com |
Funktioner
- Tovejs-kontaktsynkronisering - Hold kontakter synkroniserede mellem HubSpot og Brevo i realtid
- Sporing af aftalepipeline - Synkronisér aftalestadier og -værdier til omsætningsbaseret segmentering
- Synkronisering af virksomhedsdata - Knyt kontakter til virksomhedsposter og firmografiske data
- Ticket-integration - Spor supporttickets til kundesundhedsscoring
- Engagementssporing - Synkronisér e-mailåbninger, klik, møder, opkald og noter
- Understøttelse af brugerdefinerede objekter - Kortlæg HubSpot-brugerdefinerede objekter til Brevo-attributter
- Workflow-triggere - Brug ændringer i HubSpot-livscyklusstadier til at udløse Brevo-automatiseringer
- Webhook-hændelser - Notifikationer i realtid ved CRM-dataændringer
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- En HubSpot-konto (Free, Starter, Professional eller Enterprise)
- En HubSpot privat app eller OAuth-app med de nødvendige scopes
- En Brevo-konto med API-adgang
- En Tajo-konto
Autentifikation
Privat app-adgangstoken (anbefalet)
Opret en privat app i HubSpot for direkte API-adgang med granulær scope-kontrol.
- Gå til HubSpot Settings > Integrations > Private Apps
- Opret en ny privat app
- Konfigurér de nødvendige scopes
- Kopiér adgangstokenet
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
Brug OAuth 2.0 til integrationer med flere konti, der kræver brugerautorisation.
# Authorization URLhttps://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}Påkrævede scopes
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.deals.readcrm.objects.deals.writecrm.objects.custom.readcrm.schemas.custom.readKonfiguration
Grundlæggende opsætning
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: 12Feltmapping
Kortlæg HubSpot-egenskaber til Brevo-kontaktattributter:
Standardmappinger
| Parameter | Type | Description |
|---|---|---|
email required | string | Kontakt-e-mail (primær identifikator) |
firstname optional | string | Kortlægges til FIRSTNAME-attribut i Brevo |
lastname optional | string | Kortlægges til LASTNAME-attribut i Brevo |
phone optional | string | Kortlægges til SMS-attribut for WhatsApp/SMS |
company optional | string | Tilknyttet virksomhedsnavn |
lifecyclestage optional | string | HubSpot-livscyklusstadie (subscriber, lead, MQL, SQL, customer) |
hs_lead_status optional | string | Lead-kvalificeringsstatus |
hubspot_owner_id optional | string | ID på tildelt salgsejer |
Mapping af brugerdefinerede egenskaber
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-endpoints
CRM-objekter
| Metode | Endpoint | Beskrivelse |
|---|---|---|
GET | /crm/v3/objects/contacts | Vis kontakter |
POST | /crm/v3/objects/contacts | Opret en kontakt |
PATCH | /crm/v3/objects/contacts/{id} | Opdatér en kontakt |
GET | /crm/v3/objects/companies | Vis virksomheder |
GET | /crm/v3/objects/deals | Vis aftaler |
POST | /crm/v3/objects/deals | Opret en aftale |
GET | /crm/v3/objects/tickets | Vis tickets |
Associationer
| Metode | Endpoint | Beskrivelse |
|---|---|---|
GET | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType} | Hent associationer |
PUT | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} | Opret association |
Engagementer
| Metode | Endpoint | Beskrivelse |
|---|---|---|
GET | /crm/v3/objects/calls | Vis opkaldsengagementer |
GET | /crm/v3/objects/emails | Vis e-mailengagementer |
GET | /crm/v3/objects/meetings | Vis møder |
GET | /crm/v3/objects/notes | Vis noter |
GET | /crm/v3/objects/tasks | Vis opgaver |
Hændelser
Kontakthændelser
| Hændelse | Trigger | Anvendelse |
|---|---|---|
contact.creation | Ny kontakt oprettet | Trigger for velkomstflow |
contact.propertyChange | Kontaktegenskab opdateret | Attributsynkronisering |
contact.merge | Kontakter flettet | Håndtering af deduplikering |
contact.deletion | Kontakt slettet | Oprydning i Brevo |
Aftalehændelser
| Hændelse | Trigger | Anvendelse |
|---|---|---|
deal.creation | Ny aftale oprettet | Salgsnotifikation |
deal.propertyChange | Aftalestadie ændret | Pipeline-automatisering |
deal.deletion | Aftale fjernet | Omsætningsrapportering |
Virksomhedshændelser
| Hændelse | Trigger | Anvendelse |
|---|---|---|
company.creation | Ny virksomhed tilføjet | Kontobaseret marketing |
company.propertyChange | Virksomhedsdata opdateret | Firmografisk synkronisering |
Kodeeksempler
Initialisér connector
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});Kør kontaktsynkronisering
// 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// }Håndtér webhook-hændelser
// 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');});Rate limits
HubSpot anvender rate limits per privat app eller OAuth-app:
| Plan | Rate limit | Burst-limit |
|---|---|---|
| Free/Starter | 100 anmodninger/10 sekunder | 150 anmodninger/10 sekunder |
| Professional | 150 anmodninger/10 sekunder | 200 anmodninger/10 sekunder |
| Enterprise | 200 anmodninger/10 sekunder | 250 anmodninger/10 sekunder |
| API-tilføjelse | 200 anmodninger/10 sekunder | 250 anmodninger/10 sekunder |
Yderligere grænser:
- Search API: 5 anmodninger/sekund pr. app
- Batchoperationer: 100 poster pr. batch-anmodning
- Daglig grænse: 500.000 anmodninger/dag (OAuth-apps)
Håndtering af rate limits
HubSpot returnerer et 429 Too Many Requests-svar, når grænserne overskrides. Brug eksponentiel backoff og overvåg headerne X-HubSpot-RateLimit-*.
Fejlfinding
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Udløbet eller ugyldigt token | Regenerér token til privat app, eller opdatér OAuth-token |
| Kontakt ikke synkroniseret | Manglende e-mailegenskab | HubSpot-kontakter kræver en e-mail for Brevo-synkronisering |
| Duplikerede kontakter | Ingen deduplikeringsregel | Konfigurér fletteregler i HubSpot |
| Webhook ikke modtaget | Abonnement ikke aktivt | Genregistrér webhook-abonnementer |
| Egenskab ikke mappet | Brugerdefineret egenskab ikke oprettet | Opret først egenskaben i HubSpot |
Debug-tilstand
Aktivér detaljeret logging:
connectors: hubspot: debug: true log_level: verbose log_webhooks: trueTestforbindelse
tajo connectors test hubspot# ✓ API connection successful# ✓ Contacts readable# ✓ Companies readable# ✓ Deals readable# ✓ Webhooks registeredBedste praksis
- Brug private apps frem for API-nøgler - API-nøgler er udfaset; brug private apps for bedre sikkerhed
- Implementér tovejssynkronisering omhyggeligt - Undgå uendelige loops ved at spore synkroniseringskilden
- Kortlæg livscyklusstadier - Brug HubSpot-livscyklusstadier til at segmentere kontakter i Brevo
- Batch API-anmodninger - Brug batch-endpoints til masseoperationer for at holde dig inden for rate limits
- Overvåg webhook-levering - Konfigurér retry-logik og dead letter-håndtering
- Brug inkrementel synkronisering - Synkronisér kun ændrede poster ved hjælp af egenskaben
lastmodifieddate
Sikkerhed
- Private app-tokens - Scoped adgangstokens med granulære tilladelser
- OAuth 2.0 - Industristandardautorisation med rotation af refresh-tokens
- Webhook-signaturer - HMAC-baseret signaturverifikation (v3)
- TLS-kryptering - Al API-kommunikation krypteres under overførsel
- Scoped tilladelser - Minimum nødvendig scope-adgang pr. integration