Customer.io Connector
เชื่อมต่อ Customer.io messaging platform ของคุณกับ Brevo เพื่อข้อมูลลูกค้าที่รวมกัน การประสานงานแคมเปญข้ามแพลตฟอร์ม และ engagement analytics ที่รวมศูนย์
ภาพรวม
| คุณสมบัติ | ค่า |
|---|---|
| แพลตฟอร์ม | Customer.io |
| หมวดหมู่ | การตลาด |
| ความซับซ้อนในการตั้งค่า | ปานกลาง |
| การผสานรวมอย่างเป็นทางการ | ไม่ |
| ข้อมูลที่ซิงค์ | People เหตุการณ์ แคมเปญ Segments |
| API ที่ใช้ | Track API, App API, Pipelines API |
| การยืนยันตัวตน | Site ID + API Key / App API Key |
| Base URLs | track.customer.io, api.customer.io |
ฟีเจอร์
- การซิงค์ People - การซิงค์โปรไฟล์ลูกค้าแบบ bidirectional กับ Brevo contacts
- การส่งต่อเหตุการณ์ - ติดตามเหตุการณ์เชิงพฤติกรรมและส่งต่อไปยัง Brevo สำหรับ automation triggers
- Campaign analytics - ซิงค์ metrics ประสิทธิภาพแคมเปญสำหรับรายงานที่รวมกัน
- ข้อมูล Workflow - จำลองสถานะ workflow ของ Customer.io ใน Brevo contact attributes
- การสะท้อน Segment - จำลอง Customer.io segments เป็นรายการ Brevo
- การซิงค์ข้อมูล Object - ซิงค์ objects ที่ไม่ใช่ people และข้อมูลความสัมพันธ์
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:
- บัญชี Customer.io ที่เปิดใช้งาน API access
- Site ID และ Track API Key ของคุณ (พบใน Settings > API Credentials)
- App API key สำหรับอ่านข้อมูลแคมเปญและ segment
- บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
- บัญชี Tajo ที่มีการสมัครสมาชิกที่ใช้งานอยู่
การยืนยันตัวตน
Customer.io ใช้ APIs สองตัวแยกกันพร้อมวิธีการยืนยันตัวตนที่แตกต่างกัน:
Track API (ข้อมูลเชิงพฤติกรรม)
ใช้สำหรับส่ง people เหตุการณ์ และข้อมูลอุปกรณ์ ยืนยันตัวตนด้วย Site ID และ API Key ผ่าน 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 (อ่านข้อมูล)
ใช้สำหรับดึงข้อมูลแคมเปญ segments และข้อมูลลูกค้า ยืนยันตัวตนด้วย Bearer token
curl -X GET https://api.customer.io/v1/campaigns \ -H "Authorization: Bearer $APP_API_KEY"การแยก API Key
Track API key และ App API key เป็นข้อมูลประจำตัวที่แตกต่างกัน Track API key ใช้สำหรับเขียนข้อมูล ในขณะที่ App API key ใช้สำหรับอ่านข้อมูล ต้องใช้ทั้งสองอย่างสำหรับการผสานรวม Tajo แบบเต็มรูปแบบ
การเชื่อมต่อกับ Tajo
tajo connectors install customerio \ --site-id $CIO_SITE_ID \ --track-api-key $CIO_TRACK_API_KEY \ --app-api-key $CIO_APP_API_KEYการกำหนดค่า
การตั้งค่าพื้นฐาน
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: 14การแมปฟิลด์
แมปแอตทริบิวต์ person ของ Customer.io กับแอตทริบิวต์ผู้ติดต่อ 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_STAGEการแมปเหตุการณ์
event_mapping: # Customer.io event -> Brevo event purchase_completed: ORDER_PLACED subscription_started: SUBSCRIPTION_START feature_activated: FEATURE_USED support_ticket_opened: SUPPORT_REQUESTAPI Endpoints
Tajo ผสานรวมกับ Customer.io API endpoints ต่อไปนี้:
| Endpoint | เมธอด | API | จุดประสงค์ |
|---|---|---|---|
/api/v1/customers/{id} | PUT | Track | สร้างหรืออัปเดต person |
/api/v1/customers/{id}/events | POST | Track | ติดตามเหตุการณ์ person |
/api/v1/events | POST | Track | ติดตามเหตุการณ์ anonymous |
/api/v2/entity | POST | Track | สร้างหรืออัปเดต people/objects (Pipelines) |
/v1/campaigns | GET | App | แสดงรายการแคมเปญ |
/v1/campaigns/{id}/metrics | GET | App | Metrics ประสิทธิภาพแคมเปญ |
/v1/segments | GET | App | แสดงรายการ segments |
/v1/segments/{id}/membership | GET | App | ดึงสมาชิกของ segment |
/v1/customers/{id}/attributes | GET | App | ดึง customer attributes |
/v1/customers/{id}/activities | GET | App | ดึงบันทึกกิจกรรมของลูกค้า |
ตัวอย่างโค้ด
เริ่มต้น Connector
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'});ซิงค์ People ไปยัง 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// }ส่งต่อเหตุการณ์
// 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');});ส่งออก Segment
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`);ขีดจำกัดอัตรา
Customer.io บังคับใช้ rate limits ที่แตกต่างกันต่อ API:
| API | ขีดจำกัดอัตรา | หมายเหตุ |
|---|---|---|
| Track API | ~100 คำขอ/วินาที | ต่อ workspace |
| App API | 10 คำขอ/วินาที | ต่อ API key |
| Pipelines API | 100 คำขอ/วินาที | แนะนำสำหรับข้อมูลจำนวนมาก |
| Batch endpoint | 1,000 people ต่อคำขอ | Payload สูงสุด 500KB |
ใช้ Batch Endpoints
สำหรับการซิงค์ขนาดใหญ่ Tajo ใช้ Customer.io batch endpoint เพื่อส่งสูงสุด 1,000 people ต่อคำขอ ลดปริมาณการเรียก API อย่างมีนัยสำคัญ
การแก้ไขปัญหา
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| 401 Unauthorized | Site ID หรือ API key ไม่ถูกต้อง | ตรวจสอบข้อมูลประจำตัวใน Customer.io Settings > API |
| People ไม่ซิงค์ | ไม่มี identifier | ตรวจสอบให้แน่ใจว่าแต่ละ person มี id หรือ email |
| เหตุการณ์ไม่ถูกติดตาม | ใช้ API key ผิดประเภท | ใช้ Track API key สำหรับเหตุการณ์ ไม่ใช่ App API key |
| ไม่สามารถเข้าถึงข้อมูล EU | กำหนดค่า region ผิด | ตั้ง region เป็น eu สำหรับ EU workspaces |
| ข้อผิดพลาด rate limit | การเรียก App API มากเกินไป | ลดความถี่การ polling สำหรับข้อมูลแคมเปญ |
โหมด Debug
connectors: customerio: debug: true log_level: verbose log_api_calls: trueทดสอบการเชื่อมต่อ
tajo connectors test customerio# ✓ Track API connection successful# ✓ App API connection successful# ✓ People accessible# ✓ Campaigns readable# ✓ Segments listableแนวทางปฏิบัติที่ดีที่สุด
- ใช้ Pipelines API สำหรับข้อมูลจำนวนมาก - Pipelines API รุ่นใหม่ได้รับการปรับแต่งสำหรับการนำเข้าข้อมูลปริมาณสูง
- ตั้งค่า reporting webhooks - ส่งต่อเหตุการณ์อีเมล Customer.io ไปยัง Tajo แบบ real time
- แมป lifecycle stages - ซิงค์สถานะสมาชิก Customer.io segment ไปยัง Brevo attributes
- ใช้ identifiers ที่สอดคล้องกัน - จับคู่ฟิลด์
idทั้ง Customer.io และ Brevo - ซิงค์แบบ incremental - หลีกเลี่ยง full exports; ใช้ประโยชน์จาก timestamps
last_activity - ตรวจสอบการส่ง webhook - ตั้งค่าการแจ้งเตือนสำหรับการส่ง webhook ที่ล้มเหลว
ความปลอดภัย
- Basic Auth - Track API ยืนยันตัวตนด้วย Site ID และ API Key
- Bearer Token - App API ใช้ bearer tokens แบบ OAuth
- HTTPS เท่านั้น - การสื่อสาร API ทั้งหมดเข้ารหัสผ่าน TLS 1.2+
- ศูนย์ข้อมูลตามภูมิภาค - ตัวเลือก EU data center สำหรับการปฏิบัติตาม GDPR
- การจัดเก็บที่เข้ารหัส - ข้อมูลประจำตัวทั้งหมดเข้ารหัสที่เก็บใน Tajo
- Webhook Signatures - ตรวจสอบ webhook payloads ด้วย HMAC signatures