Connettore Customer.io
Collega la tua piattaforma di messaggistica Customer.io a Brevo per dati cliente unificati, coordinamento di campagne cross-platform e analytics di engagement consolidate.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | Customer.io |
| Categoria | Marketing |
| Complessità di setup | Moderata |
| Integrazione ufficiale | No |
| Dati sincronizzati | Persone, Eventi, Campagne, Segmenti |
| API utilizzate | Track API, App API, Pipelines API |
| Autenticazione | Site ID + API Key / App API Key |
| Base URL | track.customer.io, api.customer.io |
Funzionalità
- Sync delle persone - Sincronizzazione bidirezionale dei profili cliente con i contatti Brevo
- Inoltro eventi - Traccia eventi comportamentali e inoltrali a Brevo per i trigger di automazione
- Analytics delle campagne - Sincronizza le metriche di performance delle campagne per una reportistica unificata
- Dati workflow - Replica gli stati dei workflow Customer.io negli attributi di contatto Brevo
- Replica dei segmenti - Replica i segmenti Customer.io come liste Brevo
- Sync dati oggetti - Sincronizza oggetti non-persone e dati relazionali
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account Customer.io con accesso API
- Il tuo Site ID e Track API Key (in Settings > API Credentials)
- Una chiave App API per leggere dati di campagne e segmenti
- Un account Brevo con accesso API
- Un account Tajo con un abbonamento attivo
Autenticazione
Customer.io utilizza due API separate con metodi di autenticazione diversi:
Track API (Dati comportamentali)
Usata per inviare persone, eventi e dati dispositivo. Si autentica con Site ID e API Key tramite 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 (Lettura dati)
Usata per recuperare campagne, segmenti e dati cliente. Si autentica con un Bearer token.
curl -X GET https://api.customer.io/v1/campaigns \ -H "Authorization: Bearer $APP_API_KEY"Separazione delle chiavi API
La chiave Track API e la chiave App API sono credenziali diverse. La chiave Track API è usata per scrivere dati, mentre la chiave App API è per leggere dati. Entrambe sono richieste per l’integrazione completa con Tajo.
Connessione a Tajo
tajo connectors install customerio \ --site-id $CIO_SITE_ID \ --track-api-key $CIO_TRACK_API_KEY \ --app-api-key $CIO_APP_API_KEYConfigurazione
Setup di base
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: 14Mappatura dei campi
Mappa gli attributi delle persone Customer.io agli attributi di contatto Brevo:
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_STAGEMappatura degli eventi
event_mapping: # Customer.io event -> Brevo event purchase_completed: ORDER_PLACED subscription_started: SUBSCRIPTION_START feature_activated: FEATURE_USED support_ticket_opened: SUPPORT_REQUESTEndpoint API
Tajo si integra con i seguenti endpoint API di Customer.io:
| Endpoint | Metodo | API | Scopo |
|---|---|---|---|
/api/v1/customers/{id} | PUT | Track | Crea o aggiorna una persona |
/api/v1/customers/{id}/events | POST | Track | Traccia un evento di una persona |
/api/v1/events | POST | Track | Traccia eventi anonimi |
/api/v2/entity | POST | Track | Crea o aggiorna persone/oggetti (Pipelines) |
/v1/campaigns | GET | App | Elenca le campagne |
/v1/campaigns/{id}/metrics | GET | App | Metriche di performance delle campagne |
/v1/segments | GET | App | Elenca i segmenti |
/v1/segments/{id}/membership | GET | App | Ottieni i membri di un segmento |
/v1/customers/{id}/attributes | GET | App | Ottieni gli attributi di un cliente |
/v1/customers/{id}/activities | GET | App | Ottieni il log attività di un cliente |
Esempi di codice
Inizializza il connettore
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'});Sincronizza le persone su Brevo
// 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// }Inoltra eventi
// 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');});Esporta un segmento
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`);Limiti di velocità
Customer.io applica limiti di velocità diversi per ciascuna API:
| API | Limite | Note |
|---|---|---|
| Track API | ~100 richieste/secondo | Per workspace |
| App API | 10 richieste/secondo | Per chiave API |
| Pipelines API | 100 richieste/secondo | Consigliata per dati in blocco |
| Endpoint batch | 1.000 persone per richiesta | Payload massimo 500KB |
Usa gli endpoint batch
Per sync di grandi dimensioni, Tajo usa l’endpoint batch di Customer.io per inviare fino a 1.000 persone per richiesta, riducendo significativamente il volume di chiamate API.
Risoluzione dei problemi
Problemi comuni
| Problema | Causa | Soluzione |
|---|---|---|
| 401 Unauthorized | Site ID o chiave API non validi | Verifica le credenziali in Customer.io Settings > API |
| Persone non sincronizzate | Identificatore mancante | Assicurati che ogni persona abbia un id o email |
| Eventi non tracciati | Tipo di chiave API errato | Usa la chiave Track API per gli eventi, non la chiave App API |
| Dati EU non accessibili | Regione configurata errata | Imposta region su eu per workspace EU |
| Errori limite di velocità | Troppe chiamate App API | Riduci la frequenza di polling per i dati delle campagne |
Modalità debug
connectors: customerio: debug: true log_level: verbose log_api_calls: trueTesta la connessione
tajo connectors test customerio# ✓ Track API connection successful# ✓ App API connection successful# ✓ People accessible# ✓ Campaigns readable# ✓ Segments listableBest practice
- Usa la Pipelines API per dati in blocco - La nuova Pipelines API è ottimizzata per ingest ad alto volume
- Imposta i webhook di reporting - Inoltra gli eventi email Customer.io a Tajo in tempo reale
- Mappa gli stage del lifecycle - Sincronizza l’appartenenza ai segmenti Customer.io agli attributi Brevo
- Usa identificatori coerenti - Allinea i campi
idtra Customer.io e Brevo - Sincronizza in modo incrementale - Evita le esportazioni complete; sfrutta i timestamp
last_activity - Monitora la consegna webhook - Imposta avvisi per le consegne webhook fallite
Sicurezza
- Basic Auth - La Track API si autentica con Site ID e API Key
- Bearer Token - L’App API usa bearer token in stile OAuth
- Solo HTTPS - Tutte le comunicazioni API cifrate via TLS 1.2+
- Data center regionali - Opzione data center EU per la conformità GDPR
- Storage cifrato - Tutte le credenziali cifrate a riposo in Tajo
- Firme webhook - Verifica i payload webhook con firme HMAC