Klaviyo Connector
เชื่อมต่อ Klaviyo กับ Brevo ผ่าน Tajo เพื่อย้ายหรือซิงค์ข้อมูลการตลาดระหว่างแพลตฟอร์ม ซิงค์โปรไฟล์ เหตุการณ์ รายการ segments flows และข้อมูลแคมเปญสำหรับกลยุทธ์การตลาดหลายช่องทางที่รวมกัน
ภาพรวม
| คุณสมบัติ | ค่า |
|---|---|
| แพลตฟอร์ม | Klaviyo |
| หมวดหมู่ | การตลาด |
| ความซับซ้อนในการตั้งค่า | ปานกลาง |
| การผสานรวมอย่างเป็นทางการ | ไม่ |
| ข้อมูลที่ซิงค์ | โปรไฟล์ เหตุการณ์ รายการ Segments แคมเปญ |
| Skills ที่มี | 10 |
| มาตรฐาน API | JSON:API |
ฟีเจอร์
- การซิงค์โปรไฟล์ - การซิงค์โปรไฟล์ลูกค้าแบบ bidirectional ระหว่าง Klaviyo และ Brevo
- การส่งต่อเหตุการณ์ - ส่งต่อเหตุการณ์ที่ติดตามของ Klaviyo ไปยัง Brevo สำหรับ automation triggers
- การย้ายรายการ - ซิงค์รายการ Klaviyo ไปยัง Brevo contact lists
- การซิงค์ Segment - ส่งออก Klaviyo segments เป็นรายการหรือ segments ของ Brevo
- การส่งออกข้อมูล Flow - ดึงข้อมูลประสิทธิภาพ flow สำหรับ analytics ข้ามแพลตฟอร์ม
- การซิงค์แคมเปญ - ประสานงานแคมเปญข้าม Klaviyo และ Brevo channels
- การซิงค์แคตาล็อก - จำลองแคตาล็อกสินค้าระหว่างแพลตฟอร์ม
- การจัดการคูปอง - ซิงค์รหัสคูปองและข้อมูลการใช้งาน
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:
- บัญชี Klaviyo ที่เปิดใช้งาน API access
- Private API Key ที่มี scopes ที่เหมาะสม
- Klaviyo Public API Key ของคุณ (company ID 6 ตัวอักษร)
- บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
- บัญชี Tajo ที่มี API credentials
การยืนยันตัวตน
Private API Key
Klaviyo ใช้ private API keys พร้อม scoped access สำหรับการยืนยันตัวตนฝั่ง server ตั้งค่า key ในส่วนหัว Authorization:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Klaviyo-API-Key your-private-api-key" \ -H "revision: 2026-01-15"Scopes ของ API Key
กำหนดค่า scopes เมื่อสร้าง private key ของคุณ:
| Scope | การเข้าถึง | คำอธิบาย |
|---|---|---|
profiles | Read/Full | เข้าถึงโปรไฟล์ผู้ติดต่อ |
events | Read/Full | เข้าถึงเหตุการณ์ที่ติดตาม |
lists | Read/Full | เข้าถึง contact lists |
segments | Read | เข้าถึง segments |
campaigns | Read | เข้าถึงข้อมูลแคมเปญ |
metrics | Read | เข้าถึงคำนิยาม metrics |
flows | Read | เข้าถึงการกำหนดค่า flows |
catalogs | Read | เข้าถึงแคตาล็อกสินค้า |
Public API Key
สำหรับการติดตามฝั่ง client ใช้ company ID 6 ตัวอักษร:
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \ -H "Content-Type: application/json" \ -d '{"data": {...}}'OAuth (Partner Integrations)
Klaviyo รองรับ OAuth สำหรับ tech partners ซึ่งให้ความปลอดภัยและ rate limits ที่ดีขึ้น:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \ -H "revision: 2026-01-15"การกำหนดค่า
การตั้งค่าพื้นฐาน
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การแมปโปรไฟล์
แมป property ของโปรไฟล์ Klaviyo กับแอตทริบิวต์ผู้ติดต่อ Brevo:
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การแมปเหตุการณ์
แมป metrics ของ Klaviyo กับเหตุการณ์ Brevo:
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"API Endpoints
| เมธอด | Endpoint | คำอธิบาย |
|---|---|---|
GET | /api/profiles/ | แสดงรายการโปรไฟล์ |
POST | /api/profiles/ | สร้างโปรไฟล์ |
PATCH | /api/profiles/{id}/ | อัปเดตโปรไฟล์ |
POST | /api/profile-merge/ | รวมโปรไฟล์ที่ซ้ำกัน |
GET | /api/events/ | แสดงรายการเหตุการณ์ |
POST | /api/events/ | สร้างเหตุการณ์ |
GET | /api/lists/ | แสดงรายการ lists ทั้งหมด |
POST | /api/lists/{id}/relationships/profiles/ | เพิ่มโปรไฟล์ในรายการ |
GET | /api/segments/ | แสดงรายการ segments |
GET | /api/campaigns/ | แสดงรายการแคมเปญ |
GET | /api/flows/ | แสดงรายการ flows |
GET | /api/metrics/ | แสดงรายการ metrics |
POST | /api/metric-aggregates/ | Query metric aggregates |
GET | /api/catalog-items/ | แสดงรายการสินค้าในแคตาล็อก |
ตัวอย่างโค้ด
เริ่มต้น Klaviyo Connector
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Klaviyo accountawait tajo.connectors.connect('klaviyo', { privateApiKey: process.env.KLAVIYO_PRIVATE_KEY, publicApiKey: process.env.KLAVIYO_PUBLIC_KEY});ซิงค์โปรไฟล์ไปยัง Brevo
// Fetch Klaviyo profiles and sync to Brevoconst 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": "[email protected]",// "first_name": "Jane",// "last_name": "Kim",// "phone_number": "+15551234567",// "properties": { "lifetime_value": 450.00 }// }// }สร้างเหตุการณ์
// 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: { }, properties: { OrderId: 'ORD-1234', Value: 89.99, Items: [ { ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 } ] }, value: 89.99 } } })});Query Metric Aggregates
// Get aggregate metric data for reportingawait 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)'] } } })});ขีดจำกัดอัตรา
| การยืนยันตัวตน | ขีดจำกัด Burst | ขีดจำกัด Steady |
|---|---|---|
| Private API Key | 75 คำขอ/วินาที | 700 คำขอ/นาที |
| OAuth | 150 คำขอ/วินาที | 1,500 คำขอ/นาที |
| Client API | 100 คำขอ/วินาที | ไม่มี |
| Bulk operations | 10 คำขอ/วินาที | 100 คำขอ/นาที |
ต้องระบุ API Revision
คำขอ Klaviyo API ทั้งหมดต้องมีส่วนหัว revision ที่ตั้งค่าเป็นวันที่เวอร์ชัน API ที่ถูกต้อง (เช่น 2026-01-15) คำขอที่ไม่มีส่วนหัวนี้จะถูกปฏิเสธ
การแก้ไขปัญหา
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
400 Bad Request | API key ไม่ถูกต้องหรือหายไป | ตรวจสอบว่า private API key ถูกต้อง |
403 Forbidden | Scope ไม่เพียงพอ | ตรวจสอบว่า scopes ของ API key ตรงกับสิทธิ์ที่ต้องการ |
ส่วนหัว revision หายไป | ไม่ได้ตั้งค่าส่วนหัว | เพิ่ม revision: 2026-01-15 ในคำขอทั้งหมด |
| ไม่พบโปรไฟล์ | identifier ผิด | ใช้ Klaviyo profile ID ไม่ใช่อีเมล สำหรับการค้นหา |
| เหตุการณ์ไม่ซิงค์ | ชื่อ metric ผิด | ใช้ชื่อ metrics ที่ตรงกันตามที่กำหนดใน Klaviyo |
429 Too Many Requests | เกิน rate limit | ใช้ exponential backoff พิจารณา OAuth สำหรับขีดจำกัดที่สูงขึ้น |
| ข้อผิดพลาดรูปแบบ JSON:API | Content type ผิด | ใช้ application/vnd.api+json สำหรับส่วนหัว Content-Type และ Accept |
แนวทางปฏิบัติที่ดีที่สุด
- ใช้รูปแบบ JSON:API - ปฏิบัติตามข้อกำหนด JSON:API สำหรับ request และ response payloads ทั้งหมด
- ตั้งค่าส่วนหัว revision - รวมส่วนหัว
revisionพร้อมวันที่เวอร์ชัน API ล่าสุดเสมอ - ใช้ sparse fieldsets - ขอเฉพาะฟิลด์ที่จำเป็นด้วย
?fields[profile]=email,first_nameเพื่อลดขนาด payload - ใช้ relationships - ใช้พารามิเตอร์
includeของ JSON:API เพื่อดึงทรัพยากรที่เกี่ยวข้องในคำขอเดียว - ใช้ cursor pagination - นำทางในชุดผลลัพธ์ขนาดใหญ่ด้วยพารามิเตอร์
page[cursor] - ใช้ bulk operations - ใช้ bulk endpoints สำหรับการนำเข้าโปรไฟล์เป็น batch และการสร้างเหตุการณ์
- ใช้ OAuth สำหรับขีดจำกัดที่สูงขึ้น - การยืนยันตัวตนด้วย OAuth ให้ rate limits สูงกว่า private keys ถึง 2 เท่า
ความปลอดภัย
- Scopes ของ private API key - การควบคุมการเข้าถึงแบบ Read/Full แบบละเอียดต่อประเภททรัพยากร
- รองรับ OAuth - การยืนยันตัวตนด้วย token แบบปลอดภัยสำหรับ partner integrations
- การแยก public key - Client-side keys จำกัดเฉพาะการดำเนินการสร้างเท่านั้น
- TLS 1.2+ - การสื่อสาร API ทั้งหมดเข้ารหัสระหว่างส่ง
- SOC 2 Type II - Klaviyo ได้รับการรับรอง SOC 2 Type II
- การปฏิบัติตาม GDPR - Data Privacy API สำหรับคำขอลบโปรไฟล์