Mixpanel Connector

เชื่อมต่อ Mixpanel กับ Brevo ผ่าน Tajo เพื่อเชื่อมต่อ product analytics กับระบบอัตโนมัติทางการตลาด ซิงค์โปรไฟล์ผู้ใช้ เหตุการณ์พฤติกรรม และ cohorts เพื่อสร้างแคมเปญที่ขับเคลื่อนด้วยข้อมูลตามการใช้งานผลิตภัณฑ์จริง

ภาพรวม

คุณสมบัติค่า
แพลตฟอร์มMixpanel
หมวดหมู่Analytics (แบบกำหนดเอง)
ความซับซ้อนในการตั้งค่าปานกลาง
การผสานรวมอย่างเป็นทางการไม่
ข้อมูลที่ซิงค์เหตุการณ์ โปรไฟล์ Cohorts กลุ่ม
ทักษะที่มีอยู่7

ฟีเจอร์

  • การนำเข้าเหตุการณ์ - นำเข้า track events ผ่าน Ingestion API ของ Mixpanel เข้าสู่เวิร์กโฟลว์ Brevo
  • การซิงค์โปรไฟล์ผู้ใช้ - แมปคุณสมบัติโปรไฟล์ผู้ใช้ Mixpanel กับแอตทริบิวต์ผู้ติดต่อ Brevo
  • การส่งออก cohort - ซิงค์ cohorts ของ Mixpanel กับรายการผู้ติดต่อ Brevo สำหรับแคมเปญที่กำหนดเป้าหมาย
  • Group analytics - ซิงค์ข้อมูลระดับกลุ่มสำหรับ B2B account-based marketing
  • การจัดการตัวตน - ใช้การรวมตัวตนของ Mixpanel สำหรับโปรไฟล์ลูกค้าแบบรวม
  • JQL queries - รัน JQL queries แบบกำหนดเองเพื่อดึงชุดข้อมูลเฉพาะสำหรับ Brevo
  • Lookup tables - ซิงค์ข้อมูลการเพิ่มความสมบูรณ์จาก lookup tables ของ Mixpanel

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:

  1. บัญชี Mixpanel ที่มีโปรเจกต์ที่สร้างแล้ว
  2. Mixpanel Project Token ของคุณสำหรับการติดตามฝั่ง client
  3. Service Account ที่มีสิทธิ์เหมาะสมสำหรับการเข้าถึง API ฝั่งเซิร์ฟเวอร์
  4. บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
  5. บัญชี Tajo ที่มีข้อมูลรับรอง API

การยืนยันตัวตน

Service Accounts (แนะนำ)

Mixpanel แนะนำให้ใช้ Service Accounts สำหรับการยืนยันตัวตน API Service accounts ใช้ HTTP Basic Auth พร้อม username (service account username) และ password (service account secret)

Terminal window
# Service Account authentication
curl https://mixpanel.com/api/app/me \
-u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"

Project Token

Project Token ใช้สำหรับการติดตามเหตุการณ์ฝั่ง client และปลอดภัยที่จะรวมในโค้ด client:

// Client-side initialization
mixpanel.init("YOUR_PROJECT_TOKEN");

OAuth (สำหรับการผสานรวม Partner)

สำหรับการผสานรวม app ที่เข้าถึงหลายโปรเจกต์:

Terminal window
curl https://mixpanel.com/api/2.0/engage \
-H "Authorization: Bearer YOUR_OAUTH_TOKEN"

การกำหนดค่า

การตั้งค่าพื้นฐาน

connectors:
mixpanel:
enabled: true
project_token: "your-project-token"
service_account:
username: "your-service-account-username"
secret: "your-service-account-secret"
project_id: "12345"
data_residency: "US" # or "EU"
# Data sync options
sync:
events: true
profiles: true
cohorts: true
groups: false
# Brevo list assignment
lists:
all_users: 15
engaged_users: 16
at_risk: 17

การแมปเหตุการณ์

แมปเหตุการณ์ Mixpanel กับประเภทเหตุการณ์ Brevo:

event_mapping:
# Mixpanel event -> Brevo event
"Purchase": "order_completed"
"Sign Up": "customer_created"
"Add to Cart": "cart_updated"
"Page View": "page_viewed"
"$experiment_started": "experiment_started"
# Custom events
"Feature Activated": "feature_used"
"Subscription Renewed": "subscription_renewed"

