---
title: "Konektor Klaviyo"
description: "Panduan integrasi Klaviyo lengkap untuk menyinkronkan profil, event, daftar, segmen, dan data kampanye dengan Brevo melalui Tajo."
url: https://tajo.io/in/docs/connectors/marketing/klaviyo/
markdown: https://tajo.io/in/docs/connectors/marketing/klaviyo.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 Klaviyo

Status konektor: Dalam pengerjaan Sedang dibangun. Belum terverifikasi.

| 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 Klaviyo ke Brevo melalui Tajo untuk memigrasikan atau menyinkronkan data marketing antarplatform. Sinkronkan profil, event, daftar, segmen, flow, dan data kampanye demi strategi marketing multikanal yang terpadu.

## Ikhtisar

| Properti | Nilai |
| --- | --- |
| **Platform** | Klaviyo |
| **Kategori** | Marketing |
| **Kompleksitas setup** | Sedang |
| **Integrasi resmi** | Tidak |
| **Data yang disinkronkan** | Profil, event, daftar, segmen, kampanye |
| **Skill tersedia** | 10 |
| **Standar API** | JSON:API |

## Fitur

- **Sinkronisasi profil** - Sinkronisasi dua arah profil pelanggan antara Klaviyo dan Brevo
- **Penerusan event** - Teruskan event yang dilacak Klaviyo ke Brevo sebagai pemicu otomatisasi
- **Migrasi daftar** - Sinkronkan daftar Klaviyo ke daftar kontak Brevo
- **Sinkronisasi segmen** - Ekspor segmen Klaviyo sebagai daftar atau segmen Brevo
- **Ekspor data flow** - Tarik data performa flow untuk analitik lintas platform
- **Sinkronisasi kampanye** - Koordinasikan kampanye di kanal Klaviyo dan Brevo
- **Sinkronisasi katalog** - Cerminkan katalog produk antarplatform
- **Pengelolaan kupon** - Sinkronkan kode kupon dan data penggunaannya

## Prasyarat

Sebelum memulai, pastikan Anda memiliki:

1. Akun Klaviyo dengan akses API
2. Private API Key dengan scope yang sesuai
3. Public API Key Klaviyo Anda (company ID 6 karakter)
4. Akun Brevo dengan akses API
5. Akun Tajo dengan kredensial API

## Autentikasi

### Private API key

Klaviyo memakai private API key dengan akses ber-scope untuk autentikasi sisi server. Setel key tersebut pada header `Authorization`:

```bash
curl https://a.klaviyo.com/api/profiles/ \
  -H "Authorization: Klaviyo-API-Key your-private-api-key" \
  -H "revision: 2026-01-15"
```

### Scope API key

Konfigurasikan scope saat membuat private key Anda:

| Scope | Akses | Deskripsi |
| --- | --- | --- |
| `profiles` | Read/Full | Akses profil kontak |
| `events` | Read/Full | Akses event yang dilacak |
| `lists` | Read/Full | Akses daftar kontak |
| `segments` | Read | Akses segmen |
| `campaigns` | Read | Akses data kampanye |
| `metrics` | Read | Akses definisi metrik |
| `flows` | Read | Akses konfigurasi flow |
| `catalogs` | Read | Akses katalog produk |

### Public API key

Untuk pelacakan sisi klien, gunakan company ID 6 karakter:

```bash
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \
  -H "Content-Type: application/json" \
  -d '{"data": {...}}'
```

### OAuth (integrasi partner)

Klaviyo mendukung OAuth untuk tech partner, dengan keamanan dan batas rate yang lebih baik:

```bash
curl https://a.klaviyo.com/api/profiles/ \
  -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \
  -H "revision: 2026-01-15"
```

## Konfigurasi

### Setup dasar

```yaml
connectors:
  klaviyo:
    enabled: true
    private_api_key: "your-klaviyo-private-key"
    public_api_key: "XXXXXX"
    api_revision: "2026-01-15"

    # Data sync options
    sync:
      profiles: true
      events: true
      lists: true
      segments: true
      catalogs: false

    # Brevo list assignment
    lists:
      all_contacts: 20
      subscribers: 21
      high_value: 22
```

