Conector de Iterable
Conecta tu plataforma de growth marketing Iterable con Brevo para unificar el engagement del cliente, coordinar campañas multicanal y consolidar la analítica entre herramientas de marketing.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Iterable |
| Categoría | Marketing |
| Complejidad de configuración | Moderada |
| Integración oficial | No |
| Datos sincronizados | Usuarios, Eventos, Campañas, Catálogos |
| Tipo de API | REST API |
| Autenticación | Clave API |
| URL base | https://api.iterable.com/api/ |
Funcionalidades
- Sincronización de perfiles de usuario - Sincronización bidireccional de datos de usuario con contactos de Brevo
- Analítica de campañas - Sincroniza métricas de envío, apertura y clic para un reporting unificado
- Datos de experimentos - Registra los resultados de tests A/B y las variantes ganadoras
- Sincronización de catálogos - Sincroniza catálogos de productos y de contenido entre plataformas
- Eventos de workflow - Reenvía eventos de disparo y finalización de workflows a Brevo
- Sincronización de preferencias de canal - Replica las preferencias de comunicación del usuario en Brevo
Requisitos previos
Antes de empezar, asegúrate de tener:
- Una cuenta de Iterable con acceso a la API
- Una clave API de Iterable con los permisos adecuados
- El project ID de Iterable
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo con suscripción activa
Autenticación
Iterable usa autenticación con clave API pasada en la cabecera de la petición.
Crear una clave API
- Inicia sesión en el panel de Iterable
- Ve a Integrations > API Keys
- Haz clic en New API Key
- Ponle el nombre “Tajo Integration”
- Selecciona el tipo de clave Server-side
- Concede los siguientes permisos:
Users: Read/WriteEvents: Read/WriteCampaigns: ReadLists: Read/WriteCatalogs: ReadExperiments: ReadWorkflows: ReadTemplates: ReadChannels: ReadMessage Types: ReadEl tipo de clave importa
Usa siempre una clave API Server-side para la integración con Tajo. Las claves para móvil o JavaScript tienen permisos restringidos y no pueden acceder a todos los endpoints necesarios.
Conectar con Tajo
tajo connectors install iterable \ --api-key $ITERABLE_API_KEYConfiguración
Configuración básica
connectors: iterable: enabled: true
sync: users: true events: true campaigns: true catalogs: true experiments: true
lists: all_users: 16 engaged_users: 17 inactive_users: 18Asignación de campos
Asocia los campos de usuario de Iterable con los atributos de contacto de Brevo:
field_mapping: # Standard fields userId: ITERABLE_ID email: email firstName: FIRSTNAME lastName: LASTNAME phoneNumber: SMS
# Engagement data signupDate: SIGNUP_DATE totalPurchases: TOTAL_PURCHASES lastPurchaseDate: LAST_PURCHASE
# Custom fields plan_name: PLAN_NAME company_size: COMPANY_SIZE preferred_channel: PREFERRED_CHANNEL lifecycle_stage: LIFECYCLE_STAGEConfiguración de eventos
event_mapping: # Iterable event -> Brevo event purchase: ORDER_PLACED addToCart: CART_UPDATED pageView: PAGE_VIEWED appOpen: APP_OPENED pushOpen: PUSH_ENGAGEDEndpoints de la API
Tajo se integra con los siguientes endpoints de la API de Iterable:
| Endpoint | Método | Propósito |
|---|---|---|
/users/update | POST | Actualizar perfiles de usuario |
/users/{email} | GET | Obtener un usuario por email |
/users/bulkUpdate | POST | Actualización masiva de usuarios |
/events/track | POST | Registrar eventos personalizados |
/events/trackBulk | POST | Registro masivo de eventos |
/campaigns | GET | Listar todas las campañas |
/campaigns/metrics | GET | Datos de rendimiento de campañas |
/experiments/metrics | GET | Resultados de experimentos |
/lists | GET | Listar todas las listas de usuarios |
/lists/subscribe | POST | Añadir usuarios a una lista |
/lists/unsubscribe | POST | Eliminar usuarios de una lista |
/catalogs/{catalogName}/items | GET | Obtener elementos de un catálogo |
/channels | GET | Listar los canales de mensajería |
/export/data.json | GET | Exportar datos brutos de eventos |
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});
await tajo.connectors.connect('iterable', { apiKey: process.env.ITERABLE_API_KEY});Sincronizar usuarios
// Incremental user sync from Iterable to Brevoawait tajo.connectors.sync('iterable', { type: 'incremental', resources: ['users'], since: '2024-01-01', batchSize: 50});
const status = await tajo.connectors.status('iterable');console.log(status);// {// connected: true,// lastSync: '2024-03-15T09:45:00Z',// usersCount: 58700,// campaignsTracked: 42,// eventsProcessed: 210000// }Registrar eventos
// Forward Iterable events to Brevoawait tajo.connectors.handleEvent('iterable', { type: 'custom_event', payload: { eventName: 'subscription_upgraded', dataFields: { previousPlan: 'starter', newPlan: 'pro', mrr: 99.00 } }});Handler de webhooks
// Handle Iterable system webhooksapp.post('/webhooks/iterable', async (req, res) => { const event = req.body;
await tajo.connectors.handleWebhook('iterable', { type: event.eventName, payload: event });
res.status(200).send('OK');});Límites de velocidad
Iterable aplica límites de velocidad según tu plan:
| Plan | Límite de velocidad | Límite del endpoint bulk |
|---|---|---|
| Growth | 500 peticiones/segundo | 500 peticiones/segundo |
| Enterprise | Personalizado | Personalizado |
Límites de endpoints específicos:
| Endpoint | Límite |
|---|---|
/users/update | 500 req/s |
/users/bulkUpdate | 500 req/s (1.000 usuarios por petición) |
/events/track | 500 req/s |
/events/trackBulk | 500 req/s (8.000 eventos por petición) |
/export/data.json | 4 peticiones simultáneas |
Endpoints bulk
Tajo agrupa automáticamente las actualizaciones de usuario (hasta 1.000 por llamada) y los registros de eventos (hasta 8.000 por llamada) para maximizar el rendimiento dentro de los límites de velocidad.
Resolución de problemas
Problemas habituales
| Problema | Causa | Solución |
|---|---|---|
| 401 Unauthorized | Clave API no válida | Verifica la clave en Iterable > Integrations > API Keys |
| Usuarios no se sincronizan | Tipo de clave incorrecto | Asegúrate de usar una clave API Server-side |
| Faltan datos de campaña | Permisos insuficientes | Añade el permiso Campaigns Read a la clave API |
| Timeout de exportación | Gran volumen de datos | Usa filtros de rango de fechas para reducir el tamaño de la exportación |
| Usuarios duplicados | Identificadores inconsistentes | Usa el email como identificador principal de forma coherente |
Modo depuración
connectors: iterable: debug: true log_level: verbose log_api_calls: trueProbar la conexión
tajo connectors test iterable# ✓ API connection successful# ✓ User data accessible# ✓ Campaign list readable# ✓ Event tracking operational# ✓ List management availableBuenas prácticas
- Usa los endpoints bulk - Prefiere siempre
bulkUpdateytrackBulkpara grandes volúmenes de datos - Deduplica por email - Usa el email como identificador coherente entre Iterable y Brevo
- Sincroniza de forma incremental - Usa rangos de fechas para evitar reprocesar datos históricos
- Asocia las preferencias de canal - Sincroniza el estado de opt-in/opt-out para mantener el cumplimiento
- Monitoriza los jobs de exportación - Las exportaciones grandes pueden tardar; configura polling de estado
- Prueba con un proyecto no productivo - Valida las asignaciones antes de sincronizar datos de producción
Seguridad
- Autenticación con clave API - Claves server-side con permisos granulares
- Solo HTTPS - Toda la comunicación con la API se cifra vía TLS 1.2+
- Rotación de claves - Soporte para varias claves API activas durante la rotación
- Almacenamiento cifrado - Credenciales de API cifradas en reposo en Tajo
- Webhooks con JWT - Los payloads de webhook se firman con JWT para su verificación