การแมปคุณสมบัติโปรไฟล์

แมปคุณสมบัติผู้ใช้ Mixpanel กับแอตทริบิวต์ผู้ติดต่อ Brevo:

property_mapping:
$email: email
$first_name: FIRSTNAME
$last_name: LASTNAME
$phone: SMS
$city: CITY
$region: REGION
$country_code: COUNTRY
plan: PLAN_TYPE
company: COMPANY
signup_date: SIGNUP_DATE
total_revenue: LTV

API Endpoints

เมธอดEndpointคำอธิบาย
POST/importนำเข้าเหตุการณ์ (Ingestion API)
POST/trackติดตามเหตุการณ์ (ฝั่ง client)
POST/engage#$setตั้งค่าคุณสมบัติโปรไฟล์ผู้ใช้
POST/engage#$set_onceตั้งค่าคุณสมบัติเฉพาะถ้ายังไม่ได้ตั้งค่า
POST/engage#$deleteลบโปรไฟล์ผู้ใช้
POST/engage#$unionUnion กับคุณสมบัติรายการ
POST/groupsตั้งค่าคุณสมบัติโปรไฟล์กลุ่ม
GET/exportส่งออกข้อมูลเหตุการณ์ดิบ
POST/cohorts/listแสดงรายการ cohorts ที่บันทึกไว้
POST/engage/queryQuery โปรไฟล์ผู้ใช้
POST/jqlรัน JQL queries แบบกำหนดเอง
GET/segmentationQuery รายงานการแบ่งกลุ่ม
GET/retentionQuery รายงานการรักษาผู้ใช้
GET/funnelsQuery รายงาน funnel

ตัวอย่างโค้ด

เริ่มต้น Mixpanel Connector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Mixpanel project
await tajo.connectors.connect('mixpanel', {
projectToken: process.env.MIXPANEL_TOKEN,
serviceAccountUser: process.env.MIXPANEL_SA_USER,
serviceAccountSecret: process.env.MIXPANEL_SA_SECRET,
projectId: process.env.MIXPANEL_PROJECT_ID
});

นำเข้าเหตุการณ์ผ่าน Ingestion API

// Import events to Mixpanel (automatically forwarded to Brevo)
const response = await fetch('https://api.mixpanel.com/import', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + btoa(
`${process.env.MIXPANEL_SA_USER}:${process.env.MIXPANEL_SA_SECRET}`
)
},
body: JSON.stringify([
{
event: "Purchase",
properties: {
distinct_id: "user_123",
$insert_id: "evt_abc123",
time: Math.floor(Date.now() / 1000),
revenue: 89.99,
product_id: "SKU-001",
product_name: "Widget Pro"
}
}
])
});
// Expected response: { "code": 200, "status": "OK", "num_records_imported": 1 }

ซิงค์ Cohort กับ Brevo

// Export a Mixpanel cohort and sync to a Brevo list
const cohort = await tajo.connectors.syncCohort('mixpanel', {
cohortId: 12345,
targetList: 16,
syncMode: 'mirror'
});
console.log(cohort);
// {
// cohortName: "Engaged Users (Last 7 Days)",
// membersCount: 3200,
// syncedToBrevo: 3200,
// listId: 16
// }

ตั้งค่าคุณสมบัติโปรไฟล์ผู้ใช้

// Set user properties via the Engage API
const response = await fetch('https://api.mixpanel.com/engage#$set', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify([{
$token: process.env.MIXPANEL_TOKEN,
$distinct_id: "user_123",
$set: {
$email: "[email protected]",
$first_name: "Jane",
$last_name: "Kim",
plan: "premium",
total_orders: 12,
lifetime_value: 1250.00
}
}])
});

ขีดจำกัดอัตรา

APIขีดจำกัดรายละเอียด
Ingestion API2 GB/นาทีต่อโปรเจกต์
Track APIไม่มีขีดจำกัดที่แน่นอนการส่งมอบแบบ Best-effort
Engage API2,000 อัปเดต/batchสูงสุด 2 GB/นาทีต่อโปรเจกต์
Query API60 คำขอ/ชั่วโมงต่อโปรเจกต์ (Service Account)
Export API60 คำขอ/ชั่วโมงสูงสุด 100 วันต่อ query
JQL API60 คำขอ/ชั่วโมงต่อโปรเจกต์
Cohort Export60 คำขอ/ชั่วโมงต่อโปรเจกต์

