Konektor Customer.io
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:
- Akun Customer.io dengan akses API
- Site ID dan Track API Key Anda (tersedia di Settings > API Credentials)
- App API key untuk membaca data kampanye dan segmen
- Akun Brevo dengan akses API
- 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.
# Basic Auth: Site ID as username, API Key as passwordcurl -X POST https://track.customer.io/api/v1/customers/user123 \ -u "$SITE_ID:$API_KEY" \ -H "Content-Type: application/json" \App API (membaca data)
Digunakan untuk mengambil data kampanye, segmen, dan pelanggan. Autentikasi memakai Bearer token.
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
tajo connectors install customerio \ --site-id $CIO_SITE_ID \ --track-api-key $CIO_TRACK_API_KEY \ --app-api-key $CIO_APP_API_KEYKonfigurasi
Setup dasar
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: 14Pemetaan field
Petakan atribut person Customer.io ke atribut kontak Brevo:
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_STAGEPemetaan event
event_mapping: # Customer.io event -> Brevo event purchase_completed: ORDER_PLACED subscription_started: SUBSCRIPTION_START feature_activated: FEATURE_USED support_ticket_opened: SUPPORT_REQUESTEndpoint 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
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
// Incremental sync of Customer.io peopleawait 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
// Forward Customer.io reporting webhook events to Brevoapp.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
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
connectors: customerio: debug: true log_level: verbose log_api_calls: trueUji koneksi
tajo connectors test customerio# ✓ Track API connection successful# ✓ App API connection successful# ✓ People accessible# ✓ Campaigns readable# ✓ Segments listablePraktik terbaik
- Gunakan Pipelines API untuk data massal - Pipelines API yang lebih baru dioptimalkan untuk ingesti bervolume tinggi
- Siapkan reporting webhook - Teruskan event email Customer.io ke Tajo secara real-time
- Petakan tahap lifecycle - Sinkronkan keanggotaan segmen Customer.io ke atribut Brevo
- Gunakan identifier yang konsisten - Samakan field
iddi Customer.io dan Brevo - Sinkronkan secara inkremental - Hindari ekspor penuh; manfaatkan timestamp
last_activity - 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