---
title: "Konektor Intercom"
description: "Panduan integrasi Intercom lengkap untuk menyinkronkan kontak, percakapan, perusahaan, dan event engagement dengan Brevo melalui Tajo."
url: https://tajo.io/in/docs/connectors/support/intercom/
markdown: https://tajo.io/in/docs/connectors/support/intercom.md
lang: id-ID
robots: noindex
---

Ajukan akses awal

Masukkan nama depan dan alamat email kerja Anda. Kami akan mengirim tautan untuk mengonfirmasi permintaan akses Tajo.

# Konektor Intercom

Status konektor: Direncanakan Belum dibangun. Tajo belum menjalankan konektor ini.

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

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:

1. Sebuah workspace Intercom (paket Starter, Pro, atau Premium)
2. Sebuah app Intercom dengan access token (private app) atau OAuth yang sudah dikonfigurasi (public app)
3. Akun Brevo dengan akses API
4. Akun Tajo

## Autentikasi

### Access token (private app)

Untuk integrasi privat yang mengakses data workspace Anda sendiri.

1. Buka Developer Hub > Your Apps > Create new app
2. Kaitkan dengan workspace Intercom Anda
3. Salin access token

```bash
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.

```bash
# Authorization URL
https://app.intercom.com/oauth?client_id={client_id}&state={state}

# Token exchange
curl -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

```yaml
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: 37
```

### Pemetaan 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

```yaml
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_USAGE
```

## Endpoint 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

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Intercom
await tajo.connectors.connect('intercom', {
  accessToken: process.env.INTERCOM_ACCESS_TOKEN,
  apiVersion: '2.11'
});
```

### Menyinkronkan kontak dan percakapan

```javascript
// Full sync of contacts and conversation data
await tajo.connectors.sync('intercom', {
  type: 'full',
  resources: ['contacts', 'conversations', 'companies'],
  since: '2023-01-01'
});

// Check sync status
const 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

```javascript
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:

```yaml
connectors:
  intercom:
    debug: true
    log_level: verbose
    log_webhooks: true
```

### Menguji koneksi

```bash
tajo connectors test intercom
# ✓ API connection successful
# ✓ Contacts readable
# ✓ Conversations readable
# ✓ Companies readable
# ✓ Webhooks registered
```

## Praktik terbaik

1. **Kunci versi API** - Selalu tentukan `Intercom-Version` untuk menghindari perubahan breaking
2. **Gunakan search API secara efisien** - Gunakan filter dan paginasi untuk mengurangi transfer data
3. **Sinkronkan user dan lead sekaligus** - Tangkap keseluruhan funnel di Brevo
4. **Petakan tag percakapan** - Gunakan tag percakapan untuk segmen marketing pasca support
5. **Lacak event kustom** - Kirimkan event produk penting ke Intercom untuk penargetan berbasis perilaku
6. **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

## Sumber daya terkait

- [Dokumentasi Developer Intercom](https://developers.intercom.com/docs)
- [Referensi API Intercom](https://developers.intercom.com/docs/references/introduction)
- [Konektor Zendesk](https://tajo.io/in/docs/connectors/support/zendesk)
- [Skill Customer Sync](https://tajo.io/in/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/in/docs/contact-management)