### Pemetaan profil

Petakan properti profil Klaviyo ke atribut kontak Brevo:

```yaml
profile_mapping:
  email: email
  first_name: FIRSTNAME
  last_name: LASTNAME
  phone_number: SMS
  city: CITY
  region: REGION
  country: COUNTRY
  zip: ZIP
  organization: COMPANY
  title: JOB_TITLE

  # Custom properties
  lifetime_value: LTV
  total_orders: ORDER_COUNT
  last_order_date: LAST_ORDER_DATE
  preferred_channel: CHANNEL_PREF
```

### Pemetaan event

Petakan metrik Klaviyo ke event Brevo:

```yaml
event_mapping:
  "Placed Order": "order_completed"
  "Ordered Product": "product_purchased"
  "Started Checkout": "checkout_started"
  "Added to Cart": "cart_updated"
  "Viewed Product": "product_viewed"
  "Subscribed to List": "customer_subscribed"
  "Received Email": "email_received"
  "Opened Email": "email_opened"
  "Clicked Email": "email_clicked"
```

## Endpoint API

| Method | Endpoint | Deskripsi |
| --- | --- | --- |
| `GET` | `/api/profiles/` | Menampilkan profil |
| `POST` | `/api/profiles/` | Membuat sebuah profil |
| `PATCH` | `/api/profiles/{id}/` | Memperbarui sebuah profil |
| `POST` | `/api/profile-merge/` | Menggabungkan profil duplikat |
| `GET` | `/api/events/` | Menampilkan event |
| `POST` | `/api/events/` | Membuat sebuah event |
| `GET` | `/api/lists/` | Menampilkan seluruh daftar |
| `POST` | `/api/lists/{id}/relationships/profiles/` | Menambahkan profil ke sebuah daftar |
| `GET` | `/api/segments/` | Menampilkan segmen |
| `GET` | `/api/campaigns/` | Menampilkan kampanye |
| `GET` | `/api/flows/` | Menampilkan flow |
| `GET` | `/api/metrics/` | Menampilkan metrik |
| `POST` | `/api/metric-aggregates/` | Mengueri agregat metrik |
| `GET` | `/api/catalog-items/` | Menampilkan item katalog |

## Contoh kode

### Inisialisasi konektor Klaviyo

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

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

// Connect Klaviyo account
await tajo.connectors.connect('klaviyo', {
  privateApiKey: process.env.KLAVIYO_PRIVATE_KEY,
  publicApiKey: process.env.KLAVIYO_PUBLIC_KEY
});
```

### Sinkronisasi profil ke Brevo

```javascript
// Fetch Klaviyo profiles and sync to Brevo
const response = await fetch('https://a.klaviyo.com/api/profiles/', {
  headers: {
    'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`,
    'revision': '2026-01-15',
    'Accept': 'application/vnd.api+json'
  }
});

const { data } = await response.json();

