Mixpanel Connector
Verbinde Mixpanel über Tajo mit Brevo, um Produktanalyse mit Marketingautomatisierung zu verknüpfen. Synchronisiere Nutzer:innen-Profile, Verhaltens-Events und Kohorten, um datengetriebene Kampagnen auf Basis echter Produktnutzung zu erstellen.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Mixpanel |
| Kategorie | Analytics (Custom) |
| Einrichtungsaufwand | Mittel |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Events, Profile, Kohorten, Gruppen |
| Verfügbare Skills | 7 |
Funktionen
- Event-Aufnahme - Importiere Track-Events über Mixpanels Ingestion-API in Brevo-Workflows
- Profil-Synchronisierung - Ordne Mixpanel-Profil-Eigenschaften Brevo-Kontaktattributen zu
- Kohorten-Export - Synchronisiere Mixpanel-Kohorten mit Brevo-Kontaktlisten für zielgerichtete Kampagnen
- Gruppen-Analyse - Synchronisiere gruppenbezogene Daten für B2B-Account-based Marketing
- Identitätsmanagement - Nutze Mixpanels Identity-Merge für einheitliche Kundenprofile
- JQL-Abfragen - Führe benutzerdefinierte JQL-Abfragen aus, um spezifische Datensätze für Brevo zu extrahieren
- Lookup-Tabellen - Synchronisiere Anreicherungsdaten aus Mixpanel-Lookup-Tabellen
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Mixpanel-Konto mit einem angelegten Projekt
- Dein Mixpanel-Projekt-Token für das clientseitige Tracking
- Ein Service-Account mit passenden Berechtigungen für serverseitigen API-Zugriff
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit API-Zugangsdaten
Authentifizierung
Service-Accounts (Empfohlen)
Mixpanel empfiehlt die Nutzung von Service-Accounts für die API-Authentifizierung. Service-Accounts verwenden HTTP Basic Auth mit Benutzer:innen-Name (Service-Account-Benutzer:innen-Name) und Passwort (Service-Account-Secret).
# Service Account authenticationcurl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"Projekt-Token
Das Projekt-Token wird für clientseitiges Event-Tracking verwendet und kann sicher in den Client-Code aufgenommen werden:
// Client-side initializationmixpanel.init("YOUR_PROJECT_TOKEN");OAuth (für Partner-Integrationen)
Für App-Integrationen, die auf mehrere Projekte zugreifen:
curl https://mixpanel.com/api/2.0/engage \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN"Konfiguration
Grundeinrichtung
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: 17Event-Zuordnung
Ordne Mixpanel-Events Brevo-Event-Typen zu:
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"Zuordnung von Profil-Eigenschaften
Ordne Mixpanel-Nutzer:innen-Eigenschaften Brevo-Kontaktattributen zu:
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-Endpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
POST | /import | Events importieren (Ingestion API) |
POST | /track | Events tracken (clientseitig) |
POST | /engage#$set | Profil-Eigenschaften setzen |
POST | /engage#$set_once | Eigenschaften nur setzen, wenn noch nicht gesetzt |
POST | /engage#$delete | Ein Nutzer:innen-Profil löschen |
POST | /engage#$union | Werte zu Listen-Eigenschaften vereinigen |
POST | /groups | Gruppen-Profil-Eigenschaften setzen |
GET | /export | Rohe Event-Daten exportieren |
POST | /cohorts/list | Gespeicherte Kohorten auflisten |
POST | /engage/query | Nutzer:innen-Profile abfragen |
POST | /jql | Benutzerdefinierte JQL-Abfragen ausführen |
GET | /segmentation | Segmentierungs-Reports abfragen |
GET | /retention | Retention-Reports abfragen |
GET | /funnels | Funnel-Reports abfragen |
Code-Beispiele
Mixpanel-Connector initialisieren
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});Events über die Ingestion-API importieren
// 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 }Kohorte mit Brevo synchronisieren
// 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// }Profil-Eigenschaften setzen
// 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 } }])});Ratenbegrenzungen
| API | Limit | Details |
|---|---|---|
| Ingestion API | 2 GB/Min. | Pro Projekt |
| Track API | Kein hartes Limit | Best-Effort-Zustellung |
| Engage API | 2.000 Updates/Batch | Max. 2 GB/Min. pro Projekt |
| Query API | 60 Anfragen/Stunde | Pro Projekt (Service-Account) |
| Export API | 60 Anfragen/Stunde | Max. 100 Tage pro Abfrage |
| JQL API | 60 Anfragen/Stunde | Pro Projekt |
| Kohorten-Export | 60 Anfragen/Stunde | Pro Projekt |
Event-Deduplizierung
Mixpanel dedupliziert Events über die Eigenschaft $insert_id. Gib stets eine eindeutige $insert_id an, um doppelte Events bei fehlgeschlagenen Import-Wiederholungen zu verhindern.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| Events erscheinen nicht | Falsches Projekt-Token | Prüfen, dass das Token zum Zielprojekt passt |
| Profil-Eigenschaften fehlen | Falsche API verwendet | Für Profil-Eigenschaften /engage#$set verwenden, nicht /track |
| Kohorten-Export schlägt fehl | Unzureichende Berechtigungen | Sicherstellen, dass der Service-Account Admin- oder Analyst-Rolle hat |
| Doppelte Events | Fehlende $insert_id | Eindeutige $insert_id für jedes Event angeben |
| 402 Payment Required | Datenlimit überschritten | Mixpanel-Plan-Limits prüfen und ggf. upgraden |
| EU-Daten werden nicht geroutet | Falsche Datenresidenz | Für EU-Projekte api-eu.mixpanel.com verwenden |
| Identity-Merge-Probleme | Falsche distinct_id | Mixpanels Best Practices für Identity-Management befolgen |
Best Practices
- Service-Accounts nutzen - Bevorzuge Service-Accounts gegenüber dem Projekt-Secret für serverseitige Authentifizierung
$insert_idangeben - Setze stets eine eindeutige Insert-ID zur Event-Deduplizierung- Profil-Updates bündeln - Sende bis zu 2.000 Profil-Updates pro Anfrage
- EU-Endpunkte verwenden - Nutze für EU-Datenresidenz
api-eu.mixpanel.comfür alle API-Aufrufe - Kohorten nach Zeitplan synchronisieren - Richte tägliches oder wöchentliches Kohorten-Sync statt Dauer-Polling ein
- Reservierte Eigenschaften zuordnen - Nutze Mixpanels reservierte Eigenschaften (
$email,$first_name) für Profildaten - Aufnahme überwachen - Prüfe auf der Events-Seite von Mixpanel, ob Events korrekt eingehen
Sicherheit
- Nur HTTPS - Die gesamte API-Kommunikation erfordert TLS-Verschlüsselung
- Service-Account-Isolation - Scope-basierter Zugriff pro Projekt mit rollenbasierten Berechtigungen
- Event-Deduplizierung - Eingebaute Deduplizierung über
$insert_idverhindert Datenintegritätsprobleme - SOC 2 Type II - Mixpanel ist SOC-2-Type-II-zertifiziert
- DSGVO/CCPA - Unterstützt Datenlöschungen per GDPR-API
- EU-Datenresidenz - EU-Rechenzentrum für europäische Compliance verfügbar