Conector de Mixpanel
Conecta Mixpanel con Brevo a través de Tajo para unir la analítica de producto con la automatización de marketing. Sincroniza perfiles de usuario, eventos de comportamiento y cohortes para crear campañas basadas en datos reales de uso del producto.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Mixpanel |
| Categoría | Analítica (Personalizada) |
| Complejidad de configuración | Media |
| Integración oficial | No |
| Datos sincronizados | Eventos, Perfiles, Cohortes, Grupos |
| Skills disponibles | 7 |
Funcionalidades
- Ingesta de eventos - Importa eventos de track a través de la Ingestion API de Mixpanel hacia los workflows de Brevo
- Sincronización de perfiles de usuario - Asocia las propiedades de perfil de Mixpanel con los atributos de contacto de Brevo
- Exportación de cohortes - Sincroniza cohortes de Mixpanel con listas de contactos de Brevo para campañas segmentadas
- Analítica de grupos - Sincroniza datos a nivel de grupo para marketing basado en cuentas B2B
- Gestión de identidad - Aprovecha la fusión de identidades de Mixpanel para perfiles de cliente unificados
- Consultas JQL - Ejecuta consultas JQL personalizadas para extraer conjuntos de datos específicos para Brevo
- Tablas lookup - Sincroniza datos de enriquecimiento desde las tablas lookup de Mixpanel
Requisitos previos
Antes de empezar, asegúrate de tener:
- Una cuenta de Mixpanel con un proyecto creado
- Tu Project Token de Mixpanel para el tracking del lado del cliente
- Una Service Account con los permisos adecuados para el acceso a la API del lado del servidor
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo con credenciales de API
Autenticación
Service Accounts (recomendado)
Mixpanel recomienda usar Service Accounts para la autenticación con la API. Las Service Accounts usan HTTP Basic Auth con el nombre de usuario (service account username) y la contraseña (service account secret).
# Service Account authenticationcurl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"Project Token
El Project Token se usa para el tracking de eventos del lado del cliente y es seguro incluirlo en el código del cliente:
// Client-side initializationmixpanel.init("YOUR_PROJECT_TOKEN");OAuth (para integraciones de partners)
Para integraciones de apps que acceden a varios proyectos:
curl https://mixpanel.com/api/2.0/engage \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN"Configuración
Configuración básica
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: 17Asignación de eventos
Asocia los eventos de Mixpanel con los tipos de evento de 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"Asignación de propiedades de perfil
Asocia las propiedades de usuario de Mixpanel con los atributos de contacto de 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 de la API
| Método | Endpoint | Descripción |
|---|---|---|
POST | /import | Importar eventos (Ingestion API) |
POST | /track | Enviar eventos (lado del cliente) |
POST | /engage#$set | Establecer propiedades de perfil de usuario |
POST | /engage#$set_once | Establecer propiedades solo si no están definidas |
POST | /engage#$delete | Eliminar un perfil de usuario |
POST | /engage#$union | Unir propiedades de tipo lista |
POST | /groups | Establecer propiedades de perfil de grupo |
GET | /export | Exportar datos de eventos en crudo |
POST | /cohorts/list | Listar cohortes guardadas |
POST | /engage/query | Consultar perfiles de usuario |
POST | /jql | Ejecutar consultas JQL personalizadas |
GET | /segmentation | Consultar reportes de segmentación |
GET | /retention | Consultar reportes de retención |
GET | /funnels | Consultar reportes de embudo |
Ejemplos de código
Inicializar el conector de 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});Importar eventos vía 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 }Sincronizar una cohorte con 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// }Establecer propiedades de perfil de usuario
// 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 } }])});Límites de velocidad
| API | Límite | Detalles |
|---|---|---|
| Ingestion API | 2 GB/min | Por proyecto |
| Track API | Sin límite estricto | Entrega best-effort |
| Engage API | 2.000 actualizaciones/lote | Máx. 2 GB/min por proyecto |
| Query API | 60 peticiones/hora | Por proyecto (Service Account) |
| Export API | 60 peticiones/hora | Máx. 100 días por consulta |
| JQL API | 60 peticiones/hora | Por proyecto |
| Cohort Export | 60 peticiones/hora | Por proyecto |
Deduplicación de eventos
Mixpanel deduplica los eventos mediante la propiedad $insert_id. Incluye siempre un $insert_id único para evitar duplicar eventos al reintentar importaciones fallidas.
Resolución de problemas
| Problema | Causa | Solución |
|---|---|---|
| Los eventos no aparecen | Project token incorrecto | Verifica que el token corresponda al proyecto objetivo |
| Faltan propiedades del perfil | API incorrecta | Usa /engage#$set para propiedades de perfil, no /track |
| Falla la exportación de cohorte | Permisos insuficientes | Asegúrate de que la Service Account tenga rol Admin o Analyst |
| Eventos duplicados | Falta $insert_id | Incluye un $insert_id único en cada evento |
| 402 Payment Required | Se superaron los límites de datos | Revisa los límites del plan de Mixpanel y actualiza si es necesario |
| Los datos de UE no se enrutan | Residencia de datos incorrecta | Usa api-eu.mixpanel.com para proyectos en UE |
| Problemas de fusión de identidad | distinct_id incorrecto | Sigue las buenas prácticas de gestión de identidad de Mixpanel |
Buenas prácticas
- Usa Service Accounts - Prefiere las Service Accounts frente al Project Secret para la autenticación del lado del servidor
- Incluye
$insert_id- Establece siempre un insert ID único para la deduplicación de eventos - Agrupa las actualizaciones de perfil - Envía hasta 2.000 actualizaciones de perfil por petición para mayor eficiencia
- Usa endpoints de UE - Para residencia de datos en UE, usa
api-eu.mixpanel.comen todas las llamadas a la API - Sincroniza cohortes de forma programada - Configura sincronizaciones diarias o semanales en lugar de polling continuo
- Asigna las propiedades reservadas - Usa las propiedades reservadas de Mixpanel (
$email,$first_name) para los datos de perfil - Supervisa la ingesta - Usa la página de Events de Mixpanel para verificar que los eventos se reciben correctamente
Seguridad
- Solo HTTPS - Toda la comunicación con la API requiere cifrado TLS
- Aislamiento de Service Accounts - Acceso limitado por proyecto con permisos basados en roles
- Deduplicación de eventos - La deduplicación integrada vía
$insert_idevita problemas de integridad de datos - SOC 2 Tipo II - Mixpanel está certificado en SOC 2 Tipo II
- RGPD/CCPA - Admite la eliminación de datos de usuario mediante la API del RGPD
- Residencia de datos en UE - Centro de datos en UE disponible para cumplimiento normativo europeo