Ajukan akses awal

Masukkan nama depan serta email atau nomor telepon Anda. Kami akan menghubungi Anda dengan detail akses Tajo.

Konektor HubSpot

Hubungkan HubSpot CRM Anda ke Brevo melalui Tajo untuk sinkronisasi kontak dua arah, pelacakan deal, data engagement, dan otomatisasi marketing terpadu di kedua platform.

Ikhtisar

PropertiNilai
PlatformHubSpot
KategoriCRM
Kompleksitas setupSedang
Integrasi resmiYa
Data yang disinkronkanKontak, Perusahaan, Deal, Tiket, Event
API Base URLhttps://api.hubapi.com

Fitur

  • Sinkronisasi kontak dua arah - Jaga kontak tetap sinkron antara HubSpot dan Brevo secara real-time
  • Pelacakan pipeline deal - Sinkronkan tahap dan nilai deal untuk segmentasi berbasis pendapatan
  • Sinkronisasi data perusahaan - Kaitkan kontak dengan record perusahaan dan data firmografis
  • Integrasi tiket - Lacak tiket support untuk penilaian kesehatan pelanggan
  • Pelacakan engagement - Sinkronkan email dibuka, klik, meeting, panggilan, dan catatan
  • Dukungan custom object - Petakan custom object HubSpot ke atribut Brevo
  • Pemicu workflow - Gunakan perubahan lifecycle stage HubSpot untuk memicu otomatisasi Brevo
  • Event webhook - Notifikasi real-time untuk setiap perubahan data CRM

Prasyarat

Sebelum memulai, pastikan Anda memiliki:

  1. Akun HubSpot (Free, Starter, Professional, atau Enterprise)
  2. Private app atau OAuth app HubSpot dengan scope yang diperlukan
  3. Akun Brevo dengan akses API
  4. Akun Tajo

Autentikasi

Access token private app (direkomendasikan)

Buat private app di HubSpot untuk akses API langsung dengan kontrol scope yang granular.

  1. Buka HubSpot Settings > Integrations > Private Apps
  2. Buat private app baru
  3. Konfigurasikan scope yang diperlukan
  4. Salin access token
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

Gunakan OAuth 2.0 untuk integrasi multi-akun yang membutuhkan otorisasi pengguna.

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

Scope yang diperlukan

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

Konfigurasi

Setup dasar

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

Pemetaan field

Petakan properti HubSpot ke atribut kontak Brevo:

Pemetaan Bawaan

Parameter Type Description
email required
string

Email kontak (pengenal utama)

firstname optional
string

Dipetakan ke atribut FIRSTNAME di Brevo

lastname optional
string

Dipetakan ke atribut LASTNAME di Brevo

phone optional
string

Dipetakan ke atribut SMS untuk WhatsApp/SMS

company optional
string

Nama perusahaan yang terkait

lifecyclestage optional
string

Lifecycle stage HubSpot (subscriber, lead, MQL, SQL, customer)

hs_lead_status optional
string

Status kualifikasi lead

hubspot_owner_id optional
string

ID sales owner yang ditugaskan

Pemetaan properti kustom

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

Endpoint API

Objek CRM

MethodEndpointDeskripsi
GET/crm/v3/objects/contactsMenampilkan daftar kontak
POST/crm/v3/objects/contactsMembuat kontak
PATCH/crm/v3/objects/contacts/{id}Memperbarui kontak
GET/crm/v3/objects/companiesMenampilkan daftar perusahaan
GET/crm/v3/objects/dealsMenampilkan daftar deal
POST/crm/v3/objects/dealsMembuat deal
GET/crm/v3/objects/ticketsMenampilkan daftar tiket

Asosiasi

MethodEndpointDeskripsi
GET/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}Mengambil asosiasi
PUT/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}Membuat asosiasi

Engagement

