---
title: "Mixpanel Connector"
description: "คู่มือการผสานรวม Mixpanel ฉบับสมบูรณ์สำหรับการซิงค์เหตุการณ์ product analytics โปรไฟล์ผู้ใช้ และ cohorts กับ Brevo ผ่าน Tajo"
url: https://tajo.io/th/docs/connectors/custom/mixpanel/
markdown: https://tajo.io/th/docs/connectors/custom/mixpanel.md
lang: th-TH
robots: noindex
---

ขอสิทธิ์ใช้งานล่วงหน้า

กรอกชื่อและที่อยู่อีเมลที่ทำงานของคุณ เราจะส่งลิงก์เพื่อยืนยันคำขอเข้าใช้งาน Tajo ทางอีเมล

# Mixpanel Connector

สถานะตัวเชื่อม: วางแผนไว้ ยังไม่ได้สร้าง ปัจจุบัน Tajo ยังไม่ได้ใช้งานตัวเชื่อมนี้

| ฟิลด์ต้นทาง | ฟิลด์ปลายทาง | ค่าตัวอย่าง |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

เชื่อมต่อ 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)

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

### Project Token

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

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

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

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

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

## การกำหนดค่า

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

```yaml
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:

```yaml
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:

```yaml
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#$union` | Union กับคุณสมบัติรายการ |
| `POST` | `/groups` | ตั้งค่าคุณสมบัติโปรไฟล์กลุ่ม |
| `GET` | `/export` | ส่งออกข้อมูลเหตุการณ์ดิบ |
| `POST` | `/cohorts/list` | แสดงรายการ cohorts ที่บันทึกไว้ |
| `POST` | `/engage/query` | Query โปรไฟล์ผู้ใช้ |
| `POST` | `/jql` | รัน JQL queries แบบกำหนดเอง |
| `GET` | `/segmentation` | Query รายงานการแบ่งกลุ่ม |
| `GET` | `/retention` | Query รายงานการรักษาผู้ใช้ |
| `GET` | `/funnels` | Query รายงาน funnel |

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

### เริ่มต้น Mixpanel Connector

```javascript
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

```javascript
// 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

```javascript
// 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
// }
```

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

```javascript
// 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: "jane@example.com",
      $first_name: "Jane",
      $last_name: "Kim",
      plan: "premium",
      total_orders: 12,
      lifetime_value: 1250.00
    }
  }])
});
```

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

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

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

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 มีให้สำหรับการปฏิบัติตามมาตรฐานยุโรป

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

- [Segment Connector](https://tajo.io/th/docs/connectors/custom/segment)
- [Amplitude Connector](https://tajo.io/th/docs/connectors/custom/amplitude)
- [Customer Sync Skill](https://tajo.io/th/docs/skills/data-sync/customer-sync)
- [Brevo Events API](https://tajo.io/th/docs/events-engagement/create-event)
