---
title: "Konektor Customer.io"
description: "Panduan integrasi Customer.io lengkap untuk menyinkronkan people, event, kampanye, dan data alur kerja dengan Brevo melalui Tajo."
url: https://tajo.io/in/docs/connectors/marketing/customerio/
markdown: https://tajo.io/in/docs/connectors/marketing/customerio.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 Customer.io

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 platform pesan Customer.io Anda ke Brevo untuk data pelanggan terpadu, koordinasi kampanye lintas platform, dan analitik engagement yang terkonsolidasi.

## Ikhtisar

| Properti | Nilai |
| --- | --- |
| **Platform** | Customer.io |
| **Kategori** | Marketing |
| **Kompleksitas setup** | Menengah |
| **Integrasi resmi** | Tidak |
| **Data yang disinkronkan** | People, Event, Kampanye, Segmen |
| **API yang digunakan** | Track API, App API, Pipelines API |
| **Autentikasi** | Site ID + API Key / App API Key |
| **URL dasar** | `track.customer.io`, `api.customer.io` |

## Fitur

- **Sinkronisasi people** - Sinkronisasi profil pelanggan dua arah dengan kontak Brevo
- **Penerusan event** - Lacak event perilaku dan teruskan ke Brevo sebagai trigger otomatisasi
- **Analitik kampanye** - Sinkronkan metrik performa kampanye untuk pelaporan terpadu
- **Data alur kerja** - Cerminkan status alur kerja Customer.io ke atribut kontak Brevo
- **Replikasi segmen** - Replikasikan segmen Customer.io sebagai list Brevo
- **Sinkronisasi data objek** - Sinkronkan objek non-people dan data relasinya

## Prasyarat

Sebelum memulai, pastikan Anda memiliki:

1. Akun Customer.io dengan akses API
2. Site ID dan Track API Key Anda (tersedia di Settings > API Credentials)
3. App API key untuk membaca data kampanye dan segmen
4. Akun Brevo dengan akses API
5. Akun Tajo dengan langganan aktif

## Autentikasi

Customer.io menggunakan dua API terpisah dengan metode autentikasi yang berbeda:

### Track API (data perilaku)

Digunakan untuk mengirim data people, event, dan perangkat. Autentikasi memakai Site ID dan API Key melalui Basic Auth.

```bash
# Basic Auth: Site ID as username, API Key as password
curl -X POST https://track.customer.io/api/v1/customers/user123 \
  -u "$SITE_ID:$API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com"}'
```

### App API (membaca data)

Digunakan untuk mengambil data kampanye, segmen, dan pelanggan. Autentikasi memakai Bearer token.

```bash
curl -X GET https://api.customer.io/v1/campaigns \
  -H "Authorization: Bearer $APP_API_KEY"
```

Pemisahan API key

Track API key dan App API key adalah kredensial yang berbeda. Track API key digunakan untuk menulis data, sedangkan App API key untuk membaca data. Keduanya diperlukan agar integrasi Tajo berjalan penuh.

### Menghubungkan ke Tajo

```bash
tajo connectors install customerio \
  --site-id $CIO_SITE_ID \
  --track-api-key $CIO_TRACK_API_KEY \
  --app-api-key $CIO_APP_API_KEY
```

## Konfigurasi

### Setup dasar

```yaml
connectors:
  customerio:
    enabled: true
    region: "us"  # or "eu" for EU data center

    sync:
      people: true
      events: true
      campaigns: true
      segments: true
      objects: false

    lists:
      all_contacts: 12
      active_subscribers: 13
      churned: 14
```

### Pemetaan field

Petakan atribut person Customer.io ke atribut kontak Brevo:

```yaml
field_mapping:
  # Standard fields
  id: CIO_ID
  email: email
  first_name: FIRSTNAME
  last_name: LASTNAME
  phone: SMS

  # Engagement metrics
  created_at: SIGNUP_DATE
  last_activity: LAST_ACTIVE
  plan: PLAN_NAME

  # Custom attributes
  company: COMPANY
  role: JOB_TITLE
  mrr: MONTHLY_REVENUE
  lifecycle_stage: LIFECYCLE_STAGE
```

### Pemetaan event

```yaml
event_mapping:
  # Customer.io event -> Brevo event
  purchase_completed: ORDER_PLACED
  subscription_started: SUBSCRIPTION_START
  feature_activated: FEATURE_USED
  support_ticket_opened: SUPPORT_REQUEST
```

## Endpoint API

Tajo terintegrasi dengan endpoint API Customer.io berikut:

| Endpoint | Metode | API | Tujuan |
| --- | --- | --- | --- |
| `/api/v1/customers/{id}` | PUT | Track | Membuat atau memperbarui person |
| `/api/v1/customers/{id}/events` | POST | Track | Melacak event person |
| `/api/v1/events` | POST | Track | Melacak event anonim |
| `/api/v2/entity` | POST | Track | Membuat atau memperbarui people/objek (Pipelines) |
| `/v1/campaigns` | GET | App | Menampilkan daftar kampanye |
| `/v1/campaigns/{id}/metrics` | GET | App | Metrik performa kampanye |
| `/v1/segments` | GET | App | Menampilkan daftar segmen |
| `/v1/segments/{id}/membership` | GET | App | Mengambil anggota segmen |
| `/v1/customers/{id}/attributes` | GET | App | Mengambil atribut pelanggan |
| `/v1/customers/{id}/activities` | GET | App | Mengambil log aktivitas pelanggan |

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

