Iterable Connector
Verbinde deine Iterable-Growth-Marketing-Plattform mit Brevo für ein einheitliches Kunden-Engagement, kanalübergreifende Kampagnenkoordination und konsolidierte Analytics über deine Marketing-Tools hinweg.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Iterable |
| Kategorie | Marketing |
| Einrichtungsaufwand | Mittel |
| Offizielle Integration | Nein |
| Synchronisierte Daten | User, Events, Kampagnen, Kataloge |
| API-Typ | REST API |
| Authentifizierung | API-Schlüssel |
| Basis-URL | https://api.iterable.com/api/ |
Funktionen
- User-Profile-Sync - Bidirektionale Synchronisation der User-Daten mit Brevo-Kontakten
- Kampagnen-Analytics - Synchronisiere Kampagnen-Send-, Open- und Click-Metriken für ein einheitliches Reporting
- Experiment-Daten - Tracke A/B-Test-Ergebnisse und Gewinner-Varianten
- Catalog-Sync - Synchronisiere Produkt- und Content-Kataloge plattformübergreifend
- Workflow-Events - Leite Workflow-Trigger- und Completion-Events an Brevo weiter
- Sync der Channel-Präferenzen - Repliziere Kommunikationspräferenzen der User in Brevo
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Iterable-Konto mit API-Zugriff
- Einen Iterable-API-Schlüssel mit den passenden Berechtigungen
- Deine Iterable-Projekt-ID
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit aktivem Abonnement
Authentifizierung
Iterable nutzt eine API-Schlüssel-Authentifizierung, die im Request-Header übergeben wird.
API-Schlüssel erstellen
- Melde dich in deinem Iterable-Dashboard an
- Navigiere zu Integrations > API Keys
- Klicke auf New API Key
- Benenne ihn “Tajo Integration”
- Wähle den Schlüsseltyp Server-side
- Erteile die folgenden Berechtigungen:
Users: Read/WriteEvents: Read/WriteCampaigns: ReadLists: Read/WriteCatalogs: ReadExperiments: ReadWorkflows: ReadTemplates: ReadChannels: ReadMessage Types: ReadSchlüsseltyp ist entscheidend
Verwende für die Tajo-Integration immer einen Server-side-API-Schlüssel. Mobile- und JavaScript-seitige Schlüssel haben eingeschränkte Berechtigungen und können nicht auf alle erforderlichen Endpoints zugreifen.
Mit Tajo verbinden
tajo connectors install iterable \ --api-key $ITERABLE_API_KEYKonfiguration
Grundeinrichtung
connectors: iterable: enabled: true
sync: users: true events: true campaigns: true catalogs: true experiments: true
lists: all_users: 16 engaged_users: 17 inactive_users: 18Feldzuordnung
Ordne Iterable-User-Felder den Brevo-Kontaktattributen zu:
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_STAGEEvent-Konfiguration
event_mapping: # Iterable event -> Brevo event purchase: ORDER_PLACED addToCart: CART_UPDATED pageView: PAGE_VIEWED appOpen: APP_OPENED pushOpen: PUSH_ENGAGEDAPI-Endpoints
Tajo integriert sich mit den folgenden Iterable-API-Endpoints:
| Endpoint | Methode | Zweck |
|---|---|---|
/users/update | POST | User-Profile aktualisieren |
/users/{email} | GET | User anhand der E-Mail abrufen |
/users/bulkUpdate | POST | User per Batch aktualisieren |
/events/track | POST | Custom Events tracken |
/events/trackBulk | POST | Events per Batch tracken |
/campaigns | GET | Alle Kampagnen auflisten |
/campaigns/metrics | GET | Kampagnen-Performance-Daten |
/experiments/metrics | GET | Experiment-Ergebnisse |
/lists | GET | Alle User-Listen auflisten |
/lists/subscribe | POST | User zu einer Liste hinzufügen |
/lists/unsubscribe | POST | User aus einer Liste entfernen |
/catalogs/{catalogName}/items | GET | Katalog-Einträge abrufen |
/channels | GET | Messaging-Kanäle auflisten |
/export/data.json | GET | Rohe Event-Daten exportieren |
Code-Beispiele
Connector initialisieren
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});User synchronisieren
// 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// }Events tracken
// Forward Iterable events to Brevoawait tajo.connectors.handleEvent('iterable', { type: 'custom_event', payload: { eventName: 'subscription_upgraded', dataFields: { previousPlan: 'starter', newPlan: 'pro', mrr: 99.00 } }});Webhook-Handler
// 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');});Rate Limits
Iterable wendet Rate Limits abhängig von deinem Plan an:
| Plan | Rate Limit | Limit für Bulk-Endpoints |
|---|---|---|
| Growth | 500 Anfragen/Sekunde | 500 Anfragen/Sekunde |
| Enterprise | Individuell | Individuell |
Endpoint-spezifische Limits:
| Endpoint | Limit |
|---|---|
/users/update | 500 req/s |
/users/bulkUpdate | 500 req/s (1.000 User pro Anfrage) |
/events/track | 500 req/s |
/events/trackBulk | 500 req/s (8.000 Events pro Anfrage) |
/export/data.json | 4 parallele Anfragen |
Bulk-Endpoints
Tajo bündelt User-Updates automatisch (bis zu 1.000 pro Aufruf) und Event-Tracks (bis zu 8.000 pro Aufruf), um den Durchsatz zu maximieren und gleichzeitig innerhalb der Rate Limits zu bleiben.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiger API-Schlüssel | Schlüssel in Iterable unter Integrations > API Keys prüfen |
| User werden nicht synchronisiert | Falscher Schlüsseltyp | Stelle sicher, dass du einen Server-side-API-Schlüssel verwendest |
| Fehlende Kampagnendaten | Unzureichende Berechtigungen | Berechtigung “Campaigns Read” zum API-Schlüssel hinzufügen |
| Export-Timeout | Großes Datenvolumen | Datumsbereichsfilter nutzen, um die Exportgröße zu verringern |
| Doppelte User | Inkonsistente Identifier | Die E-Mail konsequent als primären Identifier verwenden |
Debug-Modus
connectors: iterable: debug: true log_level: verbose log_api_calls: trueVerbindung testen
tajo connectors test iterable# ✓ API connection successful# ✓ User data accessible# ✓ Campaign list readable# ✓ Event tracking operational# ✓ List management availableBest Practices
- Bulk-Endpoints nutzen - Bevorzuge
bulkUpdateundtrackBulkfür große Datenmengen - Per E-Mail deduplizieren - Nutze die E-Mail als konsistenten Identifier in Iterable und Brevo
- Inkrementell synchronisieren - Nutze Datumsbereiche, um historische Daten nicht erneut zu verarbeiten
- Channel-Präferenzen mappen - Synchronisiere Opt-in-/Opt-out-Status, um Compliance zu gewährleisten
- Export-Jobs überwachen - Große Exporte können dauern; richte ein Status-Polling ein
- Mit Nicht-Produktivprojekt testen - Validiere Mappings, bevor du Produktionsdaten synchronisierst
Sicherheit
- API-Schlüssel-Authentifizierung - Server-side-Schlüssel mit granularen Berechtigungen
- Nur HTTPS - Die gesamte API-Kommunikation wird per TLS 1.2+ verschlüsselt
- Schlüsselrotation - Unterstützung mehrerer aktiver API-Schlüssel während der Rotation
- Verschlüsselte Speicherung - API-Anmeldedaten werden in Tajo im Ruhezustand verschlüsselt
- JWT-Webhooks - Webhook-Payloads werden per JWT zur Verifizierung signiert