HubSpot-connector
Connectorstatus: In ontwikkeling In aanbouw. Nog niet geverifieerd.
Illustratie · voorbeelddata
Voorbeeld van synchronisatie
Bron
HubSpot
Connectorstatus: In ontwikkeling
Bestemming
Je andere tool
Connectorstatus: Eigen tool
Veldtoewijzing
| Bronveld | Doelveld | Voorbeeldwaarde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Opstellen
- Eén record controleren
- Deze versie goedkeuren
Statussen gelden per connector en garanderen niet dat deze synchronisatie klaar is. De velden zijn illustratief. Controleer het echte schema en de rechten voordat een synchronisatie draait.
Verbind je HubSpot CRM met Brevo via Tajo voor bidirectionele contactsynchronisatie, dealtracking, engagementdata en uniforme marketingautomatisering op beide platforms.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | HubSpot |
| Categorie | CRM |
| Setupcomplexiteit | Gemiddeld |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Contacten, Bedrijven, Deals, Tickets, Events |
| API Base URL | https://api.hubapi.com |
Functies
- Bidirectionele contactsynchronisatie - Houd contacten in realtime gesynchroniseerd tussen HubSpot en Brevo
- Dealpipeline-tracking - Synchroniseer dealfases en -waardes voor omzetgebaseerde segmentatie
- Bedrijfsdatasynchronisatie - Koppel contacten aan bedrijfsrecords en firmografische data
- Ticketintegratie - Volg supporttickets voor klantgezondheidsscores
- Engagementtracking - Synchroniseer e-mailopens, klikken, meetings, calls en notities
- Ondersteuning voor custom objects - Map HubSpot custom objects naar Brevo-attributen
- Workflow-triggers - Gebruik wijzigingen in HubSpot-lifecyclefases om Brevo-automatiseringen te triggeren
- Webhook-events - Realtime notificaties bij wijzigingen in CRM-data
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een HubSpot-account (Free, Starter, Professional of Enterprise)
- Een HubSpot private app of OAuth app met de vereiste scopes
- Een Brevo-account met API-toegang
- Een Tajo-account
Authenticatie
Private App Access Token (aanbevolen)
Maak een private app in HubSpot voor directe API-toegang met granulaire scopecontrole.
- Ga naar HubSpot Settings > Integrations > Private Apps
- Maak een nieuwe private app
- Configureer de vereiste scopes
- Kopieer het 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
Gebruik OAuth 2.0 voor multi-account-integraties die gebruikersautorisatie vereisen.
# Authorization URLhttps://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}Vereiste scopes
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.deals.readcrm.objects.deals.writecrm.objects.custom.readcrm.schemas.custom.readConfiguratie
Basisinstelling
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: 12Veldmapping
Map HubSpot-eigenschappen naar Brevo-contactattributen:
Standaardmappings
| Parameter | Type | Description |
|---|---|---|
email required | string | E-mail van contact (primaire identifier) |
firstname optional | string | Mapt naar FIRSTNAME-attribuut in Brevo |
lastname optional | string | Mapt naar LASTNAME-attribuut in Brevo |
phone optional | string | Mapt naar SMS-attribuut voor WhatsApp/SMS |
company optional | string | Gekoppelde bedrijfsnaam |
lifecyclestage optional | string | HubSpot-lifecyclefase (subscriber, lead, MQL, SQL, customer) |
hs_lead_status optional | string | Status leadkwalificatie |
hubspot_owner_id optional | string | ID van toegewezen sales owner |
Custom property-mapping
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 Objects
| Method | Endpoint | Beschrijving |
|---|---|---|
GET | /crm/v3/objects/contacts | Lijst contacten |
POST | /crm/v3/objects/contacts | Maak een contact aan |
PATCH | /crm/v3/objects/contacts/{id} | Werk een contact bij |
GET | /crm/v3/objects/companies | Lijst bedrijven |
GET | /crm/v3/objects/deals | Lijst deals |
POST | /crm/v3/objects/deals | Maak een deal aan |
GET | /crm/v3/objects/tickets | Lijst tickets |
Associaties
| Method | Endpoint | Beschrijving |
|---|---|---|
GET | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType} | Haal associaties op |
PUT | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} | Maak associatie |
Engagements
| Method | Endpoint | Beschrijving |
|---|---|---|
GET | /crm/v3/objects/calls | Lijst call-engagements |
GET | /crm/v3/objects/emails | Lijst e-mail-engagements |
GET | /crm/v3/objects/meetings | Lijst meetings |
GET | /crm/v3/objects/notes | Lijst notities |
GET | /crm/v3/objects/tasks | Lijst taken |
Events
Contact-events
| Event | Trigger | Use case |
|---|---|---|
contact.creation | Nieuw contact aangemaakt | Trigger voor welkomstflow |
contact.propertyChange | Contacteigenschap bijgewerkt | Attribuutsynchronisatie |
contact.merge | Contacten samengevoegd | Afhandelen van deduplicatie |
contact.deletion | Contact verwijderd | Opschonen in Brevo |
Deal-events
| Event | Trigger | Use case |
|---|---|---|
deal.creation | Nieuwe deal aangemaakt | Salesnotificatie |
deal.propertyChange | Dealfase gewijzigd | Pipeline-automatisering |
deal.deletion | Deal verwijderd | Omzetrapportage |
Bedrijfsevents
| Event | Trigger | Use case |
|---|---|---|
company.creation | Nieuw bedrijf toegevoegd | Account-based marketing |
company.propertyChange | Bedrijfsdata bijgewerkt | Firmografische synchronisatie |
Codevoorbeelden
Connector initialiseren
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});Contactsynchronisatie uitvoeren
// 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// }Webhook-events afhandelen
// 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 hanteert rate limits per private app of OAuth app:
| Plan | Rate limit | Burst limit |
|---|---|---|
| Free/Starter | 100 requests/10 seconden | 150 requests/10 seconden |
| Professional | 150 requests/10 seconden | 200 requests/10 seconden |
| Enterprise | 200 requests/10 seconden | 250 requests/10 seconden |
| API add-on | 200 requests/10 seconden | 250 requests/10 seconden |
Aanvullende limieten:
- Search API: 5 requests/seconde per app
- Batch-operaties: 100 records per batch-request
- Daglimiet: 500.000 requests/dag (OAuth apps)
Afhandeling van rate limits
HubSpot retourneert een 429 Too Many Requests-response wanneer de limieten worden overschreden. Gebruik exponentiële backoff en monitor de X-HubSpot-RateLimit-*-headers.
Probleemoplossing
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 401 Unauthorized | Verlopen of ongeldig token | Regenereer het private app-token of ververs het OAuth-token |
| Contact niet gesynchroniseerd | Ontbrekende e-maileigenschap | HubSpot-contacten vereisen een e-mail voor Brevo-synchronisatie |
| Dubbele contacten | Geen deduplicatieregel | Configureer merge-regels in HubSpot |
| Webhook niet ontvangen | Abonnement niet actief | Registreer webhook-subscriptions opnieuw |
| Eigenschap niet gemapt | Custom property niet aangemaakt | Maak de eigenschap eerst aan in HubSpot |
Debugmodus
Zet uitgebreide logging aan:
connectors: hubspot: debug: true log_level: verbose log_webhooks: trueVerbinding testen
tajo connectors test hubspot# ✓ API connection successful# ✓ Contacts readable# ✓ Companies readable# ✓ Deals readable# ✓ Webhooks registeredBest practices
- Gebruik private apps in plaats van API keys - API keys zijn deprecated; gebruik private apps voor betere beveiliging
- Implementeer bidirectionele synchronisatie zorgvuldig - Voorkom oneindige loops door de sync source bij te houden
- Map lifecyclefases - Gebruik HubSpot-lifecyclefases om contacten in Brevo te segmenteren
- Batch API-requests - Gebruik batch-endpoints voor bulkoperaties om binnen rate limits te blijven
- Monitor webhook-delivery - Zet retry-logica en dead letter-afhandeling op
- Gebruik incrementele synchronisatie - Synchroniseer alleen gewijzigde records via de
lastmodifieddate-eigenschap
Beveiliging
- Private App Tokens - Scoped access tokens met granulaire rechten
- OAuth 2.0 - Industriestandaard-autorisatie met refresh token-rotatie
- Webhook-signatures - HMAC-gebaseerde signatureverificatie (v3)
- TLS-encryptie - Alle API-communicatie is versleuteld tijdens transport
- Scoped permissions - Toegang volgens minimum-benodigde scope per integratie