HubSpot-koppling

HubSpot-koppling

Anslut ditt HubSpot CRM till Brevo via Tajo för dubbelriktad kontaktsynkronisering, uppföljning av affärer, engagemangsdata och enhetlig marknadsautomation mellan båda plattformarna.

Översikt

EgenskapVärde
PlattformHubSpot
KategoriCRM
InstallationskomplexitetMedel
Officiell integrationJa
Data som synkasKontakter, företag, affärer, ärenden, händelser
API bas-URLhttps://api.hubapi.com

Funktioner

  • Dubbelriktad kontaktsynkronisering - Håll kontakter synkroniserade mellan HubSpot och Brevo i realtid
  • Uppföljning av affärspipeline - Synka stadier och värden på affärer för intäktsbaserad segmentering
  • Synkronisering av företagsdata - Koppla kontakter till företagsposter och firmografisk data
  • Integration av ärenden - Följ supportärenden för kundhälsopoäng
  • Engagemangsspårning - Synka e-postöppningar, klick, möten, samtal och anteckningar
  • Stöd för anpassade objekt - Mappa HubSpots anpassade objekt till Brevo-attribut
  • Arbetsflödesutlösare - Använd ändringar i HubSpots livscykelstadium för att utlösa Brevo-automationer
  • Webhook-händelser - Notifieringar i realtid för CRM-dataändringar

Förutsättningar

Innan du börjar, se till att du har:

  1. Ett HubSpot-konto (Free, Starter, Professional eller Enterprise)
  2. En HubSpot privat app eller OAuth-app med nödvändiga scopes
  3. Ett Brevo-konto med API-åtkomst
  4. Ett Tajo-konto

Autentisering

Åtkomsttoken för privat app (rekommenderas)

Skapa en privat app i HubSpot för direkt API-åtkomst med granulär scope-kontroll.

  1. Gå till HubSpot Settings > Integrations > Private Apps
  2. Skapa en ny privat app
  3. Konfigurera nödvändiga scopes
  4. Kopiera åtkomsttoken
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

Använd OAuth 2.0 för integrationer med flera konton som kräver användarens godkännande.

Terminal window
# Authorization URL
https://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}

Nödvändiga 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

Grundinställning

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

Fältmappning

Mappa HubSpot-egenskaper till Brevo-kontaktattribut:

Standardmappningar

Parameter Type Description
email required
string

Kontaktens e-post (primär identifierare)

firstname optional
string

Mappas till attributet FIRSTNAME i Brevo

lastname optional
string

Mappas till attributet LASTNAME i Brevo

phone optional
string

Mappas till attributet SMS för WhatsApp/SMS

company optional
string

Tillhörande företagsnamn

lifecyclestage optional
string

HubSpots livscykelstadium (subscriber, lead, MQL, SQL, customer)

hs_lead_status optional
string

Status för leadkvalificering

hubspot_owner_id optional
string

ID för tilldelad säljansvarig

Mappning av anpassade egenskaper

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-objekt

MetodEndpointBeskrivning
GET/crm/v3/objects/contactsLista kontakter
POST/crm/v3/objects/contactsSkapa en kontakt
PATCH/crm/v3/objects/contacts/{id}Uppdatera en kontakt
GET/crm/v3/objects/companiesLista företag
GET/crm/v3/objects/dealsLista affärer
POST/crm/v3/objects/dealsSkapa en affär
GET/crm/v3/objects/ticketsLista ärenden

Associationer

MetodEndpointBeskrivning
GET/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}Hämta associationer
PUT/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}Skapa association

Engagemang

MetodEndpointBeskrivning
GET/crm/v3/objects/callsLista samtalsengagemang
GET/crm/v3/objects/emailsLista e-postengagemang
GET/crm/v3/objects/meetingsLista möten
GET/crm/v3/objects/notesLista anteckningar
GET/crm/v3/objects/tasksLista uppgifter

Händelser

Kontakthändelser

HändelseUtlösareAnvändningsfall
contact.creationNy kontakt skapadUtlösare för välkomstflöde
contact.propertyChangeKontaktegenskap uppdateradAttributsynkronisering
contact.mergeKontakter sammanslagnaHantering av dubbletter
contact.deletionKontakt raderadRensning i Brevo

Affärshändelser

HändelseUtlösareAnvändningsfall
deal.creationNy affär skapadSäljnotifiering
deal.propertyChangeAffärsstadium ändratPipelineautomation
deal.deletionAffär borttagenIntäktsrapportering

Företagshändelser

HändelseUtlösareAnvändningsfall
company.creationNytt företag tillagtKontobaserad marknadsföring
company.propertyChangeFöretagsdata uppdateradFirmografisk synkronisering

Kodexempel

Initiera kopplingen

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

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

Hastighetsbegränsningar

HubSpot tillämpar hastighetsbegränsningar per privat app eller OAuth-app:

PlanHastighetsbegränsningBurst-gräns
Free/Starter100 förfrågningar/10 sekunder150 förfrågningar/10 sekunder
Professional150 förfrågningar/10 sekunder200 förfrågningar/10 sekunder
Enterprise200 förfrågningar/10 sekunder250 förfrågningar/10 sekunder
API-tillägg200 förfrågningar/10 sekunder250 förfrågningar/10 sekunder

Ytterligare gränser:

  • Search API: 5 förfrågningar/sekund per app
  • Batch-operationer: 100 poster per batch-förfrågan
  • Daglig gräns: 500 000 förfrågningar/dag (OAuth-appar)

Hantering av hastighetsbegränsning

HubSpot returnerar ett 429 Too Many Requests-svar när gränser överskrids. Använd exponentiell backoff och övervaka X-HubSpot-RateLimit-*-headrarna.

Felsökning

Vanliga problem

ProblemOrsakLösning
401 UnauthorizedUtgången eller ogiltig tokenÅtergenerera privata appens token eller uppdatera OAuth-token
Kontakt inte synkadSaknar e-postegenskapHubSpot-kontakter kräver e-post för synkronisering till Brevo
DubblettkontakterIngen regel för dedupKonfigurera sammanslagningsregler i HubSpot
Webhook inte mottagenPrenumeration inte aktivRegistrera om webhook-prenumerationer
Egenskap inte mappadAnpassad egenskap ej skapadSkapa egenskapen i HubSpot först

Felsökningsläge

Aktivera utförlig loggning:

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

Testa anslutning

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

Bästa praxis

  1. Använd privata appar framför API-nycklar - API-nycklar är utfasade; använd privata appar för bättre säkerhet
  2. Implementera dubbelriktad synk försiktigt - Undvik oändliga loopar genom att spåra synkens källa
  3. Mappa livscykelstadier - Använd HubSpots livscykelstadier för att segmentera kontakter i Brevo
  4. Batcha API-förfrågningar - Använd batch-endpoints för mass-operationer för att hålla dig inom hastighetsbegränsningar
  5. Övervaka webhook-leverans - Sätt upp återförsökslogik och hantering av dead letters
  6. Använd inkrementell synk - Synka endast ändrade poster med egenskapen lastmodifieddate

Säkerhet

  • Tokens för privata appar - Scopade åtkomsttokens med granulära behörigheter
  • OAuth 2.0 - Industristandard för auktorisering med rotation av refresh-tokens
  • Webhook-signaturer - HMAC-baserad signaturverifiering (v3)
  • TLS-kryptering - All API-kommunikation krypterad i transit
  • Scopade behörigheter - Åtkomst till minsta nödvändiga scope per integration

Relaterade resurser

Subscribe to updates

developer-docs

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

AI-assistent

Hej! Fråga mig om dokumentationen.

Börja gratis med Brevo