// Each profile follows JSON:API format
// {
//   "type": "profile",
//   "id": "01ABCDEF",
//   "attributes": {
//     "email": "jane@example.com",
//     "first_name": "Jane",
//     "last_name": "Kim",
//     "phone_number": "+15551234567",
//     "properties": { "lifetime_value": 450.00 }
//   }
// }
```

### Membuat sebuah event

```javascript
// Track an event in Klaviyo (forwarded to Brevo via Tajo)
await fetch('https://a.klaviyo.com/api/events/', {
  method: 'POST',
  headers: {
    'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`,
    'revision': '2026-01-15',
    'Content-Type': 'application/vnd.api+json',
    'Accept': 'application/vnd.api+json'
  },
  body: JSON.stringify({
    data: {
      type: 'event',
      attributes: {
        metric: {
          data: { type: 'metric', attributes: { name: 'Placed Order' } }
        },
        profile: {
          data: { type: 'profile', attributes: { email: 'jane@example.com' } }
        },
        properties: {
          OrderId: 'ORD-1234',
          Value: 89.99,
          Items: [
            { ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 }
          ]
        },
        value: 89.99
      }
    }
  })
});
```

### Kueri agregat metrik

```javascript
// Get aggregate metric data for reporting
await fetch('https://a.klaviyo.com/api/metric-aggregates/', {
  method: 'POST',
  headers: {
    'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`,
    'revision': '2026-01-15',
    'Content-Type': 'application/vnd.api+json'
  },
  body: JSON.stringify({
    data: {
      type: 'metric-aggregate',
      attributes: {
        metric_id: 'METRIC_ID',
        measurements: ['count', 'sum_value'],
        interval: 'day',
        filter: ['greater-or-equal(datetime,2024-01-01)',
                 'less-than(datetime,2024-02-01)']
      }
    }
  })
});
```

## Batas rate

| Autentikasi | Batas burst | Batas steady |
| --- | --- | --- |
| **Private API Key** | 75 permintaan/dtk | 700 permintaan/mnt |
| **OAuth** | 150 permintaan/dtk | 1.500 permintaan/mnt |
| **Client API** | 100 permintaan/dtk | N/A |
| **Operasi bulk** | 10 permintaan/dtk | 100 permintaan/mnt |

Header revision wajib

Seluruh permintaan API Klaviyo membutuhkan header `revision` yang disetel ke tanggal versi API yang valid (misalnya `2026-01-15`). Permintaan tanpa header ini akan ditolak.

## Pemecahan masalah

| Masalah | Penyebab | Solusi |
| --- | --- | --- |
| `400 Bad Request` | API key tidak valid atau tidak ada | Pastikan private API key sudah benar |
| `403 Forbidden` | Scope tidak mencukupi | Periksa apakah scope API key sesuai dengan izin yang dibutuhkan |
| Header `revision` hilang | Header belum disetel | Tambahkan `revision: 2026-01-15` pada seluruh permintaan |
| Profil tidak ditemukan | Identifier keliru | Gunakan profile ID Klaviyo, bukan email, untuk pencarian |
| Event tidak tersinkron | Nama metrik keliru | Cocokkan nama metrik persis seperti yang didefinisikan di Klaviyo |
| `429 Too Many Requests` | Batas rate terlampaui | Terapkan exponential backoff, pertimbangkan OAuth untuk batas lebih tinggi |
| Error format JSON:API | Content type keliru | Gunakan `application/vnd.api+json` untuk header Content-Type dan Accept |

## Praktik terbaik

1. **Gunakan format JSON:API** - Ikuti spesifikasi JSON:API untuk seluruh payload permintaan dan respons
2. **Setel header revision** - Selalu sertakan header `revision` dengan tanggal versi API terbaru
3. **Gunakan sparse fieldset** - Minta hanya field yang dibutuhkan dengan `?fields[profile]=email,first_name` untuk memperkecil ukuran payload
4. **Manfaatkan relasi** - Gunakan parameter `include` JSON:API untuk mengambil resource terkait dalam satu permintaan
5. **Gunakan paginasi kursor** - Telusuri kumpulan hasil besar dengan parameter `page[cursor]`
6. **Terapkan operasi bulk** - Gunakan endpoint bulk untuk impor profil dan pembuatan event secara batch
7. **Gunakan OAuth untuk batas lebih tinggi** - Autentikasi OAuth memberi batas rate 2x lebih tinggi dibanding private key

## Keamanan

- **Scope private API key** - Kontrol akses granular Read/Full per tipe resource
- **Dukungan OAuth** - Autentikasi berbasis token yang aman untuk integrasi partner
- **Isolasi public key** - Key sisi klien dibatasi hanya untuk operasi pembuatan
- **TLS 1.2+** - Seluruh komunikasi API dienkripsi saat transit
- **SOC 2 Type II** - Klaviyo tersertifikasi SOC 2 Type II
- **Kepatuhan GDPR** - Data Privacy API untuk permintaan penghapusan profil

## Sumber daya terkait

- [Konektor Brevo](https://tajo.io/in/docs/connectors/marketing/brevo)
- [Konektor Google Ads](https://tajo.io/in/docs/connectors/marketing/google-ads)
- [Konektor Meta Ads](https://tajo.io/in/docs/connectors/marketing/meta-ads)
- [Skill Sinkronisasi Pelanggan](https://tajo.io/in/docs/skills/data-sync/customer-sync)
