Connecteur Mixpanel
Connectez Mixpanel à Brevo via Tajo pour relier l’analyse produit à l’automatisation marketing. Synchronisez profils utilisateur, événements comportementaux et cohortes pour créer des campagnes pilotées par les données réelles d’usage produit.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Mixpanel |
| Catégorie | Analytics (Custom) |
| Complexité d’installation | Moyenne |
| Intégration officielle | Non |
| Données synchronisées | Événements, profils, cohortes, groupes |
| Skills disponibles | 7 |
Fonctionnalités
- Ingestion d’événements, Importez les événements track via l’Ingestion API de Mixpanel dans les workflows Brevo
- Synchronisation des profils utilisateur, Mappez les propriétés de profil utilisateur Mixpanel vers les attributs de contact Brevo
- Export de cohortes, Synchronisez les cohortes Mixpanel vers des listes de contacts Brevo pour des campagnes ciblées
- Analytics de groupes, Synchronisez les données au niveau groupe pour le marketing B2B basé sur les comptes
- Gestion d’identité, Exploitez l’identity merge de Mixpanel pour des profils clients unifiés
- Requêtes JQL, Exécutez des requêtes JQL personnalisées pour extraire des jeux de données spécifiques vers Brevo
- Lookup tables, Synchronisez les données d’enrichissement depuis les lookup tables Mixpanel
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un compte Mixpanel avec un projet créé
- Votre Project Token Mixpanel pour le tracking côté client
- Un Service Account avec les permissions adéquates pour l’accès API côté serveur
- Un compte Brevo avec accès API
- Un compte Tajo avec identifiants API
Authentification
Service Accounts (recommandé)
Mixpanel recommande d’utiliser des Service Accounts pour l’authentification API. Les Service Accounts utilisent HTTP Basic Auth avec un nom d’utilisateur (username du service account) et un mot de passe (secret du service account).
# Authentification Service Accountcurl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"Project Token
Le Project Token est utilisé pour le tracking d’événements côté client et peut être inclus en toute sécurité dans le code client :
// Initialisation côté clientmixpanel.init("YOUR_PROJECT_TOKEN");OAuth (pour les intégrations partenaires)
Pour les intégrations d’applications qui accèdent à plusieurs projets :
curl https://mixpanel.com/api/2.0/engage \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN"Configuration
Configuration de 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" # ou "EU"
# Options de synchronisation des données sync: events: true profiles: true cohorts: true groups: false
# Attribution de listes Brevo lists: all_users: 15 engaged_users: 16 at_risk: 17Mappage des événements
Mappez les événements Mixpanel vers des types d’événements Brevo :
event_mapping: # Événement Mixpanel -> Événement Brevo "Purchase": "order_completed" "Sign Up": "customer_created" "Add to Cart": "cart_updated" "Page View": "page_viewed" "$experiment_started": "experiment_started"
# Événements personnalisés "Feature Activated": "feature_used" "Subscription Renewed": "subscription_renewed"Mappage des propriétés de profil
Mappez les propriétés utilisateur Mixpanel vers les attributs de contact 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: LTVEndpoints API
| Méthode | Endpoint | Description |
|---|---|---|
POST | /import | Importer des événements (Ingestion API) |
POST | /track | Tracker des événements (côté client) |
POST | /engage#$set | Définir les propriétés de profil utilisateur |
POST | /engage#$set_once | Définir les propriétés uniquement si non déjà définies |
POST | /engage#$delete | Supprimer un profil utilisateur |
POST | /engage#$union | Union vers des propriétés de type liste |
POST | /groups | Définir les propriétés de profil de groupe |
GET | /export | Exporter les données d’événements brutes |
POST | /cohorts/list | Lister les cohortes sauvegardées |
POST | /engage/query | Interroger les profils utilisateur |
POST | /jql | Exécuter des requêtes JQL personnalisées |
GET | /segmentation | Interroger les rapports de segmentation |
GET | /retention | Interroger les rapports de rétention |
GET | /funnels | Interroger les rapports d’entonnoirs |
Exemples de code
Initialiser le connecteur Mixpanel
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connecter le projet 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});Importer des événements via l’Ingestion API
// Importer des événements vers Mixpanel (transférés automatiquement vers 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" } } ])});
// Réponse attendue : { "code": 200, "status": "OK", "num_records_imported": 1 }Synchroniser une cohorte vers Brevo
// Exporter une cohorte Mixpanel et la synchroniser vers une liste 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// }Définir les propriétés de profil utilisateur
// Définir les propriétés utilisateur via l'API Engageconst 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 } }])});Limites de débit
| API | Limite | Détails |
|---|---|---|
| Ingestion API | 2 Go/min | Par projet |
| Track API | Pas de limite stricte | Livraison best-effort |
| Engage API | 2 000 mises à jour/lot | Max 2 Go/min par projet |
| Query API | 60 requêtes/heure | Par projet (Service Account) |
| Export API | 60 requêtes/heure | Max 100 jours par requête |
| JQL API | 60 requêtes/heure | Par projet |
| Cohort Export | 60 requêtes/heure | Par projet |
Déduplication des événements
Mixpanel déduplique les événements à l’aide de la propriété $insert_id. Incluez toujours un $insert_id unique pour éviter les événements en double lors des réessais d’imports échoués.
Dépannage
| Problème | Cause | Solution |
|---|---|---|
| Les événements n’apparaissent pas | Mauvais project token | Vérifiez que le token correspond au projet cible |
| Propriétés de profil manquantes | Mauvaise API utilisée | Utilisez /engage#$set pour les propriétés de profil, pas /track |
| L’export de cohorte échoue | Permissions insuffisantes | Assurez-vous que le Service Account a le rôle Admin ou Analyst |
| Événements en double | $insert_id manquant | Incluez un $insert_id unique sur chaque événement |
| 402 Payment Required | Limites de données dépassées | Vérifiez les limites du plan Mixpanel et upgradez si nécessaire |
| Les données UE ne sont pas routées | Mauvaise résidence des données | Utilisez api-eu.mixpanel.com pour les projets UE |
| Problèmes d’identity merge | distinct_id incorrect | Suivez les bonnes pratiques de gestion d’identité de Mixpanel |
Bonnes pratiques
- Utilisez les Service Accounts, Préférez les Service Accounts au Project Secret pour l’authentification côté serveur
- Incluez
$insert_id, Définissez toujours un ID d’insertion unique pour la déduplication d’événements - Groupez les mises à jour de profil, Envoyez jusqu’à 2 000 mises à jour de profil par requête pour l’efficacité
- Utilisez les endpoints UE, Pour la résidence des données UE, utilisez
api-eu.mixpanel.compour tous les appels API - Synchronisez les cohortes à intervalles, Mettez en place une synchronisation de cohorte quotidienne ou hebdomadaire plutôt qu’un polling continu
- Mappez les propriétés réservées, Utilisez les propriétés réservées de Mixpanel (
$email,$first_name) pour les données de profil - Surveillez l’ingestion, Utilisez la page Events de Mixpanel pour vérifier que les événements sont bien reçus
Sécurité
- HTTPS uniquement, Toutes les communications API nécessitent un chiffrement TLS
- Isolation des Service Accounts, Accès limité par projet avec permissions basées sur les rôles
- Déduplication d’événements, Dédup intégrée via
$insert_idpour éviter les problèmes d’intégrité des données - SOC 2 Type II, Mixpanel est certifié SOC 2 Type II
- RGPD/CCPA, Prend en charge la suppression des données utilisateur via l’API RGPD
- Résidence des données UE, Centre de données UE disponible pour la conformité européenne