Konektor Intercom
Hubungkan workspace Intercom Anda ke Brevo melalui Tajo untuk pesan pelanggan yang terpadu, pelacakan percakapan, dan otomatisasi marketing berbasis engagement yang ditenagai data support dan produk Anda.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | Intercom |
| Kategori | Support |
| Kompleksitas setup | Menengah |
| Integrasi resmi | Ya |
| Data yang disinkronkan | Kontak, Percakapan, Perusahaan, Event |
| Base URL API | https://api.intercom.io |
Fitur
- Sinkronisasi kontak - Sinkronisasi dua arah user dan lead Intercom dengan kontak Brevo
- Pelacakan percakapan - Sinkronkan data percakapan untuk segmentasi berbasis support
- Pemetaan perusahaan - Kaitkan kontak dengan perusahaan untuk alur kerja account-based
- Atribut kustom - Petakan atribut kustom Intercom ke field kontak Brevo
- Pelacakan event - Sinkronkan event kustom dan aktivitas user untuk penargetan berbasis perilaku
- Sinkronisasi tag - Petakan tag Intercom ke keanggotaan daftar atau atribut Brevo
- Data Messenger - Lacak engagement pesan in-app dan interaksi chat
- Integrasi AI agent - Sinkronkan hasil percakapan AI agent dengan Brevo
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Sebuah workspace Intercom (paket Starter, Pro, atau Premium)
- Sebuah app Intercom dengan access token (private app) atau OAuth yang sudah dikonfigurasi (public app)
- Akun Brevo dengan akses API
- Akun Tajo
Autentikasi
Access token (private app)
Untuk integrasi privat yang mengakses data workspace Anda sendiri.
- Buka Developer Hub > Your Apps > Create new app
- Kaitkan dengan workspace Intercom Anda
- Salin access token
curl https://api.intercom.io/contacts \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -H "Intercom-Version: 2.11"OAuth 2.0 (public app)
Untuk integrasi yang mengakses data Intercom milik pelanggan lain.
# Authorization URLhttps://app.intercom.com/oauth?client_id={client_id}&state={state}
# Token exchangecurl -X POST https://api.intercom.io/auth/eagle/token \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"Versi API
Selalu sertakan header Intercom-Version pada permintaan Anda. Tajo menggunakan API versi 2.11 secara default. Periksa changelog Intercom untuk perubahan yang bersifat breaking.
Konfigurasi
Setup dasar
connectors: intercom: enabled: true access_token: "${INTERCOM_ACCESS_TOKEN}" api_version: "2.11"
# Data sync options sync: contacts: true conversations: true companies: true events: true tags: true
# Sync direction direction: intercom_to_brevo
# Brevo list assignment lists: all_users: 35 active_conversations: 36 leads: 37Pemetaan field
Petakan data kontak Intercom ke atribut kontak Brevo:
Pemetaan default
| Parameter | Type | Description |
|---|---|---|
email required | string | Alamat email kontak (pengenal unik) |
name optional | string | Nama lengkap, dipecah menjadi FIRSTNAME/LASTNAME |
phone optional | string | Dipetakan ke atribut SMS untuk WhatsApp/SMS |
role optional | string | Tipe kontak: user atau lead |
company.name optional | string | Nama perusahaan yang terkait |
signed_up_at optional | timestamp | Tanggal pendaftaran user |
last_seen_at optional | timestamp | Timestamp aktivitas terakhir |
custom_attributes optional | object | Pasangan key-value atribut kustom |
Pemetaan atribut kustom
field_mapping: # Standard fields email: email name: FULLNAME phone: SMS
# Engagement fields signed_up_at: SIGNUP_DATE last_seen_at: LAST_ACTIVE session_count: SESSION_COUNT unsubscribed_from_emails: UNSUBSCRIBED
# Company fields company.name: COMPANY_NAME company.plan: COMPANY_PLAN company.size: COMPANY_SIZE
# Custom attributes custom_attributes.plan_tier: PLAN_TIER custom_attributes.feature_usage: FEATURE_USAGEEndpoint API
Contacts API
| Metode | Endpoint | Deskripsi |
|---|---|---|
GET | /contacts | Menampilkan semua kontak |
POST | /contacts | Membuat kontak |
PUT | /contacts/{id} | Memperbarui kontak |
GET | /contacts/{id} | Mengambil satu kontak |
POST | /contacts/search | Mencari kontak |
DELETE | /contacts/{id} | Mengarsipkan kontak |
Conversations API
| Metode | Endpoint | Deskripsi |
|---|---|---|
GET | /conversations | Menampilkan percakapan |
GET | /conversations/{id} | Mengambil satu percakapan |
POST | /conversations | Membuat percakapan |
POST | /conversations/{id}/reply | Membalas percakapan |
POST | /conversations/{id}/parts | Menambahkan bagian percakapan |
Companies API
| Metode | Endpoint | Deskripsi |
|---|---|---|
GET | /companies | Menampilkan perusahaan |
POST | /companies | Membuat atau memperbarui perusahaan |
GET | /companies/{id} | Mengambil satu perusahaan |
GET | /companies/{id}/contacts | Menampilkan kontak perusahaan |
Events API
| Metode | Endpoint | Deskripsi |
|---|---|---|
POST | /events | Mengirimkan sebuah event |
GET | /events?type=user&intercom_user_id={id} | Menampilkan event user |
Event
Event percakapan
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
conversation.created | Percakapan baru dimulai | Notifikasi tiket support |
conversation.closed | Percakapan selesai | Pemicu survei CSAT |
conversation.rating.added | Rating dikirimkan | Pelacakan kepuasan |
conversation.snoozed | Percakapan ditunda | Penjadwalan follow-up |
Event kontak
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
contact.created | Kontak baru ditambahkan | Rangkaian welcome |
contact.updated | Data kontak berubah | Sinkronisasi atribut |
contact.deleted | Kontak diarsipkan | Pembersihan data |
contact.tag.created | Tag ditambahkan ke kontak | Pembaruan segmen |
Event user
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
user.created | User baru mendaftar | Alur onboarding |
user.email.updated | Email berubah | Penggabungan kontak |
user.unsubscribed | Berhenti berlangganan email | Pembaruan preferensi |
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 Intercomawait tajo.connectors.connect('intercom', { accessToken: process.env.INTERCOM_ACCESS_TOKEN, apiVersion: '2.11'});Menyinkronkan kontak dan percakapan
// Full sync of contacts and conversation dataawait tajo.connectors.sync('intercom', { type: 'full', resources: ['contacts', 'conversations', 'companies'], since: '2023-01-01'});
// Check sync statusconst status = await tajo.connectors.status('intercom');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 14200,// conversationsSynced: 28400,// companiesSynced: 2100// }Menangani webhook Intercom
import crypto from 'crypto';
app.post('/webhooks/intercom', async (req, res) => { const signature = req.get('X-Hub-Signature'); const expectedSig = 'sha1=' + crypto .createHmac('sha1', process.env.INTERCOM_CLIENT_SECRET) .update(JSON.stringify(req.body)) .digest('hex');
if (signature !== expectedSig) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('intercom', { topic: req.body.topic, data: req.body.data });
res.status(200).send('OK');});Batas rate
Intercom menerapkan batas rate berdasarkan paket Anda:
| Paket | Batas rate | Detail |
|---|---|---|
| Starter | 20 permintaan/10 detik | Per app |
| Pro | 50 permintaan/10 detik | Per app |
| Premium | 100 permintaan/10 detik | Per app |
| Endpoint search | 1 permintaan/detik | Per app |
| Endpoint scroll | 1 permintaan/menit | Per app |
Batas tambahan:
- Operasi bulk: 15 kontak per permintaan bulk
- Pengiriman event: 500 event/detik per workspace
- Pengiriman webhook: Percobaan ulang otomatis selama 24 jam
- Ekspor data: 1 ekspor bersamaan
Respons batas rate
Intercom mengembalikan 429 Too Many Requests beserta header Retry-After. Terapkan exponential backoff dan hormati jendela percobaan ulang tersebut.
Pemecahan masalah
Masalah umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| 401 Unauthorized | Token tidak valid atau kedaluwarsa | Buat ulang access token di Developer Hub |
| Kontak tidak tersinkronisasi | Field email kosong | Lead Intercom bisa tidak memiliki email; filter berdasarkan role |
| Data percakapan kosong | App tidak memiliki scope percakapan | Otorisasi ulang dengan izin baca percakapan |
| Webhook tidak diterima | Webhook belum terdaftar | Konfigurasikan webhook di pengaturan Developer Hub |
| Versi API tidak cocok | Perubahan breaking pada versi baru | Kunci versi API dengan header Intercom-Version |
Mode debug
Aktifkan logging verbose:
connectors: intercom: debug: true log_level: verbose log_webhooks: trueMenguji koneksi
tajo connectors test intercom# ✓ API connection successful# ✓ Contacts readable# ✓ Conversations readable# ✓ Companies readable# ✓ Webhooks registeredPraktik terbaik
- Kunci versi API - Selalu tentukan
Intercom-Versionuntuk menghindari perubahan breaking - Gunakan search API secara efisien - Gunakan filter dan paginasi untuk mengurangi transfer data
- Sinkronkan user dan lead sekaligus - Tangkap keseluruhan funnel di Brevo
- Petakan tag percakapan - Gunakan tag percakapan untuk segmen marketing pasca support
- Lacak event kustom - Kirimkan event produk penting ke Intercom untuk penargetan berbasis perilaku
- Tangani penggabungan kontak - Terapkan logika merge untuk kontak duplikat
Keamanan
- Access token - Autentikasi bearer token untuk private app
- OAuth 2.0 - Otorisasi terdelegasi untuk public app dengan client secret
- Verifikasi webhook - Validasi tanda tangan HMAC SHA-1 melalui
X-Hub-Signature - Enkripsi TLS - Semua komunikasi API dienkripsi lewat HTTPS
- Kontrol akses data - Akses data granular per konfigurasi app