การลบรายการเหตุการณ์ซ้ำ

Mixpanel ลบรายการเหตุการณ์ซ้ำโดยใช้คุณสมบัติ $insert_id ต้องรวม $insert_id เฉพาะเสมอเพื่อป้องกันเหตุการณ์ซ้ำเมื่อลองนำเข้าที่ล้มเหลวใหม่

การแก้ไขปัญหา

ปัญหาสาเหตุวิธีแก้
เหตุการณ์ไม่ปรากฏProject token ไม่ถูกต้องตรวจสอบว่า token ตรงกับโปรเจกต์เป้าหมาย
คุณสมบัติโปรไฟล์หายไปใช้ API ผิดใช้ /engage#$set สำหรับคุณสมบัติโปรไฟล์ ไม่ใช่ /track
การส่งออก cohort ล้มเหลวสิทธิ์ไม่เพียงพอตรวจสอบให้แน่ใจว่า Service Account มีบทบาท Admin หรือ Analyst
เหตุการณ์ซ้ำขาด $insert_idรวม $insert_id เฉพาะในทุกเหตุการณ์
402 Payment Requiredเกินขีดจำกัดข้อมูลตรวจสอบขีดจำกัดแผน Mixpanel และอัปเกรดหากจำเป็น
ข้อมูล EU ไม่ถูกกำหนดเส้นทางData residency ไม่ถูกต้องใช้ api-eu.mixpanel.com สำหรับโปรเจกต์ EU
ปัญหาการรวมตัวตนdistinct_id ไม่ถูกต้องปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดในการจัดการตัวตนของ Mixpanel

แนวทางปฏิบัติที่ดีที่สุด

  1. ใช้ Service Accounts - ใช้ Service Accounts แทน Project Secret สำหรับการยืนยันตัวตนฝั่งเซิร์ฟเวอร์
  2. รวม $insert_id - ตั้งค่า insert ID เฉพาะเสมอสำหรับการลบรายการเหตุการณ์ซ้ำ
  3. อัปเดตโปรไฟล์แบบ Batch - ส่งสูงสุด 2,000 การอัปเดตโปรไฟล์ต่อคำขอเพื่อประสิทธิภาพ
  4. ใช้ EU endpoints - สำหรับ EU data residency ใช้ api-eu.mixpanel.com สำหรับการเรียก API ทั้งหมด
  5. ซิงค์ cohorts ตามกำหนดการ - ตั้งค่าการซิงค์ cohort รายวันหรือรายสัปดาห์แทนการ polling ต่อเนื่อง
  6. แมปคุณสมบัติที่สงวนไว้ - ใช้คุณสมบัติที่สงวนไว้ของ Mixpanel ($email, $first_name) สำหรับข้อมูลโปรไฟล์
  7. ตรวจสอบ ingestion - ใช้หน้า Events ของ Mixpanel เพื่อตรวจสอบว่าเหตุการณ์กำลังได้รับอย่างถูกต้อง

ความปลอดภัย

  • HTTPS เท่านั้น - การสื่อสาร API ทั้งหมดต้องการการเข้ารหัส TLS
  • การแยก Service Account - การเข้าถึงแบบกำหนดขอบเขตต่อโปรเจกต์พร้อมสิทธิ์ตามบทบาท
  • การลบรายการเหตุการณ์ซ้ำ - Built-in dedup ผ่าน $insert_id ป้องกันปัญหาความสมบูรณ์ของข้อมูล
  • SOC 2 Type II - Mixpanel ได้รับการรับรอง SOC 2 Type II
  • GDPR/CCPA - รองรับการลบข้อมูลผู้ใช้ผ่าน GDPR API
  • EU data residency - EU data center มีให้สำหรับการปฏิบัติตามมาตรฐานยุโรป

แหล่งข้อมูลที่เกี่ยวข้อง

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
ผู้ช่วย AI

สวัสดี! ถามฉันเกี่ยวกับเอกสารได้เลย