Konektor Iterable
Hubungkan platform growth marketing Iterable Anda ke Brevo untuk keterlibatan pelanggan yang terpadu, koordinasi kampanye lintas kanal, dan analitik yang terkonsolidasi di seluruh perangkat marketing.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | Iterable |
| Kategori | Marketing |
| Kompleksitas setup | Sedang |
| Integrasi resmi | Tidak |
| Data yang disinkronkan | Pengguna, event, kampanye, katalog |
| Tipe API | REST API |
| Autentikasi | API key |
| Base URL | https://api.iterable.com/api/ |
Fitur
- Sinkronisasi profil pengguna - Sinkronisasi data pengguna dua arah dengan kontak Brevo
- Analitik kampanye - Sinkronkan metrik pengiriman, open, dan klik kampanye untuk pelaporan terpadu
- Data eksperimen - Lacak hasil A/B test dan varian pemenang
- Sinkronisasi katalog - Selaraskan katalog produk dan konten antarplatform
- Event workflow - Teruskan event pemicu dan penyelesaian workflow ke Brevo
- Sinkronisasi preferensi kanal - Replikasi preferensi komunikasi pengguna di Brevo
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Akun Iterable dengan akses API
- API key Iterable dengan izin yang sesuai
- Project ID Iterable Anda
- Akun Brevo dengan akses API
- Akun Tajo dengan langganan aktif
Autentikasi
Iterable menggunakan autentikasi API key yang dikirim pada header permintaan.
Membuat API key
- Masuk ke dashboard Iterable Anda
- Buka Integrations > API Keys
- Klik New API Key
- Beri nama “Tajo Integration”
- Pilih tipe key Server-side
- Berikan izin berikut:
Users: Read/WriteEvents: Read/WriteCampaigns: ReadLists: Read/WriteCatalogs: ReadExperiments: ReadWorkflows: ReadTemplates: ReadChannels: ReadMessage Types: ReadTipe key menentukan
Selalu gunakan API key Server-side untuk integrasi Tajo. Key sisi mobile dan JavaScript memiliki izin terbatas dan tidak dapat mengakses seluruh endpoint yang dibutuhkan.
Menghubungkan ke Tajo
tajo connectors install iterable \ --api-key $ITERABLE_API_KEYKonfigurasi
Setup dasar
connectors: iterable: enabled: true
sync: users: true events: true campaigns: true catalogs: true experiments: true
lists: all_users: 16 engaged_users: 17 inactive_users: 18Pemetaan field
Petakan field pengguna Iterable ke atribut kontak Brevo:
field_mapping: # Standard fields userId: ITERABLE_ID email: email firstName: FIRSTNAME lastName: LASTNAME phoneNumber: SMS
# Engagement data signupDate: SIGNUP_DATE totalPurchases: TOTAL_PURCHASES lastPurchaseDate: LAST_PURCHASE
# Custom fields plan_name: PLAN_NAME company_size: COMPANY_SIZE preferred_channel: PREFERRED_CHANNEL lifecycle_stage: LIFECYCLE_STAGEKonfigurasi event
event_mapping: # Iterable event -> Brevo event purchase: ORDER_PLACED addToCart: CART_UPDATED pageView: PAGE_VIEWED appOpen: APP_OPENED pushOpen: PUSH_ENGAGEDEndpoint API
Tajo terintegrasi dengan endpoint API Iterable berikut:
| Endpoint | Method | Tujuan |
|---|---|---|
/users/update | POST | Memperbarui profil pengguna |
/users/{email} | GET | Mengambil pengguna berdasarkan email |
/users/bulkUpdate | POST | Memperbarui pengguna secara batch |
/events/track | POST | Melacak event kustom |
/events/trackBulk | POST | Melacak event secara batch |
/campaigns | GET | Menampilkan seluruh kampanye |
/campaigns/metrics | GET | Data performa kampanye |
/experiments/metrics | GET | Hasil eksperimen |
/lists | GET | Menampilkan seluruh daftar pengguna |
/lists/subscribe | POST | Menambahkan pengguna ke sebuah daftar |
/lists/unsubscribe | POST | Menghapus pengguna dari sebuah daftar |
/catalogs/{catalogName}/items | GET | Mengambil item katalog |
/channels | GET | Menampilkan kanal pesan |
/export/data.json | GET | Mengekspor data event mentah |
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('iterable', { apiKey: process.env.ITERABLE_API_KEY});Sinkronisasi pengguna
// Incremental user sync from Iterable to Brevoawait tajo.connectors.sync('iterable', { type: 'incremental', resources: ['users'], since: '2024-01-01', batchSize: 50});
const status = await tajo.connectors.status('iterable');console.log(status);// {// connected: true,// lastSync: '2024-03-15T09:45:00Z',// usersCount: 58700,// campaignsTracked: 42,// eventsProcessed: 210000// }Melacak event
// Forward Iterable events to Brevoawait tajo.connectors.handleEvent('iterable', { type: 'custom_event', payload: { eventName: 'subscription_upgraded', dataFields: { previousPlan: 'starter', newPlan: 'pro', mrr: 99.00 } }});Handler webhook
// Handle Iterable system webhooksapp.post('/webhooks/iterable', async (req, res) => { const event = req.body;
await tajo.connectors.handleWebhook('iterable', { type: event.eventName, payload: event });
res.status(200).send('OK');});Batas rate
Iterable menerapkan batas rate berdasarkan paket Anda:
| Paket | Batas rate | Batas endpoint bulk |
|---|---|---|
| Growth | 500 permintaan/detik | 500 permintaan/detik |
| Enterprise | Kustom | Kustom |
Batas untuk endpoint tertentu:
| Endpoint | Batas |
|---|---|
/users/update | 500 req/dtk |
/users/bulkUpdate | 500 req/dtk (1.000 pengguna per permintaan) |
/events/track | 500 req/dtk |
/events/trackBulk | 500 req/dtk (8.000 event per permintaan) |
/export/data.json | 4 permintaan bersamaan |
Endpoint bulk
Tajo otomatis mengelompokkan pembaruan pengguna (hingga 1.000 per panggilan) dan pelacakan event (hingga 8.000 per panggilan) untuk memaksimalkan throughput sekaligus tetap berada dalam batas rate.
Pemecahan masalah
Masalah umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| 401 Unauthorized | API key tidak valid | Periksa key di Iterable > Integrations > API Keys |
| Pengguna tidak tersinkron | Tipe key tidak sesuai | Pastikan Anda memakai API key Server-side |
| Data kampanye hilang | Izin tidak mencukupi | Tambahkan izin Campaigns Read pada API key |
| Ekspor timeout | Volume data besar | Gunakan filter rentang tanggal untuk memperkecil ukuran ekspor |
| Pengguna duplikat | Identifier tidak konsisten | Gunakan email sebagai identifier utama secara konsisten |
Mode debug
connectors: iterable: debug: true log_level: verbose log_api_calls: trueMenguji koneksi
tajo connectors test iterable# ✓ API connection successful# ✓ User data accessible# ✓ Campaign list readable# ✓ Event tracking operational# ✓ List management availablePraktik terbaik
- Gunakan endpoint bulk - Selalu utamakan
bulkUpdatedantrackBulkuntuk volume data besar - Deduplikasi berdasarkan email - Gunakan email sebagai identifier yang konsisten di Iterable dan Brevo
- Sinkronkan secara inkremental - Gunakan rentang tanggal agar data historis tidak diproses ulang
- Petakan preferensi kanal - Sinkronkan status opt-in/opt-out untuk menjaga kepatuhan
- Pantau job ekspor - Ekspor besar bisa memakan waktu, siapkan polling status
- Uji dengan project non-produksi - Validasi pemetaan sebelum menyinkronkan data produksi
Keamanan
- Autentikasi API key - Key server-side dengan izin granular
- Hanya HTTPS - Seluruh komunikasi API dienkripsi melalui TLS 1.2+
- Rotasi key - Mendukung beberapa API key aktif selama rotasi
- Penyimpanan terenkripsi - Kredensial API dienkripsi saat disimpan di Tajo
- Webhook JWT - Payload webhook ditandatangani dengan JWT untuk verifikasi