Mailchimp Connector
เชื่อมต่อบัญชี Mailchimp ของคุณกับ Brevo ผ่าน Tajo เพื่อการย้าย audience ที่ราบรื่น การซิงค์ข้อมูลแคมเปญ และ marketing automation ที่รวมกันบนทั้งสองแพลตฟอร์ม
ภาพรวม
| คุณสมบัติ | ค่า |
|---|---|
| แพลตฟอร์ม | Mailchimp |
| หมวดหมู่ | การตลาด |
| ความซับซ้อนในการตั้งค่า | ง่าย |
| การผสานรวมอย่างเป็นทางการ | ใช่ |
| ข้อมูลที่ซิงค์ | ผู้ติดต่อ แคมเปญ Automations เหตุการณ์ |
| API Base URL | https://{dc}.api.mailchimp.com/3.0 |
ฟีเจอร์
- การซิงค์ Audience - ย้ายและซิงค์ Mailchimp audiences กับ Brevo contact lists
- ข้อมูลแคมเปญ - ซิงค์ข้อมูลประสิทธิภาพแคมเปญสำหรับรายงานที่รวมกัน
- การย้าย Automation - แมป Mailchimp automations กับ Brevo workflows
- Engagement metrics - ซิงค์ข้อมูลการเปิด คลิก และ bounce ไปยัง Brevo attributes
- การแมป Segment - จำลอง Mailchimp segments เป็นรายการหรือ segments ของ Brevo
- ข้อมูล E-commerce - ซิงค์ข้อมูล store สินค้า และคำสั่งซื้อจาก Mailchimp e-commerce
- การซิงค์ Tag - แมป Mailchimp tags กับ Brevo contact attributes หรือรายการ
- การย้าย Template - ส่งออก Mailchimp templates สำหรับใช้ในแคมเปญ Brevo
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:
- บัญชี Mailchimp (Free, Essentials, Standard หรือ Premium)
- Mailchimp API key หรือ OAuth app
- บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
- บัญชี Tajo
การยืนยันตัวตน
การยืนยันตัวตนด้วย API Key
สร้าง API key จาก Mailchimp Account > Extras > API Keys
curl https://{dc}.api.mailchimp.com/3.0/ping \ --user "anystring:{api_key}" \ -H "Content-Type: application/json"คำนำหน้า data center {dc} คือส่วนสุดท้ายของ API key ของคุณ (เช่น us21)
OAuth 2.0
สำหรับการผสานรวมหลายบัญชี:
# Authorization URLhttps://login.mailchimp.com/oauth2/authorize? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}
# Token exchangecurl -X POST https://login.mailchimp.com/oauth2/token \ -d "grant_type=authorization_code" \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "redirect_uri={redirect_uri}" \ -d "code={auth_code}"Data Center
ดึง data center จาก API key หรือ OAuth metadata endpoint เสมอ การใช้ data center ผิดจะทำให้การยืนยันตัวตนล้มเหลว
การกำหนดค่า
การตั้งค่าพื้นฐาน
connectors: mailchimp: enabled: true api_key: "${MAILCHIMP_API_KEY}" data_center: "us21"
# Data sync options sync: audiences: true campaigns: true automations: true ecommerce: true
# Audience to Brevo list mapping audience_mapping: "Main Audience": 40 "Newsletter": 41 "Customers": 42การแมปฟิลด์
แมป merge fields ของ Mailchimp กับแอตทริบิวต์ผู้ติดต่อ Brevo:
การแมปเริ่มต้น
| Parameter | Type | Description |
|---|---|---|
email_address required | string | อีเมลผู้สมัคร (unique identifier) |
FNAME optional | string | merge field ชื่อ แมปกับ FIRSTNAME |
LNAME optional | string | merge field นามสกุล แมปกับ LASTNAME |
PHONE optional | string | merge field โทรศัพท์ แมปกับ SMS |
status optional | string | สถานะการสมัคร (subscribed, unsubscribed, cleaned, pending) |
tags optional | array | Tags ของผู้สมัครสำหรับการแบ่ง segment |
stats.avg_open_rate optional | number | อัตราการเปิดอีเมลเฉลี่ย |
stats.avg_click_rate optional | number | อัตราการคลิกอีเมลเฉลี่ย |
การแมป Custom Merge Field
field_mapping: # Standard fields email_address: email FNAME: FIRSTNAME LNAME: LASTNAME PHONE: SMS
# Engagement metrics stats.avg_open_rate: AVG_OPEN_RATE stats.avg_click_rate: AVG_CLICK_RATE member_rating: ENGAGEMENT_SCORE
# E-commerce fields ecommerce_data.total_revenue: TOTAL_REVENUE ecommerce_data.number_of_orders: ORDER_COUNT
# Custom merge fields MMERGE5: COMPANY_NAME MMERGE6: CUSTOMER_TYPEAPI Endpoints
Audiences (Lists)
| เมธอด | Endpoint | คำอธิบาย |
|---|---|---|
GET | /3.0/lists | แสดงรายการ audiences ทั้งหมด |
GET | /3.0/lists/{list_id} | ดึงรายละเอียด audience |
GET | /3.0/lists/{list_id}/members | แสดงรายการสมาชิก audience |
POST | /3.0/lists/{list_id}/members | เพิ่มสมาชิก |
PUT | /3.0/lists/{list_id}/members/{hash} | อัปเดตสมาชิก |
POST | /3.0/lists/{list_id} | สมัคร/ยกเลิกการสมัครเป็น batch |
แคมเปญ
| เมธอด | Endpoint | คำอธิบาย |
|---|---|---|
GET | /3.0/campaigns | แสดงรายการแคมเปญ |
GET | /3.0/campaigns/{id} | ดึงรายละเอียดแคมเปญ |
GET | /3.0/reports/{id} | ดึงรายงานแคมเปญ |
GET | /3.0/reports/{id}/email-activity | ดึงกิจกรรมอีเมล |
Automations
| เมธอด | Endpoint | คำอธิบาย |
|---|---|---|
GET | /3.0/automations | แสดงรายการ automations |
GET | /3.0/automations/{id} | ดึงรายละเอียด automation |
GET | /3.0/automations/{id}/emails | แสดงรายการอีเมล automation |
E-commerce
| เมธอด | Endpoint | คำอธิบาย |
|---|---|---|
GET | /3.0/ecommerce/stores | แสดงรายการ stores ที่เชื่อมต่อ |
GET | /3.0/ecommerce/stores/{id}/customers | แสดงรายการลูกค้า store |
GET | /3.0/ecommerce/stores/{id}/orders | แสดงรายการคำสั่งซื้อ store |
GET | /3.0/ecommerce/stores/{id}/products | แสดงรายการสินค้า store |
เหตุการณ์
เหตุการณ์แคมเปญ
| เหตุการณ์ | Trigger | กรณีการใช้งาน |
|---|---|---|
campaign.sent | ส่งแคมเปญแล้ว | การติดตามประสิทธิภาพ |
campaign.opened | เปิดอีเมลแล้ว | การให้คะแนน engagement |
campaign.clicked | คลิกลิงก์แล้ว | การติดตามความสนใจ |
campaign.bounced | อีเมล bounce | การดูแล list |
เหตุการณ์ผู้สมัคร
| เหตุการณ์ | Trigger | กรณีการใช้งาน |
|---|---|---|
subscribe | เพิ่มผู้สมัครใหม่ | Welcome flow |
unsubscribe | ผู้สมัครยกเลิก | การจัดการการตั้งค่า |
profile | อัปเดตโปรไฟล์แล้ว | การซิงค์ attribute |
cleaned | ทำความสะอาดอีเมล (bounce) | การบำรุงรักษา list |
เหตุการณ์ E-commerce
| เหตุการณ์ | Trigger | กรณีการใช้งาน |
|---|---|---|
ecommerce.order | สั่งซื้อแล้ว | Post-purchase flow |
ecommerce.cart | อัปเดตตะกร้าสินค้าแล้ว | การกู้คืนตะกร้าที่ถูกทิ้ง |
ตัวอย่างโค้ด
เริ่มต้น Connector
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Mailchimpawait tajo.connectors.connect('mailchimp', { apiKey: process.env.MAILCHIMP_API_KEY});ย้าย Audiences ไปยัง Brevo
// Full audience migration from Mailchimp to Brevoawait tajo.connectors.sync('mailchimp', { type: 'full', resources: ['audiences', 'campaigns', 'ecommerce'], options: { preserveTags: true, migrateSegments: true, includeUnsubscribed: false }});
// Check migration statusconst status = await tajo.connectors.status('mailchimp');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsMigrated: 52000,// campaignsSynced: 245,// segmentsMapped: 18// }ซิงค์ข้อมูล Campaign Engagement
// Sync campaign performance to Brevo attributesawait tajo.connectors.sync('mailchimp', { type: 'incremental', resources: ['campaigns'], options: { syncEngagement: true, updateContactMetrics: true, since: '2024-01-01' }});ขีดจำกัดอัตรา
Rate limits ของ Mailchimp Marketing API:
| ประเภท | ขีดจำกัด | รายละเอียด |
|---|---|---|
| มาตรฐาน | 10 concurrent requests | ต่อ API key |
| Batch operations | 500 operations ต่อ batch | ต่อคำขอ |
| Export limit | 1 concurrent export | ต่อบัญชี |
| Transactional | 25 คำขอ/วินาที | ต่อ API key |
กลยุทธ์ Rate Limit
Mailchimp จำกัด concurrent connections แทนที่จะเป็นคำขอต่อวินาที ใช้ batch endpoints และใช้ retry logic พร้อม exponential backoff บนการตอบกลับ 429
การแก้ไขปัญหา
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| 401 Unauthorized | API key ไม่ถูกต้องหรือ data center ผิด | ตรวจสอบ API key และดึงคำนำหน้า dc ที่ถูกต้อง |
| Member exists | อีเมลมีอยู่ใน audience แล้ว | ใช้ PUT แทน POST เพื่ออัปเดตสมาชิกที่มีอยู่ |
| Compliance state | การลบ GDPR ป้องกันการเพิ่มกลับ | ผู้ติดต่อต้องสมัครใหม่ผ่านฟอร์มลงทะเบียน |
| Batch timeout | การดำเนินการ batch ขนาดใหญ่ | แบ่งเป็น batches ขนาดเล็กลง 500 operations |
| Merge fields หายไป | ไม่ได้สร้าง custom fields | สร้าง merge fields ใน Mailchimp ก่อนแมป |
โหมด Debug
เปิดใช้งาน verbose logging:
connectors: mailchimp: debug: true log_level: verbose log_api_calls: trueทดสอบการเชื่อมต่อ
tajo connectors test mailchimp# ✓ API connection successful# ✓ Audiences readable# ✓ Campaigns readable# ✓ E-commerce data accessible# ✓ Webhook configuredแนวทางปฏิบัติที่ดีที่สุด
- ใช้ batch operations - ใช้ batch subscribe/unsubscribe สำหรับการอัปเดตจำนวนมาก
- รักษาสถานะผู้สมัคร - เคารพการยินยอม subscription ระหว่างการย้าย
- แมป merge fields ก่อน - สร้าง Brevo attributes ที่สอดคล้องกันก่อนซิงค์
- ซิงค์ข้อมูล engagement - นำเข้าอัตราการเปิด/คลิกสำหรับการแบ่ง segment ย้อนหลัง
- จัดการ compliance states - เคารพสถานะการลบ GDPR และถาวร
- ใช้ incremental sync - ซิงค์เฉพาะการเปลี่ยนแปลงตั้งแต่ sync ครั้งล่าสุดเพื่อลดการใช้ API
ความปลอดภัย
- การยืนยันตัวตนด้วย API Key - Secret key ส่งผ่าน HTTP Basic Auth password
- OAuth 2.0 - การอนุมัติด้วย token สำหรับการเข้าถึงหลายบัญชี
- การเข้ารหัส TLS - การสื่อสาร API ทั้งหมดเข้ารหัสผ่าน HTTPS
- การตรวจสอบ Webhook - ตรวจสอบแหล่ง webhook ด้วย shared secret
- การแยก Data center - ข้อมูลเก็บใน data centers เฉพาะภูมิภาค