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

EgenskabVærdi
PlatformHubSpot
KategoriCRM
OpsætningskompleksitetMedium
Officiel integrationJa
Synkroniserede dataKontakter, virksomheder, aftaler, tickets, hændelser
API-base-URLhttps://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:

  1. En HubSpot-konto (Free, Starter, Professional eller Enterprise)
  2. En HubSpot privat app eller OAuth-app med de nødvendige scopes
  3. En Brevo-konto med API-adgang
  4. En Tajo-konto

Autentifikation

Privat app-adgangstoken (anbefalet)

Opret en privat app i HubSpot for direkte API-adgang med granulær scope-kontrol.

  1. Gå til HubSpot Settings > Integrations > Private Apps
  2. Opret en ny privat app
  3. Konfigurér de nødvendige scopes
  4. Kopiér adgangstokenet
Terminal window
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.

Terminal window
# Authorization URL
https://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.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

Konfiguration

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: 12

Feltmapping

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

API-endpoints

CRM-objekter

MetodeEndpointBeskrivelse
GET/crm/v3/objects/contactsVis kontakter
POST/crm/v3/objects/contactsOpret en kontakt
PATCH/crm/v3/objects/contacts/{id}Opdatér en kontakt
GET/crm/v3/objects/companiesVis virksomheder
GET/crm/v3/objects/dealsVis aftaler
POST/crm/v3/objects/dealsOpret en aftale
GET/crm/v3/objects/ticketsVis tickets

Associationer

MetodeEndpointBeskrivelse
GET/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}Hent associationer
PUT/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}Opret association

Engagementer

MetodeEndpointBeskrivelse
GET/crm/v3/objects/callsVis opkaldsengagementer
GET/crm/v3/objects/emailsVis e-mailengagementer
GET/crm/v3/objects/meetingsVis møder
GET/crm/v3/objects/notesVis noter
GET/crm/v3/objects/tasksVis opgaver

Hændelser

Kontakthændelser

HændelseTriggerAnvendelse
contact.creationNy kontakt oprettetTrigger for velkomstflow
contact.propertyChangeKontaktegenskab opdateretAttributsynkronisering
contact.mergeKontakter flettetHåndtering af deduplikering
contact.deletionKontakt slettetOprydning i Brevo

Aftalehændelser

HændelseTriggerAnvendelse
deal.creationNy aftale oprettetSalgsnotifikation
deal.propertyChangeAftalestadie ændretPipeline-automatisering
deal.deletionAftale fjernetOmsætningsrapportering

Virksomhedshændelser

HændelseTriggerAnvendelse
company.creationNy virksomhed tilføjetKontobaseret marketing
company.propertyChangeVirksomhedsdata opdateretFirmografisk 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 HubSpot
await tajo.connectors.connect('hubspot', {
accessToken: process.env.HUBSPOT_ACCESS_TOKEN
});

Kør kontaktsynkronisering

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

Håndtér webhook-hændelser

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

Rate limits

HubSpot anvender rate limits per privat app eller OAuth-app:

PlanRate limitBurst-limit
Free/Starter100 anmodninger/10 sekunder150 anmodninger/10 sekunder
Professional150 anmodninger/10 sekunder200 anmodninger/10 sekunder
Enterprise200 anmodninger/10 sekunder250 anmodninger/10 sekunder
API-tilføjelse200 anmodninger/10 sekunder250 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ÅrsagLøsning
401 UnauthorizedUdløbet eller ugyldigt tokenRegenerér token til privat app, eller opdatér OAuth-token
Kontakt ikke synkroniseretManglende e-mailegenskabHubSpot-kontakter kræver en e-mail for Brevo-synkronisering
Duplikerede kontakterIngen deduplikeringsregelKonfigurér fletteregler i HubSpot
Webhook ikke modtagetAbonnement ikke aktivtGenregistrér webhook-abonnementer
Egenskab ikke mappetBrugerdefineret egenskab ikke oprettetOpret først egenskaben i HubSpot

Debug-tilstand

Aktivér detaljeret logging:

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

Testforbindelse

Terminal window
tajo connectors test hubspot
# ✓ API connection successful
# ✓ Contacts readable
# ✓ Companies readable
# ✓ Deals readable
# ✓ Webhooks registered

Bedste praksis

  1. Brug private apps frem for API-nøgler - API-nøgler er udfaset; brug private apps for bedre sikkerhed
  2. Implementér tovejssynkronisering omhyggeligt - Undgå uendelige loops ved at spore synkroniseringskilden
  3. Kortlæg livscyklusstadier - Brug HubSpot-livscyklusstadier til at segmentere kontakter i Brevo
  4. Batch API-anmodninger - Brug batch-endpoints til masseoperationer for at holde dig inden for rate limits
  5. Overvåg webhook-levering - Konfigurér retry-logik og dead letter-håndtering
  6. 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

Relaterede ressourcer

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

AI-assistent

Hej! Spørg mig om dokumentationen.

Start gratis med Brevo