Conector Customer.io
Conectați platforma de mesagerie Customer.io la Brevo pentru date unificate ale clienților, coordonarea campaniilor cross-platformă și analize de implicare consolidate.
Prezentare generală
| Proprietate | Valoare |
|---|---|
| Platformă | Customer.io |
| Categorie | Marketing |
| Complexitate configurare | Moderată |
| Integrare oficială | Nu |
| Date sincronizate | Persoane, Evenimente, Campanii, Segmente |
| API-uri utilizate | Track API, App API, Pipelines API |
| Autentificare | Site ID + Cheie API / Cheie App API |
| URL-uri de bază | track.customer.io, api.customer.io |
Funcționalități
- Sincronizare persoane - Sincronizare bidirecțională a profilurilor clienților cu contactele Brevo
- Redirecționare evenimente - Urmăriți evenimentele comportamentale și redirecționați-le la Brevo pentru declanșatoare de automatizare
- Analize campanii - Sincronizați metricile de performanță ale campaniilor pentru raportare unificată
- Date flux de lucru - Oglindirea stărilor fluxurilor de lucru Customer.io în atributele de contact Brevo
- Replicare segmente - Replicați segmentele Customer.io ca liste Brevo
- Sincronizare date obiecte - Sincronizați obiecte non-persoane și date de relații
Cerințe preliminare
Înainte de a începe, asigurați-vă că aveți:
- Un cont Customer.io cu acces API
- Site ID-ul și Cheia Track API (găsite în Settings > API Credentials)
- O cheie App API pentru citirea datelor de campanie și segment
- Un cont Brevo cu acces API
- Un cont Tajo cu abonament activ
Autentificare
Customer.io utilizează două API-uri separate cu metode de autentificare diferite:
Track API (Date comportamentale)
Utilizat pentru trimiterea persoanelor, evenimentelor și datelor dispozitivului. Se autentifică cu Site ID și Cheie API prin 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 (Date de citire)
Utilizat pentru recuperarea campaniilor, segmentelor și datelor clienților. Se autentifică cu un token Bearer.
curl -X GET https://api.customer.io/v1/campaigns \ -H "Authorization: Bearer $APP_API_KEY"Separare chei API
Cheia Track API și cheia App API sunt credențiale diferite. Cheia Track API este utilizată pentru scrierea datelor, în timp ce cheia App API este pentru citirea datelor. Ambele sunt necesare pentru integrarea completă Tajo.
Conectare la Tajo
tajo connectors install customerio \ --site-id $CIO_SITE_ID \ --track-api-key $CIO_TRACK_API_KEY \ --app-api-key $CIO_APP_API_KEYConfigurare
Configurare de bază
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: 14Mapare câmpuri
Mapați atributele persoanelor Customer.io la atributele de contact 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_STAGEMapare evenimente
event_mapping: # Customer.io event -> Brevo event purchase_completed: ORDER_PLACED subscription_started: SUBSCRIPTION_START feature_activated: FEATURE_USED support_ticket_opened: SUPPORT_REQUESTPuncte finale API
Tajo se integrează cu următoarele puncte finale API Customer.io:
| Punct final | Metodă | API | Scop |
|---|---|---|---|
/api/v1/customers/{id} | PUT | Track | Creează sau actualizează o persoană |
/api/v1/customers/{id}/events | POST | Track | Urmărește un eveniment al persoanei |
/api/v1/events | POST | Track | Urmărește evenimente anonime |
/api/v2/entity | POST | Track | Creează sau actualizează persoane/obiecte (Pipelines) |
/v1/campaigns | GET | App | Listează campanii |
/v1/campaigns/{id}/metrics | GET | App | Metrici performanță campanie |
/v1/segments | GET | App | Listează segmente |
/v1/segments/{id}/membership | GET | App | Obține membrii segmentului |
/v1/customers/{id}/attributes | GET | App | Obține atributele clientului |
/v1/customers/{id}/activities | GET | App | Obține jurnalul de activitate al clientului |
Exemple de cod
Inițializare 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('customerio', { siteId: process.env.CIO_SITE_ID, trackApiKey: process.env.CIO_TRACK_API_KEY, appApiKey: process.env.CIO_APP_API_KEY, region: 'us'});Sincronizare persoane la 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// }Redirecționare evenimente
// 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');});Export segment
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`);Limite de rată
Customer.io aplică limite de rată diferite per API:
| API | Limită de rată | Note |
|---|---|---|
| Track API | ~100 cereri/secundă | Per spațiu de lucru |
| App API | 10 cereri/secundă | Per cheie API |
| Pipelines API | 100 cereri/secundă | Recomandat pentru date în bloc |
| Punct final batch | 1.000 persoane per cerere | Dimensiune maximă payload 500KB |
Utilizați punctele finale batch
Pentru sincronizări mari, Tajo utilizează punctul final batch Customer.io pentru a trimite până la 1.000 de persoane per cerere, reducând semnificativ volumul de apeluri API.
Depanare
Probleme frecvente
| Problemă | Cauză | Soluție |
|---|---|---|
| 401 Neautorizat | Site ID sau cheie API invalidă | Verificați credențialele în Customer.io Settings > API |
| Persoane nesincronizate | Identificator lipsă | Asigurați că fiecare persoană are un id sau email |
| Evenimente neurmate | Tip greșit de cheie API | Utilizați cheia Track API pentru evenimente, nu cheia App API |
| Date EU inaccesibile | Regiune configurată greșit | Setați region la eu pentru spațiile de lucru EU |
| Erori limită de rată | Prea multe apeluri App API | Reduceți frecvența de polling pentru datele campaniei |
Modul de depanare
connectors: customerio: debug: true log_level: verbose log_api_calls: trueTestare conexiune
tajo connectors test customerio# ✓ Track API connection successful# ✓ App API connection successful# ✓ People accessible# ✓ Campaigns readable# ✓ Segments listableBune practici
- Utilizați Pipelines API pentru date în bloc - Noul Pipelines API este optimizat pentru ingestie cu volum mare
- Configurați webhook-uri de raportare - Redirecționați evenimentele de e-mail Customer.io la Tajo în timp real
- Mapați etapele ciclului de viață - Sincronizați apartenența la segmentele Customer.io la atributele Brevo
- Utilizați identificatori consecvenți - Potriviți câmpurile
idîn Customer.io și Brevo - Sincronizați incremental - Evitați exporturile complete; valorificați marcele temporale
last_activity - Monitorizați livrarea webhook-urilor - Configurați alerte pentru livrările de webhook eșuate
Securitate
- Basic Auth - Track API se autentifică cu Site ID și Cheie API
- Token Bearer - App API utilizează token-uri bearer stilizate OAuth
- Numai HTTPS - Toate comunicațiile API criptate prin TLS 1.2+
- Centre de date regionale - Opțiune centru de date EU pentru conformitate GDPR
- Stocare criptată - Toate credențialele criptate în repaus în Tajo
- Semnături webhook - Verificați payload-urile webhook cu semnături HMAC