---
title: "Conector de Mixpanel"
description: "Guía completa de integración con Mixpanel para sincronizar eventos de analítica de producto, perfiles de usuario y cohortes con Brevo a través de Tajo."
url: https://tajo.io/es/docs/connectors/custom/mixpanel/
markdown: https://tajo.io/es/docs/connectors/custom/mixpanel.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Mixpanel

Estado del conector: Planificado Aún no está construido. Tajo no ejecuta este conector hoy.

| Campo de origen | Campo de destino | Valor de ejemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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:

1. Una cuenta de Mixpanel con un proyecto creado
2. Tu Project Token de Mixpanel para el tracking del lado del cliente
3. Una Service Account con los permisos adecuados para el acceso a la API del lado del servidor
4. Una cuenta de Brevo con acceso a la API
5. 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).

```bash
# Service Account authentication
curl 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:

```javascript
// Client-side initialization
mixpanel.init("YOUR_PROJECT_TOKEN");
```

### OAuth (para integraciones de partners)

Para integraciones de apps que acceden a varios proyectos:

```bash
curl https://mixpanel.com/api/2.0/engage \
  -H "Authorization: Bearer YOUR_OAUTH_TOKEN"
```

## Configuración

### Configuración básica

```yaml
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: 17
```

### Asignación de eventos

Asocia los eventos de Mixpanel con los tipos de evento de Brevo:

```yaml
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:

```yaml
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: LTV
```

## Endpoints 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

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Mixpanel project
await 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

```javascript
// 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

```javascript
// Export a Mixpanel cohort and sync to a Brevo list
const 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

```javascript
// Set user properties via the Engage API
const 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: {
      $email: "jane@example.com",
      $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

1. **Usa Service Accounts** - Prefiere las Service Accounts frente al Project Secret para la autenticación del lado del servidor
2. **Incluye `$insert_id`** - Establece siempre un insert ID único para la deduplicación de eventos
3. **Agrupa las actualizaciones de perfil** - Envía hasta 2.000 actualizaciones de perfil por petición para mayor eficiencia
4. **Usa endpoints de UE** - Para residencia de datos en UE, usa `api-eu.mixpanel.com` en todas las llamadas a la API
5. **Sincroniza cohortes de forma programada** - Configura sincronizaciones diarias o semanales en lugar de polling continuo
6. **Asigna las propiedades reservadas** - Usa las propiedades reservadas de Mixpanel (`$email`, `$first_name`) para los datos de perfil
7. **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_id` evita 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

## Recursos relacionados

- [Conector de Segment](https://tajo.io/es/docs/connectors/custom/segment)
- [Conector de Amplitude](https://tajo.io/es/docs/connectors/custom/amplitude)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
- [API de eventos de Brevo](https://tajo.io/es/docs/events-engagement/create-event)
