Connecteur Customer.io
Connectez votre plateforme de messagerie Customer.io à Brevo pour des données client unifiées, une coordination de campagnes cross-plateforme et des analyses d’engagement consolidées.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Customer.io |
| Catégorie | Marketing |
| Complexité d’installation | Modérée |
| Intégration officielle | Non |
| Données synchronisées | Personnes, événements, campagnes, segments |
| APIs utilisées | Track API, App API, Pipelines API |
| Authentification | Site ID + API Key / App API Key |
| URLs de base | track.customer.io, api.customer.io |
Fonctionnalités
- Synchronisation des personnes, Synchronisation bidirectionnelle des profils clients avec les contacts Brevo
- Transfert d’événements, Suivez les événements comportementaux et transmettez-les à Brevo pour déclencher des automatisations
- Analytics de campagne, Synchronisez les métriques de performance des campagnes pour un reporting unifié
- Données de workflow, Reflétez les états des workflows Customer.io dans les attributs de contact Brevo
- Réplication de segments, Répliquez les segments Customer.io en listes Brevo
- Synchronisation des données d’objet, Synchronisez les objets non-personnes et les données de relations
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un compte Customer.io avec accès API
- Votre Site ID et Track API Key (disponibles dans Settings > API Credentials)
- Une clé App API pour lire les données de campagnes et segments
- Un compte Brevo avec accès API
- Un compte Tajo avec un abonnement actif
Authentification
Customer.io utilise deux APIs distinctes avec des méthodes d’authentification différentes :
Track API (données comportementales)
Utilisée pour envoyer les personnes, événements et données d’appareils. S’authentifie via Site ID et API Key avec 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 (lecture des données)
Utilisée pour récupérer campagnes, segments et données client. S’authentifie avec un Bearer token.
curl -X GET https://api.customer.io/v1/campaigns \ -H "Authorization: Bearer $APP_API_KEY"Séparation des clés API
La Track API key et l’App API key sont des identifiants différents. La Track API key est utilisée pour écrire des données, tandis que l’App API key sert à en lire. Les deux sont requises pour une intégration Tajo complète.
Connexion à Tajo
tajo connectors install customerio \ --site-id $CIO_SITE_ID \ --track-api-key $CIO_TRACK_API_KEY \ --app-api-key $CIO_APP_API_KEYConfiguration
Configuration de 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: 14Mappage des champs
Mappez les attributs des personnes Customer.io vers les attributs 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_STAGEMappage des événements
event_mapping: # Customer.io event -> Brevo event purchase_completed: ORDER_PLACED subscription_started: SUBSCRIPTION_START feature_activated: FEATURE_USED support_ticket_opened: SUPPORT_REQUESTEndpoints API
Tajo s’intègre avec les endpoints de l’API Customer.io suivants :
| Endpoint | Méthode | API | Objectif |
|---|---|---|---|
/api/v1/customers/{id} | PUT | Track | Créer ou mettre à jour une personne |
/api/v1/customers/{id}/events | POST | Track | Suivre un événement de personne |
/api/v1/events | POST | Track | Suivre des événements anonymes |
/api/v2/entity | POST | Track | Créer ou mettre à jour personnes/objets (Pipelines) |
/v1/campaigns | GET | App | Lister les campagnes |
/v1/campaigns/{id}/metrics | GET | App | Métriques de performance de campagne |
/v1/segments | GET | App | Lister les segments |
/v1/segments/{id}/membership | GET | App | Obtenir les membres d’un segment |
/v1/customers/{id}/attributes | GET | App | Obtenir les attributs d’un client |
/v1/customers/{id}/activities | GET | App | Obtenir le journal d’activité d’un client |
Exemples de code
Initialiser le connecteur
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'});Synchroniser les personnes vers 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// }Transmettre les événements
// 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');});Exporter un 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`);Limites de débit
Customer.io applique différentes limites de débit par API :
| API | Limite de débit | Notes |
|---|---|---|
| Track API | ~100 requêtes/seconde | Par workspace |
| App API | 10 requêtes/seconde | Par clé API |
| Pipelines API | 100 requêtes/seconde | Recommandée pour les données en masse |
| Endpoint batch | 1 000 personnes par requête | Payload max 500 Ko |
Utilisez les endpoints batch
Pour les synchronisations volumineuses, Tajo utilise l’endpoint batch de Customer.io pour envoyer jusqu’à 1 000 personnes par requête, réduisant considérablement le volume d’appels API.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Site ID ou clé API invalide | Vérifiez les identifiants dans Customer.io Settings > API |
| Personnes non synchronisées | Identifiant manquant | Assurez-vous que chaque personne a un id ou un email |
| Événements non suivis | Type de clé API incorrect | Utilisez la Track API key pour les événements, pas l’App API key |
| Données EU inaccessibles | Mauvaise région configurée | Réglez la région sur eu pour les workspaces EU |
| Erreurs de limite de débit | Trop d’appels App API | Réduisez la fréquence de polling pour les données de campagne |
Mode débogage
connectors: customerio: debug: true log_level: verbose log_api_calls: trueTester la connexion
tajo connectors test customerio# ✓ Track API connection successful# ✓ App API connection successful# ✓ People accessible# ✓ Campaigns readable# ✓ Segments listableBonnes pratiques
- Utilisez la Pipelines API pour les données en masse, La Pipelines API plus récente est optimisée pour l’ingestion à haut volume
- Configurez les webhooks de reporting, Transmettez les événements e-mail Customer.io à Tajo en temps réel
- Mappez les étapes de cycle de vie, Synchronisez les abonnements aux segments Customer.io vers les attributs Brevo
- Utilisez des identifiants cohérents, Faites correspondre les champs
identre Customer.io et Brevo - Synchronisez de manière incrémentale, Évitez les exports complets ; exploitez les horodatages
last_activity - Surveillez la livraison des webhooks, Configurez des alertes pour les livraisons de webhook échouées
Sécurité
- Basic Auth, La Track API s’authentifie avec Site ID et API Key
- Bearer Token, L’App API utilise des bearer tokens de style OAuth
- HTTPS uniquement, Toutes les communications API chiffrées via TLS 1.2+
- Centres de données régionaux, Option de centre de données UE pour la conformité RGPD
- Stockage chiffré, Tous les identifiants chiffrés au repos dans Tajo
- Signatures de webhook, Vérifiez les payloads webhook avec des signatures HMAC