Mixpanel-koppling
Anslut Mixpanel till Brevo via Tajo för att överbrygga produktanalys med marknadsautomation. Synka användarprofiler, beteendehändelser och kohorter för att skapa datadrivna kampanjer baserade på faktisk produktanvändning.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | Mixpanel |
| Kategori | Analys (Anpassad) |
| Installationskomplexitet | Medel |
| Officiell integration | Nej |
| Data som synkas | Händelser, profiler, kohorter, grupper |
| Tillgängliga skills | 7 |
Funktioner
- Händelseinsamling - Importera spårade händelser via Mixpanels Ingestion API till Brevo-arbetsflöden
- Synkronisering av användarprofiler - Mappa Mixpanels användarprofilegenskaper till Brevo-kontaktattribut
- Kohortexport - Synka Mixpanel-kohorter till Brevo-kontaktlistor för riktade kampanjer
- Gruppanalys - Synka data på gruppnivå för B2B-kontobaserad marknadsföring
- Identitetshantering - Utnyttja Mixpanels identitetssammanslagning för enhetliga kundprofiler
- JQL-frågor - Kör anpassade JQL-frågor för att extrahera specifika datamängder till Brevo
- Uppslagstabeller - Synka berikningsdata från Mixpanels uppslagstabeller
Förutsättningar
Innan du börjar, se till att du har:
- Ett Mixpanel-konto med ett skapat projekt
- Din Mixpanel Project Token för spårning på klientsidan
- Ett Service Account med lämpliga behörigheter för API-åtkomst på serversidan
- Ett Brevo-konto med API-åtkomst
- Ett Tajo-konto med API-uppgifter
Autentisering
Service Accounts (rekommenderas)
Mixpanel rekommenderar att du använder Service Accounts för API-autentisering. Service accounts använder HTTP Basic Auth med användarnamn (service account-användarnamn) och lösenord (service account-hemlighet).
# Service Account authenticationcurl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"Project Token
Project Token används för händelsespårning på klientsidan och är säker att inkludera i klientkod:
// Client-side initializationmixpanel.init("YOUR_PROJECT_TOKEN");OAuth (för partnerintegrationer)
För app-integrationer som har åtkomst till flera projekt:
curl https://mixpanel.com/api/2.0/engage \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN"Konfiguration
Grundinställning
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: 17Händelsemappning
Mappa Mixpanel-händelser till Brevo-händelsetyper:
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"Mappning av profilegenskaper
Mappa Mixpanels användaregenskaper till Brevo-kontaktattribut:
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: LTVAPI-endpoints
| Metod | Endpoint | Beskrivning |
|---|---|---|
POST | /import | Importera händelser (Ingestion API) |
POST | /track | Spåra händelser (klientsida) |
POST | /engage#$set | Sätt egenskaper för användarprofil |
POST | /engage#$set_once | Sätt egenskaper endast om de inte redan är satta |
POST | /engage#$delete | Radera en användarprofil |
POST | /engage#$union | Lägg till värden i listegenskaper |
POST | /groups | Sätt egenskaper för gruppprofil |
GET | /export | Exportera rådata för händelser |
POST | /cohorts/list | Lista sparade kohorter |
POST | /engage/query | Fråga efter användarprofiler |
POST | /jql | Kör anpassade JQL-frågor |
GET | /segmentation | Fråga segmenteringsrapporter |
GET | /retention | Fråga retentionsrapporter |
GET | /funnels | Fråga trattrapporter |
Kodexempel
Initiera Mixpanel-koppling
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});Importera händelser via 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 }Synka kohort till 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// }Sätt egenskaper för användarprofil
// 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 } }])});Hastighetsbegränsningar
| API | Gräns | Detaljer |
|---|---|---|
| Ingestion API | 2 GB/min | Per projekt |
| Track API | Ingen hård gräns | Best-effort-leverans |
| Engage API | 2 000 uppdateringar/batch | Max 2 GB/min per projekt |
| Query API | 60 förfrågningar/timme | Per projekt (Service Account) |
| Export API | 60 förfrågningar/timme | Max 100 dagar per fråga |
| JQL API | 60 förfrågningar/timme | Per projekt |
| Cohort Export | 60 förfrågningar/timme | Per projekt |
Händelsededuplicering
Mixpanel deduplicerar händelser med hjälp av egenskapen $insert_id. Inkludera alltid ett unikt $insert_id för att förhindra dubbla händelser vid återförsök av misslyckade importer.
Felsökning
| Problem | Orsak | Lösning |
|---|---|---|
| Händelser visas inte | Fel projekttoken | Verifiera att token matchar målprojektet |
| Profilegenskaper saknas | Använder fel API | Använd /engage#$set för profilegenskaper, inte /track |
| Kohortexport misslyckas | Otillräckliga behörigheter | Säkerställ att Service Account har Admin- eller Analyst-roll |
| Dubbla händelser | Saknat $insert_id | Inkludera unikt $insert_id på varje händelse |
| 402 Payment Required | Över datagränser | Kontrollera Mixpanel-planens gränser och uppgradera vid behov |
| EU-data dirigeras inte | Fel dataresidens | Använd api-eu.mixpanel.com för EU-projekt |
| Problem med identitetssammanslagning | Felaktigt distinct_id | Följ Mixpanels bästa praxis för identitetshantering |
Bästa praxis
- Använd Service Accounts - Föredra Service Accounts framför Project Secret för autentisering på serversidan
- Inkludera
$insert_id- Sätt alltid ett unikt insert ID för händelsededuplicering - Batcha profiluppdateringar - Skicka upp till 2 000 profiluppdateringar per förfrågan för effektivitet
- Använd EU-endpoints - För EU-dataresidens, använd
api-eu.mixpanel.comför alla API-anrop - Synka kohorter enligt schema - Sätt upp daglig eller veckovis kohortsynk istället för kontinuerlig polling
- Mappa reserverade egenskaper - Använd Mixpanels reserverade egenskaper (
$email,$first_name) för profildata - Övervaka insamling - Använd Mixpanels Events-sida för att verifiera att händelser tas emot korrekt
Säkerhet
- Endast HTTPS - All API-kommunikation kräver TLS-kryptering
- Service Account-isolering - Scoped åtkomst per projekt med rollbaserade behörigheter
- Händelsededuplicering - Inbyggd dedup via
$insert_idförhindrar problem med dataintegritet - SOC 2 Type II - Mixpanel är SOC 2 Type II-certifierad
- GDPR/CCPA - Stöder radering av användardata via GDPR-API:et
- EU-dataresidens - EU-datacenter tillgängligt för europeisk efterlevnad