await tajo.connectors.connect('customerio', {
  siteId: process.env.CIO_SITE_ID,
  trackApiKey: process.env.CIO_TRACK_API_KEY,
  appApiKey: process.env.CIO_APP_API_KEY,
  region: 'us'
});
```

### Sinkronkan people ke Brevo

```javascript
// Incremental sync of Customer.io people
await tajo.connectors.sync('customerio', {
  type: 'incremental',
  resources: ['people'],
  since: '2024-01-01',
  batchSize: 100
});

const status = await tajo.connectors.status('customerio');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T14:20:00Z',
//   peopleCount: 32500,
//   campaignsTracked: 18,
//   eventsProcessed: 87000
// }
```

### Teruskan event

```javascript
// Forward Customer.io reporting webhook events to Brevo
app.post('/webhooks/customerio', async (req, res) => {
  const events = req.body;

  for (const event of events) {
    await tajo.connectors.handleEvent('customerio', {
      type: event.metric,
      payload: {
        customerId: event.data.customer_id,
        campaignId: event.data.campaign_id,
        timestamp: event.timestamp
      }
    });
  }

  res.status(200).send('OK');
});
```

### Ekspor segmen

```javascript
const result = await tajo.connectors.exportSegment('customerio', {
  segmentId: 42,
  targetList: 13,
  includeAttributes: ['email', 'first_name', 'last_name', 'plan']
});

console.log(`Exported ${result.count} people to Brevo list 13`);
```

## Batas rate

Customer.io menerapkan batas rate yang berbeda untuk setiap API:

| API | Batas rate | Catatan |
| --- | --- | --- |
| **Track API** | ~100 permintaan/detik | Per workspace |
| **App API** | 10 permintaan/detik | Per API key |
| **Pipelines API** | 100 permintaan/detik | Direkomendasikan untuk data massal |
| **Endpoint batch** | 1.000 people per permintaan | Payload maksimal 500KB |

Gunakan endpoint batch

Untuk sinkronisasi besar, Tajo memakai endpoint batch Customer.io guna mengirim hingga 1.000 people per permintaan, sehingga volume panggilan API berkurang signifikan.

## Pemecahan masalah

### Masalah umum

| Masalah | Penyebab | Solusi |
| --- | --- | --- |
| 401 Unauthorized | Site ID atau API key tidak valid | Verifikasi kredensial di Customer.io Settings > API |
| People tidak tersinkronisasi | Identifier tidak ada | Pastikan setiap person memiliki `id` atau `email` |
| Event tidak terlacak | Tipe API key salah | Gunakan Track API key untuk event, bukan App API key |
| Data EU tidak dapat diakses | Region dikonfigurasi salah | Setel region ke `eu` untuk workspace EU |
| Error batas rate | Terlalu banyak panggilan App API | Kurangi frekuensi polling untuk data kampanye |

### Mode debug

```yaml
connectors:
  customerio:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### Uji koneksi

```bash
tajo connectors test customerio
# ✓ Track API connection successful
# ✓ App API connection successful
# ✓ People accessible
# ✓ Campaigns readable
# ✓ Segments listable
```

## Praktik terbaik

1. **Gunakan Pipelines API untuk data massal** - Pipelines API yang lebih baru dioptimalkan untuk ingesti bervolume tinggi
2. **Siapkan reporting webhook** - Teruskan event email Customer.io ke Tajo secara real-time
3. **Petakan tahap lifecycle** - Sinkronkan keanggotaan segmen Customer.io ke atribut Brevo
4. **Gunakan identifier yang konsisten** - Samakan field `id` di Customer.io dan Brevo
5. **Sinkronkan secara inkremental** - Hindari ekspor penuh; manfaatkan timestamp `last_activity`
6. **Pantau pengiriman webhook** - Siapkan peringatan untuk pengiriman webhook yang gagal

## Keamanan

- **Basic Auth** - Track API melakukan autentikasi dengan Site ID dan API Key
- **Bearer Token** - App API menggunakan bearer token bergaya OAuth
- **Hanya HTTPS** - Semua komunikasi API dienkripsi melalui TLS 1.2+
- **Pusat data regional** - Opsi pusat data EU untuk kepatuhan GDPR
- **Penyimpanan terenkripsi** - Semua kredensial dienkripsi saat disimpan di Tajo
- **Signature webhook** - Verifikasi payload webhook dengan signature HMAC

## Sumber terkait

- [Konektor Braze](https://tajo.io/in/docs/connectors/marketing/braze)
- [Konektor Iterable](https://tajo.io/in/docs/connectors/marketing/iterable)
- [Skill Customer Sync](https://tajo.io/in/docs/skills/data-sync/customer-sync)
- [API Kontak Brevo](https://tajo.io/in/docs/contact-management)
