Konektor Intercom
Status konektor: Direncanakan Belum dibangun. Tajo belum menjalankan konektor ini.
Ilustrasi · data contoh
Contoh sinkronisasi
Sumber
Intercom
Status konektor: Direncanakan
Tujuan
Alat Anda yang lain
Status konektor: Alat khusus
Pemetaan field
| Field sumber | Field tujuan | Nilai contoh |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Susun draf
- Tinjau satu data
- Setujui versi ini
Status berlaku untuk masing-masing konektor dan tidak menjamin sinkronisasi ini siap. Field ini hanya ilustrasi. Periksa skema dan izin sebenarnya sebelum sinkronisasi berjalan.
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 | Tidak |
| 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