MethodEndpointDeskripsi
GET/crm/v3/objects/callsMenampilkan daftar engagement panggilan
GET/crm/v3/objects/emailsMenampilkan daftar engagement email
GET/crm/v3/objects/meetingsMenampilkan daftar meeting
GET/crm/v3/objects/notesMenampilkan daftar catatan
GET/crm/v3/objects/tasksMenampilkan daftar tugas

Event

Event kontak

EventPemicuKasus penggunaan
contact.creationKontak baru dibuatPemicu alur welcome
contact.propertyChangeProperti kontak diperbaruiSinkronisasi atribut
contact.mergeKontak digabungkanPenanganan deduplikasi
contact.deletionKontak dihapusPembersihan di Brevo

Event deal

EventPemicuKasus penggunaan
deal.creationDeal baru dibuatNotifikasi sales
deal.propertyChangeTahap deal berubahOtomatisasi pipeline
deal.deletionDeal dihapusPelaporan pendapatan

Event perusahaan

EventPemicuKasus penggunaan
company.creationPerusahaan baru ditambahkanAccount-based marketing
company.propertyChangeData perusahaan diperbaruiSinkronisasi firmografis

Contoh kode

Inisialisasi konektor

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

Menjalankan sinkronisasi kontak

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

Menangani event webhook

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

HubSpot menerapkan rate limit per private app atau OAuth app:

PaketRate limitBurst limit
Free/Starter100 request/10 detik150 request/10 detik
Professional150 request/10 detik200 request/10 detik
Enterprise200 request/10 detik250 request/10 detik
Add-on API200 request/10 detik250 request/10 detik

Batasan tambahan:

  • Search API: 5 request/detik per app
  • Operasi batch: 100 record per request batch
  • Batas harian: 500.000 request/hari (OAuth app)

Penanganan rate limit

HubSpot mengembalikan respons 429 Too Many Requests saat batas terlampaui. Gunakan exponential backoff dan pantau header X-HubSpot-RateLimit-*.

Pemecahan masalah

Masalah umum

MasalahPenyebabSolusi
401 UnauthorizedToken kedaluwarsa atau tidak validBuat ulang token private app atau segarkan token OAuth
Kontak tidak tersinkronisasiProperti email tidak adaKontak HubSpot memerlukan email untuk sinkronisasi ke Brevo
Kontak duplikatTidak ada aturan deduplikasiKonfigurasikan aturan merge di HubSpot
Webhook tidak diterimaLangganan tidak aktifDaftarkan ulang langganan webhook
Properti tidak terpetakanProperti kustom belum dibuatBuat properti tersebut di HubSpot terlebih dahulu

Mode debug

Aktifkan logging terperinci:

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

Uji koneksi

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

Praktik terbaik

  1. Gunakan private app, bukan API key - API key sudah tidak digunakan lagi; gunakan private app untuk keamanan yang lebih baik
  2. Terapkan sinkronisasi dua arah dengan hati-hati - Hindari loop tak terbatas dengan melacak sumber sinkronisasi
  3. Petakan lifecycle stage - Gunakan lifecycle stage HubSpot untuk melakukan segmentasi kontak di Brevo
  4. Kelompokkan request API - Gunakan endpoint batch untuk operasi massal agar tetap berada dalam rate limit
  5. Pantau pengiriman webhook - Siapkan logika retry dan penanganan dead letter
  6. Gunakan sinkronisasi inkremental - Sinkronkan hanya record yang berubah menggunakan properti lastmodifieddate

Keamanan

  • Token private app - Access token dengan scope dan izin yang granular
  • OAuth 2.0 - Otorisasi standar industri dengan rotasi refresh token
  • Tanda tangan webhook - Verifikasi tanda tangan berbasis HMAC (v3)
  • Enkripsi TLS - Seluruh komunikasi API terenkripsi saat transit
  • Izin ber-scope - Akses dengan scope minimum yang diperlukan per integrasi

Sumber terkait

Ajukan akses awal

Masukkan nama depan serta email atau nomor telepon Anda. Kami akan menghubungi Anda dengan detail akses Tajo.

deteksi otomatis
Asisten AI

Halo! Tanyakan apa saja tentang dokumentasi.