موصل Mixpanel
اربط Mixpanel بـ Brevo عبر Tajo لتجسير تحليلات المنتج مع أتمتة التسويق. زامن ملفات المستخدمين والأحداث السلوكية والمجموعات لإنشاء حملات مدفوعة بالبيانات مبنية على الاستخدام الفعلي للمنتج.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Mixpanel |
| الفئة | تحليلات (مخصص) |
| تعقيد الإعداد | متوسط |
| تكامل رسمي | لا |
| البيانات المتزامنة | الأحداث، الملفات، المجموعات، المجموعات التنظيمية |
| المهارات المتاحة | 7 |
الميزات
- استيعاب الأحداث - استيراد أحداث التتبع عبر Mixpanel Ingestion API إلى سير عمل Brevo
- مزامنة ملفات المستخدمين - ربط خصائص ملفات مستخدمي Mixpanel بسمات جهات اتصال Brevo
- تصدير المجموعات - مزامنة مجموعات Mixpanel إلى قوائم جهات اتصال Brevo لحملات مستهدفة
- تحليلات المجموعات - مزامنة البيانات على مستوى المجموعة للتسويق القائم على الحسابات B2B
- إدارة الهوية - الاستفادة من دمج الهوية في Mixpanel لملفات عملاء موحدة
- استعلامات JQL - تشغيل استعلامات JQL مخصصة لاستخراج مجموعات بيانات محددة لـ Brevo
- جداول البحث - مزامنة بيانات الإثراء من جداول البحث في Mixpanel
المتطلبات المسبقة
قبل أن تبدأ، تأكد من توفر ما يلي:
- حساب Mixpanel مع مشروع تم إنشاؤه
- Mixpanel Project Token الخاص بك للتتبع من جانب العميل
- Service Account بأذونات مناسبة للوصول إلى API من جانب الخادم
- حساب Brevo مع وصول API
- حساب Tajo مع بيانات اعتماد API
المصادقة
Service Accounts (موصى بها)
يوصي Mixpanel باستخدام Service Accounts لمصادقة API. تستخدم حسابات الخدمة HTTP Basic Auth مع اسم المستخدم (اسم مستخدم حساب الخدمة) وكلمة المرور (سر حساب الخدمة).
# Service Account authenticationcurl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"Project Token
يُستخدم Project Token لتتبع الأحداث من جانب العميل وهو آمن للتضمين في كود العميل:
// Client-side initializationmixpanel.init("YOUR_PROJECT_TOKEN");OAuth (لتكاملات الشركاء)
لتكاملات التطبيقات التي تصل إلى مشاريع متعددة:
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
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
POST | /import | استيراد الأحداث (Ingestion API) |
POST | /track | تتبع الأحداث (من جانب العميل) |
POST | /engage#$set | ضبط خصائص ملف المستخدم |
POST | /engage#$set_once | ضبط الخصائص فقط إذا لم تكن مضبوطة |
POST | /engage#$delete | حذف ملف مستخدم |
POST | /engage#$union | دمج إلى خصائص القائمة |
POST | /groups | ضبط خصائص ملف المجموعة |
GET | /export | تصدير بيانات الأحداث الخام |
POST | /cohorts/list | عرض المجموعات المحفوظة |
POST | /engage/query | استعلام ملفات المستخدمين |
POST | /jql | تشغيل استعلامات JQL مخصصة |
GET | /segmentation | استعلام تقارير التقسيم |
GET | /retention | استعلام تقارير الاحتفاظ |
GET | /funnels | استعلام تقارير القمع |
أمثلة البرمجة
تهيئة موصل Mixpanel
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Mixpanel projectawait 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 }مزامنة مجموعة إلى Brevo
// Export a Mixpanel cohort and sync to a Brevo listconst 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 APIconst 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: { $first_name: "Jane", $last_name: "Kim", plan: "premium", total_orders: 12, lifetime_value: 1250.00 } }])});حدود المعدل
| API | الحد | التفاصيل |
|---|---|---|
| Ingestion API | 2 GB/دقيقة | لكل مشروع |
| Track API | لا حد صارم | تسليم بأفضل جهد |
| Engage API | 2,000 تحديث/دُفعة | بحد أقصى 2 GB/دقيقة لكل مشروع |
| Query API | 60 طلبًا/ساعة | لكل مشروع (Service Account) |
| Export API | 60 طلبًا/ساعة | حد أقصى 100 يوم لكل استعلام |
| JQL API | 60 طلبًا/ساعة | لكل مشروع |
| تصدير المجموعة | 60 طلبًا/ساعة | لكل مشروع |
إلغاء تكرار الأحداث
يُلغي Mixpanel تكرار الأحداث باستخدام خاصية $insert_id. أدرج دائمًا $insert_id فريدًا لمنع الأحداث المكررة عند إعادة محاولة الاستيرادات الفاشلة.
استكشاف الأخطاء
| المشكلة | السبب | الحل |
|---|---|---|
| الأحداث لا تظهر | رمز مشروع خاطئ | تحقق من أن الرمز يتطابق مع المشروع المستهدف |
| خصائص الملف مفقودة | استخدام API خاطئ | استخدم /engage#$set لخصائص الملف، وليس /track |
| فشل تصدير المجموعة | أذونات غير كافية | تأكد من أن Service Account لديه دور Admin أو Analyst |
| أحداث مكررة | $insert_id مفقود | أدرج $insert_id فريدًا في كل حدث |
| 402 Payment Required | تجاوز حدود البيانات | تحقق من حدود خطة Mixpanel وقم بالترقية إذا لزم الأمر |
| بيانات EU لا تُوجَّه | إقامة بيانات خاطئة | استخدم api-eu.mixpanel.com لمشاريع EU |
| مشاكل دمج الهوية | distinct_id غير صحيح | اتبع أفضل ممارسات إدارة الهوية في Mixpanel |
أفضل الممارسات
- استخدم Service Accounts - فضّل Service Accounts على Project Secret للمصادقة من جانب الخادم
- أدرج
$insert_id- اضبط دائمًا معرف إدراج فريد لإلغاء تكرار الأحداث - جمّع تحديثات الملفات - أرسل حتى 2,000 تحديث ملف لكل طلب للكفاءة
- استخدم نقاط نهاية EU - لإقامة بيانات EU، استخدم
api-eu.mixpanel.comلجميع استدعاءات API - زامن المجموعات وفق جدول - اضبط مزامنة يومية أو أسبوعية للمجموعات بدلاً من الاستطلاع المستمر
- اربط الخصائص المحجوزة - استخدم خصائص Mixpanel المحجوزة (
$email،$first_name) لبيانات الملف - راقب الاستيعاب - استخدم صفحة الأحداث في Mixpanel للتحقق من استلام الأحداث بشكل صحيح
الأمان
- HTTPS فقط - جميع اتصالات API تتطلب تشفير TLS
- عزل Service Account - وصول محدد النطاق لكل مشروع مع أذونات قائمة على الأدوار
- إلغاء تكرار الأحداث - إلغاء تكرار مدمج عبر
$insert_idيمنع مشاكل سلامة البيانات - SOC 2 Type II - Mixpanel معتمد SOC 2 Type II
- GDPR/CCPA - يدعم حذف بيانات المستخدم عبر GDPR API
- إقامة بيانات EU - مركز بيانات EU متاح للامتثال الأوروبي