Connettore Mixpanel
Collega Mixpanel a Brevo tramite Tajo per unire product analytics e marketing automation. Sincronizza profili utente, eventi comportamentali e coorti per creare campagne data-driven basate sull’utilizzo reale del prodotto.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | Mixpanel |
| Categoria | Analytics (Custom) |
| Complessità di setup | Media |
| Integrazione ufficiale | No |
| Dati sincronizzati | Eventi, Profili, Coorti, Gruppi |
| Skill disponibili | 7 |
Funzionalità
- Ingestione eventi - Importa eventi track tramite l’Ingestion API di Mixpanel nei flussi Brevo
- Sync profilo utente - Mappa le proprietà di profilo utente Mixpanel sugli attributi dei contatti Brevo
- Export coorti - Sincronizza le coorti Mixpanel su liste contatti Brevo per campagne mirate
- Group analytics - Sincronizza dati a livello di gruppo per il marketing account-based B2B
- Identity management - Sfrutta l’identity merge di Mixpanel per profili cliente unificati
- Query JQL - Esegui query JQL personalizzate per estrarre dataset specifici per Brevo
- Lookup table - Sincronizza dati di arricchimento dalle lookup table di Mixpanel
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account Mixpanel con un progetto creato
- Il tuo Project Token Mixpanel per il tracking client-side
- Un Service Account con i permessi appropriati per l’accesso API server-side
- Un account Brevo con accesso API
- Un account Tajo con credenziali API
Autenticazione
Service Account (consigliato)
Mixpanel consiglia l’uso dei Service Account per l’autenticazione API. I Service Account usano HTTP Basic Auth con username (username del service account) e password (secret del service account).
# Autenticazione Service Accountcurl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"Project Token
Il Project Token viene usato per il tracking eventi client-side ed è sicuro da includere nel codice client:
// Inizializzazione client-sidemixpanel.init("YOUR_PROJECT_TOKEN");OAuth (per integrazioni partner)
Per integrazioni app che accedono a più progetti:
curl https://mixpanel.com/api/2.0/engage \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN"Configurazione
Setup di base
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" # oppure "EU"
# Opzioni di sync dei dati sync: events: true profiles: true cohorts: true groups: false
# Assegnazione liste Brevo lists: all_users: 15 engaged_users: 16 at_risk: 17Mapping degli eventi
Mappa gli eventi Mixpanel sui tipi di evento Brevo:
event_mapping: # Evento Mixpanel -> evento Brevo "Purchase": "order_completed" "Sign Up": "customer_created" "Add to Cart": "cart_updated" "Page View": "page_viewed" "$experiment_started": "experiment_started"
# Eventi custom "Feature Activated": "feature_used" "Subscription Renewed": "subscription_renewed"Mapping delle proprietà del profilo
Mappa le proprietà utente Mixpanel sugli attributi dei contatti 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: LTVEndpoint API
| Metodo | Endpoint | Descrizione |
|---|---|---|
POST | /import | Importa eventi (Ingestion API) |
POST | /track | Traccia eventi (client-side) |
POST | /engage#$set | Imposta proprietà del profilo utente |
POST | /engage#$set_once | Imposta proprietà solo se non già impostate |
POST | /engage#$delete | Elimina un profilo utente |
POST | /engage#$union | Union su proprietà di tipo lista |
POST | /groups | Imposta proprietà del profilo di gruppo |
GET | /export | Esporta dati evento raw |
POST | /cohorts/list | Elenca le coorti salvate |
POST | /engage/query | Interroga i profili utente |
POST | /jql | Esegui query JQL personalizzate |
GET | /segmentation | Interroga i report di segmentazione |
GET | /retention | Interroga i report di retention |
GET | /funnels | Interroga i report di funnel |
Esempi di codice
Inizializzare il connettore Mixpanel
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Collega un progetto Mixpanelawait 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});Importare eventi tramite Ingestion API
// Importa eventi su Mixpanel (inoltrati automaticamente a 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" } } ])});
// Risposta attesa: { "code": 200, "status": "OK", "num_records_imported": 1 }Sincronizzare una coorte su Brevo
// Esporta una coorte Mixpanel e sincronizzala su una lista Brevoconst 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// }Impostare proprietà del profilo utente
// Imposta proprietà utente tramite la 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 } }])});Limiti di rate
| API | Limite | Dettagli |
|---|---|---|
| Ingestion API | 2 GB/min | Per progetto |
| Track API | Nessun limite fisso | Consegna best-effort |
| Engage API | 2.000 update/batch | Max 2 GB/min per progetto |
| Query API | 60 richieste/ora | Per progetto (Service Account) |
| Export API | 60 richieste/ora | Max 100 giorni per query |
| JQL API | 60 richieste/ora | Per progetto |
| Cohort Export | 60 richieste/ora | Per progetto |
Deduplicazione eventi
Mixpanel deduplica gli eventi usando la proprietà $insert_id. Includi sempre un $insert_id univoco per evitare eventi duplicati quando fai retry di import falliti.
Risoluzione dei problemi
| Problema | Causa | Soluzione |
|---|---|---|
| Eventi non visibili | Project token errato | Verifica che il token corrisponda al progetto target |
| Proprietà del profilo mancanti | API errata | Usa /engage#$set per le proprietà del profilo, non /track |
| Export coorte fallisce | Permessi insufficienti | Assicurati che il Service Account abbia ruolo Admin o Analyst |
| Eventi duplicati | $insert_id mancante | Includi un $insert_id univoco su ogni evento |
| 402 Payment Required | Oltre i limiti di dati | Controlla i limiti del piano Mixpanel ed eventualmente aggiorna |
| Dati EU non instradati | Data residency errata | Usa api-eu.mixpanel.com per i progetti EU |
| Problemi di identity merge | distinct_id errato | Segui le best practice di identity management di Mixpanel |
Best practice
- Usa i Service Account - Preferisci i Service Account al Project Secret per l’autenticazione server-side
- Includi
$insert_id- Imposta sempre un insert ID univoco per la deduplicazione eventi - Raggruppa gli update di profilo in batch - Invia fino a 2.000 update di profilo per richiesta per efficienza
- Usa gli endpoint EU - Per la data residency EU, usa
api-eu.mixpanel.comper tutte le chiamate API - Sincronizza le coorti secondo schedule - Imposta sync di coorte giornaliero o settimanale anziché polling continuo
- Mappa le proprietà riservate - Usa le proprietà riservate di Mixpanel (
$email,$first_name) per i dati di profilo - Monitora l’ingestione - Usa la pagina Events di Mixpanel per verificare che gli eventi vengano ricevuti correttamente
Sicurezza
- Solo HTTPS - Tutte le comunicazioni API richiedono cifratura TLS
- Isolamento Service Account - Accesso limitato per progetto con permessi basati su ruolo
- Deduplicazione eventi - Dedup integrata tramite
$insert_idpreviene problemi di integrità dati - SOC 2 Type II - Mixpanel è certificata SOC 2 Type II
- GDPR/CCPA - Supporta la cancellazione dei dati utente tramite GDPR API
- Residenza dati EU - Data center EU disponibile per la compliance europea