Iterable Connector
เชื่อมต่อ Iterable growth marketing platform ของคุณกับ Brevo เพื่อ customer engagement ที่รวมกัน การประสานงานแคมเปญข้ามช่องทาง และ analytics ที่รวมศูนย์ครอบคลุม marketing tools ทั้งหมด
ภาพรวม
| คุณสมบัติ | ค่า |
|---|---|
| แพลตฟอร์ม | Iterable |
| หมวดหมู่ | การตลาด |
| ความซับซ้อนในการตั้งค่า | ปานกลาง |
| การผสานรวมอย่างเป็นทางการ | ไม่ |
| ข้อมูลที่ซิงค์ | ผู้ใช้ เหตุการณ์ แคมเปญ แคตาล็อก |
| ประเภท API | REST API |
| การยืนยันตัวตน | API Key |
| Base URL | https://api.iterable.com/api/ |
ฟีเจอร์
- การซิงค์โปรไฟล์ผู้ใช้ - การซิงค์ข้อมูลผู้ใช้แบบ bidirectional กับ Brevo contacts
- Campaign analytics - ซิงค์ metrics การส่ง การเปิด และการคลิกแคมเปญสำหรับรายงานที่รวมกัน
- ข้อมูลการทดลอง - ติดตามผลการทดสอบ A/B และตัวแปรที่ชนะ
- การซิงค์แคตาล็อก - ซิงค์แคตาล็อกสินค้าและเนื้อหาข้ามแพลตฟอร์ม
- เหตุการณ์ Workflow - ส่งต่อเหตุการณ์ trigger และการเสร็จสิ้น workflow ไปยัง Brevo
- การซิงค์ channel preference - จำลองการตั้งค่าการสื่อสารของผู้ใช้ใน Brevo
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:
- บัญชี Iterable ที่เปิดใช้งาน API access
- Iterable API key ที่มีสิทธิ์ที่เหมาะสม
- Iterable project ID ของคุณ
- บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
- บัญชี Tajo ที่มีการสมัครสมาชิกที่ใช้งานอยู่
การยืนยันตัวตน
Iterable ใช้การยืนยันตัวตนด้วย API key ที่ส่งในส่วนหัวของคำขอ
การสร้าง API Key
- เข้าสู่ระบบ Iterable dashboard ของคุณ
- ไปที่ Integrations > API Keys
- คลิก New API Key
- ตั้งชื่อว่า “Tajo Integration”
- เลือกประเภท key Server-side
- ให้สิทธิ์ต่อไปนี้:
Users: Read/WriteEvents: Read/WriteCampaigns: ReadLists: Read/WriteCatalogs: ReadExperiments: ReadWorkflows: ReadTemplates: ReadChannels: ReadMessage Types: Readประเภท Key สำคัญ
ใช้ API key แบบ Server-side เสมอสำหรับการผสานรวม Tajo Keys แบบ Mobile และ JavaScript-side มีสิทธิ์จำกัดและไม่สามารถเข้าถึง endpoints ที่จำเป็นทั้งหมดได้
การเชื่อมต่อกับ Tajo
tajo connectors install iterable \ --api-key $ITERABLE_API_KEYการกำหนดค่า
การตั้งค่าพื้นฐาน
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การแมปฟิลด์
แมปฟิลด์ผู้ใช้ Iterable กับแอตทริบิวต์ผู้ติดต่อ 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_STAGEการกำหนดค่าเหตุการณ์
event_mapping: # Iterable event -> Brevo event purchase: ORDER_PLACED addToCart: CART_UPDATED pageView: PAGE_VIEWED appOpen: APP_OPENED pushOpen: PUSH_ENGAGEDAPI Endpoints
Tajo ผสานรวมกับ Iterable API endpoints ต่อไปนี้:
| Endpoint | เมธอด | จุดประสงค์ |
|---|---|---|
/users/update | POST | อัปเดตโปรไฟล์ผู้ใช้ |
/users/{email} | GET | ดึงผู้ใช้ด้วยอีเมล |
/users/bulkUpdate | POST | อัปเดตผู้ใช้เป็น batch |
/events/track | POST | ติดตาม custom events |
/events/trackBulk | POST | ติดตามเหตุการณ์เป็น batch |
/campaigns | GET | แสดงรายการแคมเปญทั้งหมด |
/campaigns/metrics | GET | ข้อมูลประสิทธิภาพแคมเปญ |
/experiments/metrics | GET | ผลการทดลอง |
/lists | GET | แสดงรายการ user lists ทั้งหมด |
/lists/subscribe | POST | เพิ่มผู้ใช้ในรายการ |
/lists/unsubscribe | POST | ลบผู้ใช้ออกจากรายการ |
/catalogs/{catalogName}/items | GET | ดึงรายการแคตาล็อก |
/channels | GET | แสดงรายการ messaging channels |
/export/data.json | GET | ส่งออกข้อมูลเหตุการณ์แบบ raw |
ตัวอย่างโค้ด
เริ่มต้น 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('iterable', { apiKey: process.env.ITERABLE_API_KEY});ซิงค์ผู้ใช้
// 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// }ติดตามเหตุการณ์
// Forward Iterable events to Brevoawait tajo.connectors.handleEvent('iterable', { type: 'custom_event', payload: { eventName: 'subscription_upgraded', dataFields: { previousPlan: 'starter', newPlan: 'pro', mrr: 99.00 } }});ตัวจัดการ 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');});ขีดจำกัดอัตรา
Iterable บังคับใช้ rate limits ตามแผนของคุณ:
| แผน | ขีดจำกัดอัตรา | ขีดจำกัด Bulk Endpoint |
|---|---|---|
| Growth | 500 คำขอ/วินาที | 500 คำขอ/วินาที |
| Enterprise | กำหนดเอง | กำหนดเอง |
ขีดจำกัดเฉพาะ endpoint:
| Endpoint | ขีดจำกัด |
|---|---|
/users/update | 500 req/s |
/users/bulkUpdate | 500 req/s (1,000 ผู้ใช้ต่อคำขอ) |
/events/track | 500 req/s |
/events/trackBulk | 500 req/s (8,000 เหตุการณ์ต่อคำขอ) |
/export/data.json | 4 concurrent requests |
Bulk Endpoints
Tajo จัดกลุ่มการอัปเดตผู้ใช้โดยอัตโนมัติ (สูงสุด 1,000 ต่อการเรียก) และการติดตามเหตุการณ์ (สูงสุด 8,000 ต่อการเรียก) เพื่อเพิ่ม throughput สูงสุดภายใน rate limits
การแก้ไขปัญหา
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| 401 Unauthorized | API key ไม่ถูกต้อง | ตรวจสอบ key ใน Iterable > Integrations > API Keys |
| ผู้ใช้ไม่ซิงค์ | ประเภท key ไม่ตรงกัน | ตรวจสอบว่าใช้ Server-side API key |
| ข้อมูลแคมเปญหายไป | สิทธิ์ไม่เพียงพอ | เพิ่มสิทธิ์ Campaigns Read ให้ API key |
| Export timeout | ปริมาณข้อมูลมาก | ใช้ตัวกรองช่วงวันที่เพื่อลดขนาด export |
| ผู้ใช้ซ้ำกัน | Identifiers ไม่สอดคล้องกัน | ใช้อีเมลเป็น primary identifier อย่างสม่ำเสมอ |
โหมด Debug
connectors: iterable: debug: true log_level: verbose log_api_calls: trueทดสอบการเชื่อมต่อ
tajo connectors test iterable# ✓ API connection successful# ✓ User data accessible# ✓ Campaign list readable# ✓ Event tracking operational# ✓ List management availableแนวทางปฏิบัติที่ดีที่สุด
- ใช้ bulk endpoints - ชอบ
bulkUpdateและtrackBulkเสมอสำหรับข้อมูลจำนวนมาก - Deduplicate ด้วยอีเมล - ใช้อีเมลเป็น identifier ที่สอดคล้องกันทั้ง Iterable และ Brevo
- ซิงค์แบบ incremental - ใช้ช่วงวันที่เพื่อหลีกเลี่ยงการประมวลผลข้อมูลย้อนหลังซ้ำ
- แมป channel preferences - ซิงค์สถานะ opt-in/opt-out เพื่อรักษาความสอดคล้อง
- ตรวจสอบ export jobs - Exports ขนาดใหญ่อาจใช้เวลา; ตั้งค่าการ polling สถานะ
- ทดสอบกับ non-production project - ตรวจสอบ mappings ก่อนซิงค์ข้อมูล production
ความปลอดภัย
- การยืนยันตัวตนด้วย API Key - Server-side keys พร้อมสิทธิ์แบบละเอียด
- HTTPS เท่านั้น - การสื่อสาร API ทั้งหมดเข้ารหัสผ่าน TLS 1.2+
- Key Rotation - รองรับ API keys ที่ใช้งานได้หลายตัวระหว่างการหมุนเวียน
- การจัดเก็บที่เข้ารหัส - ข้อมูลประจำตัว API เข้ารหัสที่เก็บใน Tajo
- JWT Webhooks - Webhook payloads ลงนามด้วย JWT สำหรับการตรวจสอบ