Conector de Mailchimp
Conecta tu cuenta de Mailchimp con Brevo a través de Tajo para una migración fluida de audiencias, sincronización de datos de campañas y automatización de marketing unificada entre ambas plataformas.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Mailchimp |
| Categoría | Marketing |
| Complejidad de configuración | Fácil |
| Integración oficial | Sí |
| Datos sincronizados | Contactos, Campañas, Automatizaciones, Eventos |
| URL base de la API | https://{dc}.api.mailchimp.com/3.0 |
Funcionalidades
- Sincronización de audiencias - Migra y sincroniza las audiencias de Mailchimp con las listas de contactos de Brevo
- Datos de campaña - Sincroniza los datos de rendimiento de campañas para un reporting unificado
- Migración de automatizaciones - Asocia las automatizaciones de Mailchimp con workflows de Brevo
- Métricas de engagement - Sincroniza aperturas, clics y rebotes como atributos de Brevo
- Mapeo de segmentos - Replica los segmentos de Mailchimp como listas o segmentos de Brevo
- Datos eCommerce - Sincroniza datos de tienda, producto y pedidos desde Mailchimp eCommerce
- Sincronización de etiquetas - Asocia etiquetas de Mailchimp con atributos de contacto o listas de Brevo
- Migración de plantillas - Exporta plantillas de Mailchimp para usarlas en campañas de Brevo
Requisitos previos
Antes de empezar, asegúrate de tener:
- Una cuenta de Mailchimp (Free, Essentials, Standard o Premium)
- Una clave API o una app OAuth de Mailchimp
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo
Autenticación
Autenticación con clave API
Genera una clave API desde Mailchimp Account > Extras > API Keys.
curl https://{dc}.api.mailchimp.com/3.0/ping \ --user "anystring:{api_key}" \ -H "Content-Type: application/json"El prefijo de data center {dc} es la última parte de tu clave API (por ejemplo, us21).
OAuth 2.0
Para integraciones multi-cuenta:
# Authorization URLhttps://login.mailchimp.com/oauth2/authorize? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}
# Token exchangecurl -X POST https://login.mailchimp.com/oauth2/token \ -d "grant_type=authorization_code" \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "redirect_uri={redirect_uri}" \ -d "code={auth_code}"Data center
Extrae siempre el data center desde tu clave API o desde el endpoint de metadatos de OAuth. Usar un data center incorrecto provocará fallos de autenticación.
Configuración
Configuración básica
connectors: mailchimp: enabled: true api_key: "${MAILCHIMP_API_KEY}" data_center: "us21"
# Data sync options sync: audiences: true campaigns: true automations: true ecommerce: true
# Audience to Brevo list mapping audience_mapping: "Main Audience": 40 "Newsletter": 41 "Customers": 42Asignación de campos
Asocia los merge fields de Mailchimp con los atributos de contacto de Brevo:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
email_address required | string | Email del suscriptor (identificador único) |
FNAME optional | string | Merge field de nombre, se asigna a FIRSTNAME |
LNAME optional | string | Merge field de apellido, se asigna a LASTNAME |
PHONE optional | string | Merge field de teléfono, se asigna a SMS |
status optional | string | Estado de suscripción (subscribed, unsubscribed, cleaned, pending) |
tags optional | array | Etiquetas del suscriptor para segmentación |
stats.avg_open_rate optional | number | Tasa media de apertura de email |
stats.avg_click_rate optional | number | Tasa media de clic de email |
Asignación de merge fields personalizados
field_mapping: # Standard fields email_address: email FNAME: FIRSTNAME LNAME: LASTNAME PHONE: SMS
# Engagement metrics stats.avg_open_rate: AVG_OPEN_RATE stats.avg_click_rate: AVG_CLICK_RATE member_rating: ENGAGEMENT_SCORE
# E-commerce fields ecommerce_data.total_revenue: TOTAL_REVENUE ecommerce_data.number_of_orders: ORDER_COUNT
# Custom merge fields MMERGE5: COMPANY_NAME MMERGE6: CUSTOMER_TYPEEndpoints de la API
Audiencias (listas)
| Método | Endpoint | Descripción |
|---|---|---|
GET | /3.0/lists | Listar todas las audiencias |
GET | /3.0/lists/{list_id} | Obtener los detalles de una audiencia |
GET | /3.0/lists/{list_id}/members | Listar los miembros de una audiencia |
POST | /3.0/lists/{list_id}/members | Añadir un miembro |
PUT | /3.0/lists/{list_id}/members/{hash} | Actualizar un miembro |
POST | /3.0/lists/{list_id} | Alta/baja por lote |
Campañas
| Método | Endpoint | Descripción |
|---|---|---|
GET | /3.0/campaigns | Listar campañas |
GET | /3.0/campaigns/{id} | Obtener detalles de una campaña |
GET | /3.0/reports/{id} | Obtener el informe de una campaña |
GET | /3.0/reports/{id}/email-activity | Obtener la actividad de email |
Automatizaciones
| Método | Endpoint | Descripción |
|---|---|---|
GET | /3.0/automations | Listar automatizaciones |
GET | /3.0/automations/{id} | Obtener detalles de una automatización |
GET | /3.0/automations/{id}/emails | Listar los emails de una automatización |
eCommerce
| Método | Endpoint | Descripción |
|---|---|---|
GET | /3.0/ecommerce/stores | Listar las tiendas conectadas |
GET | /3.0/ecommerce/stores/{id}/customers | Listar clientes de la tienda |
GET | /3.0/ecommerce/stores/{id}/orders | Listar pedidos de la tienda |
GET | /3.0/ecommerce/stores/{id}/products | Listar productos de la tienda |
Eventos
Eventos de campaña
| Evento | Disparador | Caso de uso |
|---|---|---|
campaign.sent | Campaña entregada | Seguimiento de rendimiento |
campaign.opened | Email abierto | Scoring de engagement |
campaign.clicked | Clic en enlace | Seguimiento de intereses |
campaign.bounced | Email rebotado | Higiene de la lista |
Eventos de suscriptor
| Evento | Disparador | Caso de uso |
|---|---|---|
subscribe | Nuevo suscriptor añadido | Flujo de bienvenida |
unsubscribe | Baja del suscriptor | Gestión de preferencias |
profile | Perfil actualizado | Sincronización de atributos |
cleaned | Email limpiado (rebotado) | Mantenimiento de la lista |
Eventos eCommerce
| Evento | Disparador | Caso de uso |
|---|---|---|
ecommerce.order | Pedido realizado | Flujo post-compra |
ecommerce.cart | Carrito actualizado | Recuperación de carrito abandonado |
Ejemplos de código
Inicializar el conector
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Mailchimpawait tajo.connectors.connect('mailchimp', { apiKey: process.env.MAILCHIMP_API_KEY});Migrar audiencias a Brevo
// Full audience migration from Mailchimp to Brevoawait tajo.connectors.sync('mailchimp', { type: 'full', resources: ['audiences', 'campaigns', 'ecommerce'], options: { preserveTags: true, migrateSegments: true, includeUnsubscribed: false }});
// Check migration statusconst status = await tajo.connectors.status('mailchimp');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsMigrated: 52000,// campaignsSynced: 245,// segmentsMapped: 18// }Sincronizar datos de engagement de campañas
// Sync campaign performance to Brevo attributesawait tajo.connectors.sync('mailchimp', { type: 'incremental', resources: ['campaigns'], options: { syncEngagement: true, updateContactMetrics: true, since: '2024-01-01' }});Límites de velocidad
Límites de velocidad de la Marketing API de Mailchimp:
| Tipo | Límite | Detalles |
|---|---|---|
| Estándar | 10 peticiones simultáneas | Por clave API |
| Operaciones por lote | 500 operaciones por lote | Por petición |
| Límite de exportación | 1 exportación simultánea | Por cuenta |
| Transaccional | 25 peticiones/segundo | Por clave API |
Estrategia ante límites de velocidad
Mailchimp limita las conexiones simultáneas en lugar de las peticiones por segundo. Usa endpoints por lote e implementa lógica de reintento con backoff exponencial ante respuestas 429.
Resolución de problemas
Problemas habituales
| Problema | Causa | Solución |
|---|---|---|
| 401 Unauthorized | Clave API no válida o data center incorrecto | Verifica la clave API y extrae el prefijo dc correcto |
| Miembro ya existe | Email ya presente en la audiencia | Usa PUT en vez de POST para actualizar miembros existentes |
| Estado de cumplimiento | Eliminación RGPD impide el alta | El contacto debe volver a suscribirse mediante un formulario de alta |
| Timeout de lote | Operación por lote demasiado grande | Divide en lotes más pequeños de 500 operaciones |
| Faltan merge fields | Campos personalizados no creados | Crea los merge fields en Mailchimp antes del mapeo |
Modo depuración
Activa el registro detallado:
connectors: mailchimp: debug: true log_level: verbose log_api_calls: trueProbar la conexión
tajo connectors test mailchimp# ✓ API connection successful# ✓ Audiences readable# ✓ Campaigns readable# ✓ E-commerce data accessible# ✓ Webhook configuredBuenas prácticas
- Usa operaciones por lote - Usa batch subscribe/unsubscribe para actualizaciones masivas
- Preserva el estado del suscriptor - Respeta el consentimiento de suscripción durante la migración
- Asocia primero los merge fields - Crea los atributos correspondientes en Brevo antes de sincronizar
- Sincroniza datos de engagement - Importa tasas de apertura/clic para segmentación histórica
- Gestiona los estados de cumplimiento - Respeta los estados de RGPD y eliminación permanente
- Usa sincronización incremental - Sincroniza solo los cambios desde la última sincronización para reducir el uso de la API
Seguridad
- Autenticación con clave API - Clave secreta enviada como contraseña de HTTP Basic Auth
- OAuth 2.0 - Autorización basada en tokens para acceso multi-cuenta
- Cifrado TLS - Toda la comunicación con la API se cifra vía HTTPS
- Verificación de webhooks - Valida el origen del webhook con un secreto compartido
- Aislamiento por data center - Datos almacenados en data centers específicos por región