Customer.io Connector
Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.
Illustration · Beispieldaten
Sync-Beispiel
Quelle
Customer.io
Connector-Status: Geplant
Ziel
Ihr anderes Tool
Connector-Status: Eigenes Tool
Feldzuordnung
| Quellfeld | Zielfeld | Beispielwert |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Entwerfen
- Einen Datensatz prüfen
- Diese Version freigeben
Der Status gilt für einzelne Connectoren und garantiert nicht, dass dieser Sync bereit ist. Felder zur Veranschaulichung. Prüfen Sie vor dem Sync das tatsächliche Schema und die Berechtigungen.
Verbinde deine Customer.io-Messaging-Plattform mit Brevo für einheitliche Kundendaten, plattformübergreifende Kampagnenkoordination und konsolidierte Engagement-Analytics.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Customer.io |
| Kategorie | Marketing |
| Einrichtungsaufwand | Mittel |
| Offizielle Integration | Nein |
| Synchronisierte Daten | People, Events, Kampagnen, Segmente |
| Genutzte APIs | Track API, App API, Pipelines API |
| Authentifizierung | Site ID + API-Schlüssel / App-API-Schlüssel |
| Basis-URLs | track.customer.io, api.customer.io |
Funktionen
- People-Sync - Bidirektionale Synchronisation der Kundenprofile mit Brevo-Kontakten
- Event-Weiterleitung - Tracke Verhaltensevents und leite sie an Brevo weiter, um Automationen auszulösen
- Kampagnen-Analytics - Synchronisiere Kampagnen-Performance-Metriken für ein einheitliches Reporting
- Workflow-Daten - Spiegele Customer.io-Workflow-Status in Brevo-Kontaktattribute
- Segment-Replikation - Repliziere Customer.io-Segmente als Brevo-Listen
- Object-Data-Sync - Synchronisiere Non-People-Objekte und Beziehungsdaten
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Customer.io-Konto mit API-Zugriff
- Deine Site ID und deinen Track-API-Schlüssel (zu finden unter Settings > API Credentials)
- Einen App-API-Schlüssel zum Lesen von Kampagnen- und Segmentdaten
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit aktivem Abonnement
Authentifizierung
Customer.io nutzt zwei getrennte APIs mit unterschiedlichen Authentifizierungsmethoden:
Track API (Verhaltensdaten)
Wird genutzt, um People, Events und Gerätedaten zu senden. Die Authentifizierung erfolgt über Site ID und API-Schlüssel per Basic Auth.
# Basic Auth: Site ID as username, API Key as passwordcurl -X POST https://track.customer.io/api/v1/customers/user123 \ -u "$SITE_ID:$API_KEY" \ -H "Content-Type: application/json" \App API (Daten lesen)
Wird genutzt, um Kampagnen, Segmente und Kundendaten abzurufen. Die Authentifizierung erfolgt über ein Bearer-Token.
curl -X GET https://api.customer.io/v1/campaigns \ -H "Authorization: Bearer $APP_API_KEY"Trennung der API-Schlüssel
Der Track-API-Schlüssel und der App-API-Schlüssel sind unterschiedliche Anmeldedaten. Der Track-API-Schlüssel wird zum Schreiben von Daten verwendet, während der App-API-Schlüssel zum Lesen von Daten dient. Für die vollständige Tajo-Integration werden beide benötigt.
Mit Tajo verbinden
tajo connectors install customerio \ --site-id $CIO_SITE_ID \ --track-api-key $CIO_TRACK_API_KEY \ --app-api-key $CIO_APP_API_KEYKonfiguration
Grundeinrichtung
connectors: customerio: enabled: true region: "us" # or "eu" for EU data center
sync: people: true events: true campaigns: true segments: true objects: false
lists: all_contacts: 12 active_subscribers: 13 churned: 14Feldzuordnung
Ordne Customer.io-Person-Attribute den Brevo-Kontaktattributen zu:
field_mapping: # Standard fields id: CIO_ID email: email first_name: FIRSTNAME last_name: LASTNAME phone: SMS
# Engagement metrics created_at: SIGNUP_DATE last_activity: LAST_ACTIVE plan: PLAN_NAME
# Custom attributes company: COMPANY role: JOB_TITLE mrr: MONTHLY_REVENUE lifecycle_stage: LIFECYCLE_STAGEEvent-Mapping
event_mapping: # Customer.io event -> Brevo event purchase_completed: ORDER_PLACED subscription_started: SUBSCRIPTION_START feature_activated: FEATURE_USED support_ticket_opened: SUPPORT_REQUESTAPI-Endpoints
Tajo integriert sich mit den folgenden Customer.io-API-Endpoints:
| Endpoint | Methode | API | Zweck |
|---|---|---|---|
/api/v1/customers/{id} | PUT | Track | Eine Person anlegen oder aktualisieren |
/api/v1/customers/{id}/events | POST | Track | Ein Person-Event tracken |
/api/v1/events | POST | Track | Anonyme Events tracken |
/api/v2/entity | POST | Track | People/Objects anlegen oder aktualisieren (Pipelines) |
/v1/campaigns | GET | App | Kampagnen auflisten |
/v1/campaigns/{id}/metrics | GET | App | Kampagnen-Performance-Metriken |
/v1/segments | GET | App | Segmente auflisten |
/v1/segments/{id}/membership | GET | App | Segment-Mitglieder abrufen |
/v1/customers/{id}/attributes | GET | App | Kundenattribute abrufen |
/v1/customers/{id}/activities | GET | App | Aktivitätsprotokoll einer Kundin/eines Kunden abrufen |
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('customerio', { siteId: process.env.CIO_SITE_ID, trackApiKey: process.env.CIO_TRACK_API_KEY, appApiKey: process.env.CIO_APP_API_KEY, region: 'us'});People zu Brevo synchronisieren
// Incremental sync of Customer.io peopleawait tajo.connectors.sync('customerio', { type: 'incremental', resources: ['people'], since: '2024-01-01', batchSize: 100});
const status = await tajo.connectors.status('customerio');console.log(status);// {// connected: true,// lastSync: '2024-03-15T14:20:00Z',// peopleCount: 32500,// campaignsTracked: 18,// eventsProcessed: 87000// }Events weiterleiten
// Forward Customer.io reporting webhook events to Brevoapp.post('/webhooks/customerio', async (req, res) => { const events = req.body;
for (const event of events) { await tajo.connectors.handleEvent('customerio', { type: event.metric, payload: { customerId: event.data.customer_id, campaignId: event.data.campaign_id, timestamp: event.timestamp } }); }
res.status(200).send('OK');});Segment exportieren
const result = await tajo.connectors.exportSegment('customerio', { segmentId: 42, targetList: 13, includeAttributes: ['email', 'first_name', 'last_name', 'plan']});
console.log(`Exported ${result.count} people to Brevo list 13`);Rate Limits
Customer.io wendet je API unterschiedliche Rate Limits an:
| API | Rate Limit | Hinweise |
|---|---|---|
| Track API | ~100 Anfragen/Sekunde | Pro Workspace |
| App API | 10 Anfragen/Sekunde | Pro API-Schlüssel |
| Pipelines API | 100 Anfragen/Sekunde | Empfohlen für Bulk-Daten |
| Batch-Endpoint | 1.000 People pro Anfrage | Maximaler Payload 500 KB |
Batch-Endpoints nutzen
Für große Synchronisationen nutzt Tajo den Customer.io-Batch-Endpoint und sendet bis zu 1.000 People pro Anfrage, um die Anzahl der API-Aufrufe deutlich zu reduzieren.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültige Site ID oder ungültiger API-Schlüssel | Anmeldedaten unter Customer.io Settings > API überprüfen |
| People werden nicht synchronisiert | Fehlender Identifier | Stelle sicher, dass jede Person eine id oder email hat |
| Events werden nicht getrackt | Falscher API-Schlüssel-Typ | Für Events den Track-API-Schlüssel nutzen, nicht den App-API-Schlüssel |
| EU-Daten nicht zugreifbar | Falsche Region konfiguriert | Region für EU-Workspaces auf eu setzen |
| Rate-Limit-Fehler | Zu viele App-API-Aufrufe | Polling-Frequenz für Kampagnendaten reduzieren |
Debug-Modus
connectors: customerio: debug: true log_level: verbose log_api_calls: trueVerbindung testen
tajo connectors test customerio# ✓ Track API connection successful# ✓ App API connection successful# ✓ People accessible# ✓ Campaigns readable# ✓ Segments listableBest Practices
- Pipelines API für Bulk-Daten nutzen - Die neuere Pipelines API ist für High-Volume-Ingestion optimiert
- Reporting-Webhooks einrichten - Leite Customer.io-E-Mail-Events in Echtzeit an Tajo weiter
- Lifecycle-Phasen mappen - Synchronisiere Customer.io-Segmentmitgliedschaften in Brevo-Attribute
- Konsistente Identifier verwenden - Gleiche
id-Felder zwischen Customer.io und Brevo ab - Inkrementell synchronisieren - Vermeide Full-Exports und nutze
last_activity-Zeitstempel - Webhook-Zustellung überwachen - Richte Alerts für fehlgeschlagene Webhook-Zustellungen ein
Sicherheit
- Basic Auth - Die Track API authentifiziert sich mit Site ID und API-Schlüssel
- Bearer Token - Die App API nutzt OAuth-ähnliche Bearer-Tokens
- Nur HTTPS - Die gesamte API-Kommunikation wird per TLS 1.2+ verschlüsselt
- Regionale Rechenzentren - EU-Rechenzentrum als Option für die DSGVO-Konformität
- Verschlüsselte Speicherung - Alle Anmeldedaten werden in Tajo im Ruhezustand verschlüsselt
- Webhook-Signaturen - Webhook-Payloads werden mit HMAC-Signaturen verifiziert