Customer.io Connector

Verbinde deine Customer.io-Messaging-Plattform mit Brevo für einheitliche Kundendaten, plattformübergreifende Kampagnenkoordination und konsolidierte Engagement-Analytics.

Überblick

EigenschaftWert
PlattformCustomer.io
KategorieMarketing
EinrichtungsaufwandMittel
Offizielle IntegrationNein
Synchronisierte DatenPeople, Events, Kampagnen, Segmente
Genutzte APIsTrack API, App API, Pipelines API
AuthentifizierungSite ID + API-Schlüssel / App-API-Schlüssel
Basis-URLstrack.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:

  1. Ein Customer.io-Konto mit API-Zugriff
  2. Deine Site ID und deinen Track-API-Schlüssel (zu finden unter Settings > API Credentials)
  3. Einen App-API-Schlüssel zum Lesen von Kampagnen- und Segmentdaten
  4. Ein Brevo-Konto mit API-Zugriff
  5. 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.

Terminal window
# Basic Auth: Site ID as username, API Key as password
curl -X POST https://track.customer.io/api/v1/customers/user123 \
-u "$SITE_ID:$API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'

App API (Daten lesen)

Wird genutzt, um Kampagnen, Segmente und Kundendaten abzurufen. Die Authentifizierung erfolgt über ein Bearer-Token.

Terminal window
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

Terminal window
tajo connectors install customerio \
--site-id $CIO_SITE_ID \
--track-api-key $CIO_TRACK_API_KEY \
--app-api-key $CIO_APP_API_KEY

Konfiguration

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: 14

Feldzuordnung

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_STAGE

Event-Mapping

event_mapping:
# Customer.io event -> Brevo event
purchase_completed: ORDER_PLACED
subscription_started: SUBSCRIPTION_START
feature_activated: FEATURE_USED
support_ticket_opened: SUPPORT_REQUEST

API-Endpoints

Tajo integriert sich mit den folgenden Customer.io-API-Endpoints:

EndpointMethodeAPIZweck
/api/v1/customers/{id}PUTTrackEine Person anlegen oder aktualisieren
/api/v1/customers/{id}/eventsPOSTTrackEin Person-Event tracken
/api/v1/eventsPOSTTrackAnonyme Events tracken
/api/v2/entityPOSTTrackPeople/Objects anlegen oder aktualisieren (Pipelines)
/v1/campaignsGETAppKampagnen auflisten
/v1/campaigns/{id}/metricsGETAppKampagnen-Performance-Metriken
/v1/segmentsGETAppSegmente auflisten
/v1/segments/{id}/membershipGETAppSegment-Mitglieder abrufen
/v1/customers/{id}/attributesGETAppKundenattribute abrufen
/v1/customers/{id}/activitiesGETAppAktivitä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 people
await 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 Brevo
app.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:

APIRate LimitHinweise
Track API~100 Anfragen/SekundePro Workspace
App API10 Anfragen/SekundePro API-Schlüssel
Pipelines API100 Anfragen/SekundeEmpfohlen für Bulk-Daten
Batch-Endpoint1.000 People pro AnfrageMaximaler 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

ProblemUrsacheLösung
401 UnauthorizedUngültige Site ID oder ungültiger API-SchlüsselAnmeldedaten unter Customer.io Settings > API überprüfen
People werden nicht synchronisiertFehlender IdentifierStelle sicher, dass jede Person eine id oder email hat
Events werden nicht getracktFalscher API-Schlüssel-TypFür Events den Track-API-Schlüssel nutzen, nicht den App-API-Schlüssel
EU-Daten nicht zugreifbarFalsche Region konfiguriertRegion für EU-Workspaces auf eu setzen
Rate-Limit-FehlerZu viele App-API-AufrufePolling-Frequenz für Kampagnendaten reduzieren

Debug-Modus

connectors:
customerio:
debug: true
log_level: verbose
log_api_calls: true

Verbindung testen

Terminal window
tajo connectors test customerio
# ✓ Track API connection successful
# ✓ App API connection successful
# ✓ People accessible
# ✓ Campaigns readable
# ✓ Segments listable

Best Practices

  1. Pipelines API für Bulk-Daten nutzen - Die neuere Pipelines API ist für High-Volume-Ingestion optimiert
  2. Reporting-Webhooks einrichten - Leite Customer.io-E-Mail-Events in Echtzeit an Tajo weiter
  3. Lifecycle-Phasen mappen - Synchronisiere Customer.io-Segmentmitgliedschaften in Brevo-Attribute
  4. Konsistente Identifier verwenden - Gleiche id-Felder zwischen Customer.io und Brevo ab
  5. Inkrementell synchronisieren - Vermeide Full-Exports und nutze last_activity-Zeitstempel
  6. 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

Verwandte Ressourcen

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI-Assistent

Hallo! Fragen Sie mich alles über die Dokumentation.