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
| Egenskap | Värde |
|---|---|
| Plattform | HubSpot |
| Kategori | CRM |
| Installationskomplexitet | Medel |
| Officiell integration | Ja |
| Data som synkas | Kontakter, företag, affärer, ärenden, händelser |
| API bas-URL | https://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:
- Ett HubSpot-konto (Free, Starter, Professional eller Enterprise)
- En HubSpot privat app eller OAuth-app med nödvändiga scopes
- Ett Brevo-konto med API-åtkomst
- 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.
- Gå till HubSpot Settings > Integrations > Private Apps
- Skapa en ny privat app
- Konfigurera nödvändiga scopes
- Kopiera åtkomsttoken
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.
# Authorization URLhttps://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.readcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.deals.readcrm.objects.deals.writecrm.objects.custom.readcrm.schemas.custom.readKonfiguration
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: 12Fä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: SEGMENTAPI-endpoints
CRM-objekt
| Metod | Endpoint | Beskrivning |
|---|---|---|
GET | /crm/v3/objects/contacts | Lista kontakter |
POST | /crm/v3/objects/contacts | Skapa en kontakt |
PATCH | /crm/v3/objects/contacts/{id} | Uppdatera en kontakt |
GET | /crm/v3/objects/companies | Lista företag |
GET | /crm/v3/objects/deals | Lista affärer |
POST | /crm/v3/objects/deals | Skapa en affär |
GET | /crm/v3/objects/tickets | Lista ärenden |
Associationer
| Metod | Endpoint | Beskrivning |
|---|---|---|
GET | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType} | Hämta associationer |
PUT | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} | Skapa association |
Engagemang
| Metod | Endpoint | Beskrivning |
|---|---|---|
GET | /crm/v3/objects/calls | Lista samtalsengagemang |
GET | /crm/v3/objects/emails | Lista e-postengagemang |
GET | /crm/v3/objects/meetings | Lista möten |
GET | /crm/v3/objects/notes | Lista anteckningar |
GET | /crm/v3/objects/tasks | Lista uppgifter |
Händelser
Kontakthändelser
| Händelse | Utlösare | Användningsfall |
|---|---|---|
contact.creation | Ny kontakt skapad | Utlösare för välkomstflöde |
contact.propertyChange | Kontaktegenskap uppdaterad | Attributsynkronisering |
contact.merge | Kontakter sammanslagna | Hantering av dubbletter |
contact.deletion | Kontakt raderad | Rensning i Brevo |
Affärshändelser
| Händelse | Utlösare | Användningsfall |
|---|---|---|
deal.creation | Ny affär skapad | Säljnotifiering |
deal.propertyChange | Affärsstadium ändrat | Pipelineautomation |
deal.deletion | Affär borttagen | Intäktsrapportering |
Företagshändelser
| Händelse | Utlösare | Användningsfall |
|---|---|---|
company.creation | Nytt företag tillagt | Kontobaserad marknadsföring |
company.propertyChange | Företagsdata uppdaterad | Firmografisk 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 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// }Hantera 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');});Hastighetsbegränsningar
HubSpot tillämpar hastighetsbegränsningar per privat app eller OAuth-app:
| Plan | Hastighetsbegränsning | Burst-gräns |
|---|---|---|
| Free/Starter | 100 förfrågningar/10 sekunder | 150 förfrågningar/10 sekunder |
| Professional | 150 förfrågningar/10 sekunder | 200 förfrågningar/10 sekunder |
| Enterprise | 200 förfrågningar/10 sekunder | 250 förfrågningar/10 sekunder |
| API-tillägg | 200 förfrågningar/10 sekunder | 250 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
| Problem | Orsak | Lösning |
|---|---|---|
| 401 Unauthorized | Utgången eller ogiltig token | Återgenerera privata appens token eller uppdatera OAuth-token |
| Kontakt inte synkad | Saknar e-postegenskap | HubSpot-kontakter kräver e-post för synkronisering till Brevo |
| Dubblettkontakter | Ingen regel för dedup | Konfigurera sammanslagningsregler i HubSpot |
| Webhook inte mottagen | Prenumeration inte aktiv | Registrera om webhook-prenumerationer |
| Egenskap inte mappad | Anpassad egenskap ej skapad | Skapa egenskapen i HubSpot först |
Felsökningsläge
Aktivera utförlig loggning:
connectors: hubspot: debug: true log_level: verbose log_webhooks: trueTesta anslutning
tajo connectors test hubspot# ✓ API connection successful# ✓ Contacts readable# ✓ Companies readable# ✓ Deals readable# ✓ Webhooks registeredBästa praxis
- Använd privata appar framför API-nycklar - API-nycklar är utfasade; använd privata appar för bättre säkerhet
- Implementera dubbelriktad synk försiktigt - Undvik oändliga loopar genom att spåra synkens källa
- Mappa livscykelstadier - Använd HubSpots livscykelstadier för att segmentera kontakter i Brevo
- Batcha API-förfrågningar - Använd batch-endpoints för mass-operationer för att hålla dig inom hastighetsbegränsningar
- Övervaka webhook-leverans - Sätt upp återförsökslogik och hantering av dead letters
- 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