---
title: "Konektor Iterable"
description: "Panduan integrasi Iterable lengkap untuk menyinkronkan pengguna, kampanye, eksperimen, dan event keterlibatan dengan Brevo melalui Tajo."
url: https://tajo.io/in/docs/connectors/marketing/iterable/
markdown: https://tajo.io/in/docs/connectors/marketing/iterable.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 Iterable

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

1. Akun Iterable dengan akses API
2. API key Iterable dengan izin yang sesuai
3. Project ID Iterable Anda
4. Akun Brevo dengan akses API
5. Akun Tajo dengan langganan aktif

## Autentikasi

Iterable menggunakan autentikasi API key yang dikirim pada header permintaan.

### Membuat API key

1. Masuk ke dashboard Iterable Anda
2. Buka **Integrations** > **API Keys**
3. Klik **New API Key**
4. Beri nama “Tajo Integration”
5. Pilih tipe key **Server-side**
6. Berikan izin berikut:

```
Users: Read/Write
Events: Read/Write
Campaigns: Read
Lists: Read/Write
Catalogs: Read
Experiments: Read
Workflows: Read
Templates: Read
Channels: Read
Message Types: Read
```

Tipe 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

```bash
tajo connectors install iterable \
  --api-key $ITERABLE_API_KEY
```

## Konfigurasi

### Setup dasar

```yaml
connectors:
  iterable:
    enabled: true

    sync:
      users: true
      events: true
      campaigns: true
      catalogs: true
      experiments: true

    lists:
      all_users: 16
      engaged_users: 17
      inactive_users: 18
```

### Pemetaan field

Petakan field pengguna Iterable ke atribut kontak Brevo:

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

### Konfigurasi event

```yaml
event_mapping:
  # Iterable event -> Brevo event
  purchase: ORDER_PLACED
  addToCart: CART_UPDATED
  pageView: PAGE_VIEWED
  appOpen: APP_OPENED
  pushOpen: PUSH_ENGAGED
```

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

```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('iterable', {
  apiKey: process.env.ITERABLE_API_KEY
});
```

### Sinkronisasi pengguna

```javascript
// Incremental user sync from Iterable to Brevo
await 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

```javascript
// Forward Iterable events to Brevo
await tajo.connectors.handleEvent('iterable', {
  type: 'custom_event',
  payload: {
    email: 'user@example.com',
    eventName: 'subscription_upgraded',
    dataFields: {
      previousPlan: 'starter',
      newPlan: 'pro',
      mrr: 99.00
    }
  }
});
```

### Handler webhook

```javascript
// Handle Iterable system webhooks
app.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

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

### Menguji koneksi

```bash
tajo connectors test iterable
# ✓ API connection successful
# ✓ User data accessible
# ✓ Campaign list readable
# ✓ Event tracking operational
# ✓ List management available
```

## Praktik terbaik

1. **Gunakan endpoint bulk** - Selalu utamakan `bulkUpdate` dan `trackBulk` untuk volume data besar
2. **Deduplikasi berdasarkan email** - Gunakan email sebagai identifier yang konsisten di Iterable dan Brevo
3. **Sinkronkan secara inkremental** - Gunakan rentang tanggal agar data historis tidak diproses ulang
4. **Petakan preferensi kanal** - Sinkronkan status opt-in/opt-out untuk menjaga kepatuhan
5. **Pantau job ekspor** - Ekspor besar bisa memakan waktu, siapkan polling status
6. **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

## Sumber daya terkait

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