Connecteur Klaviyo
Connectez Klaviyo à Brevo via Tajo pour migrer ou synchroniser les données marketing entre les plateformes. Synchronisez profils, événements, listes, segments, flows et données de campagnes pour une stratégie marketing multicanal unifiée.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Klaviyo |
| Catégorie | Marketing |
| Complexité de configuration | Moyenne |
| Intégration officielle | Non |
| Données synchronisées | Profils, Événements, Listes, Segments, Campagnes |
| Compétences disponibles | 10 |
| Standard API | JSON:API |
Fonctionnalités
- Synchronisation des profils - Synchronisation bidirectionnelle des profils clients entre Klaviyo et Brevo
- Transfert d’événements - Transfert des événements suivis par Klaviyo vers Brevo pour les déclencheurs d’automatisation
- Migration de listes - Synchronisation des listes Klaviyo vers les listes de contacts Brevo
- Synchronisation des segments - Export des segments Klaviyo en tant que listes ou segments Brevo
- Export des données de flow - Récupération des données de performance des flows pour des analytiques multiplateforme
- Synchronisation des campagnes - Coordination des campagnes entre les canaux Klaviyo et Brevo
- Synchronisation des catalogues - Mise en miroir des catalogues de produits entre plateformes
- Gestion des coupons - Synchronisation des codes de coupons et données d’utilisation
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Un compte Klaviyo avec accès API
- Une clé API privée avec les périmètres appropriés
- Votre clé API publique Klaviyo (ID d’entreprise à 6 caractères)
- Un compte Brevo avec accès API
- Un compte Tajo avec identifiants API
Authentification
Clé API privée
Klaviyo utilise des clés API privées avec accès à périmètre réduit pour l’authentification côté serveur. Définissez la clé dans l’en-tête Authorization :
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Klaviyo-API-Key your-private-api-key" \ -H "revision: 2026-01-15"Périmètres de clé API
Configurez les périmètres lors de la création de votre clé privée :
| Périmètre | Accès | Description |
|---|---|---|
profiles | Read/Full | Accès aux profils de contacts |
events | Read/Full | Accès aux événements suivis |
lists | Read/Full | Accès aux listes de contacts |
segments | Read | Accès aux segments |
campaigns | Read | Accès aux données de campagnes |
metrics | Read | Accès aux définitions de métriques |
flows | Read | Accès aux configurations de flows |
catalogs | Read | Accès aux catalogues de produits |
Clé API publique
Pour le suivi côté client, utilisez l’ID d’entreprise à 6 caractères :
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \ -H "Content-Type: application/json" \ -d '{"data": {...}}'OAuth (Intégrations partenaires)
Klaviyo prend en charge OAuth pour les partenaires technologiques, offrant une meilleure sécurité et des limites de taux plus élevées :
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \ -H "revision: 2026-01-15"Configuration
Configuration de base
connectors: klaviyo: enabled: true private_api_key: "your-klaviyo-private-key" public_api_key: "XXXXXX" api_revision: "2026-01-15"
# Options de synchronisation des données sync: profiles: true events: true lists: true segments: true catalogs: false
# Assignation de listes Brevo lists: all_contacts: 20 subscribers: 21 high_value: 22Mappage des profils
Mappez les propriétés de profil Klaviyo aux attributs de contact Brevo :
profile_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME phone_number: SMS city: CITY region: REGION country: COUNTRY zip: ZIP organization: COMPANY title: JOB_TITLE
# Propriétés personnalisées lifetime_value: LTV total_orders: ORDER_COUNT last_order_date: LAST_ORDER_DATE preferred_channel: CHANNEL_PREFMappage des événements
Mappez les métriques Klaviyo aux événements Brevo :
event_mapping: "Placed Order": "order_completed" "Ordered Product": "product_purchased" "Started Checkout": "checkout_started" "Added to Cart": "cart_updated" "Viewed Product": "product_viewed" "Subscribed to List": "customer_subscribed" "Received Email": "email_received" "Opened Email": "email_opened" "Clicked Email": "email_clicked"Endpoints API
| Méthode | Endpoint | Description |
|---|---|---|
GET | /api/profiles/ | Lister les profils |
POST | /api/profiles/ | Créer un profil |
PATCH | /api/profiles/{id}/ | Mettre à jour un profil |
POST | /api/profile-merge/ | Fusionner les profils dupliqués |
GET | /api/events/ | Lister les événements |
POST | /api/events/ | Créer un événement |
GET | /api/lists/ | Lister toutes les listes |
POST | /api/lists/{id}/relationships/profiles/ | Ajouter des profils à une liste |
GET | /api/segments/ | Lister les segments |
GET | /api/campaigns/ | Lister les campagnes |
GET | /api/flows/ | Lister les flows |
GET | /api/metrics/ | Lister les métriques |
POST | /api/metric-aggregates/ | Interroger les agrégats de métriques |
GET | /api/catalog-items/ | Lister les éléments du catalogue |
Exemples de code
Initialiser le connecteur Klaviyo
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connecter le compte Klaviyoawait tajo.connectors.connect('klaviyo', { privateApiKey: process.env.KLAVIYO_PRIVATE_KEY, publicApiKey: process.env.KLAVIYO_PUBLIC_KEY});Synchroniser les profils vers Brevo
// Récupérer les profils Klaviyo et les synchroniser vers Brevoconst response = await fetch('https://a.klaviyo.com/api/profiles/', { headers: { 'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`, 'revision': '2026-01-15', 'Accept': 'application/vnd.api+json' }});
const { data } = await response.json();
// Chaque profil suit le format JSON:API// {// "type": "profile",// "id": "01ABCDEF",// "attributes": {// "email": "[email protected]",// "first_name": "Jane",// "last_name": "Kim",// "phone_number": "+15551234567",// "properties": { "lifetime_value": 450.00 }// }// }Créer un événement
// Suivre un événement dans Klaviyo (transféré vers Brevo via Tajo)await fetch('https://a.klaviyo.com/api/events/', { method: 'POST', headers: { 'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`, 'revision': '2026-01-15', 'Content-Type': 'application/vnd.api+json', 'Accept': 'application/vnd.api+json' }, body: JSON.stringify({ data: { type: 'event', attributes: { metric: { data: { type: 'metric', attributes: { name: 'Placed Order' } } }, profile: { }, properties: { OrderId: 'ORD-1234', Value: 89.99, Items: [ { ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 } ] }, value: 89.99 } } })});Interroger les agrégats de métriques
// Obtenir des données de métriques agrégées pour le reportingawait fetch('https://a.klaviyo.com/api/metric-aggregates/', { method: 'POST', headers: { 'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`, 'revision': '2026-01-15', 'Content-Type': 'application/vnd.api+json' }, body: JSON.stringify({ data: { type: 'metric-aggregate', attributes: { metric_id: 'METRIC_ID', measurements: ['count', 'sum_value'], interval: 'day', filter: ['greater-or-equal(datetime,2024-01-01)', 'less-than(datetime,2024-02-01)'] } } })});Limites de taux
| Authentification | Limite en rafale | Limite soutenue |
|---|---|---|
| Clé API privée | 75 requêtes/sec | 700 requêtes/min |
| OAuth | 150 requêtes/sec | 1 500 requêtes/min |
| API Client | 100 requêtes/sec | N/A |
| Opérations en masse | 10 requêtes/sec | 100 requêtes/min |
En-tête de révision API requis
Toutes les requêtes à l’API Klaviyo nécessitent l’en-tête revision défini sur une date de version API valide (ex. 2026-01-15). Les requêtes sans cet en-tête seront rejetées.
Dépannage
| Problème | Cause | Solution |
|---|---|---|
400 Bad Request | Clé API invalide ou manquante | Vérifiez que la clé API privée est correcte |
403 Forbidden | Périmètre insuffisant | Vérifiez que les périmètres de la clé API correspondent aux permissions requises |
En-tête revision manquant | En-tête non défini | Ajoutez revision: 2026-01-15 à toutes les requêtes |
| Profil introuvable | Mauvais identifiant | Utilisez l’ID de profil Klaviyo, pas l’email, pour les recherches |
| Événements non synchronisés | Mauvais nom de métrique | Faites correspondre exactement les noms de métriques tels que définis dans Klaviyo |
429 Too Many Requests | Limite de taux dépassée | Implémentez un backoff exponentiel, envisagez OAuth pour des limites plus élevées |
| Erreurs de format JSON:API | Mauvais content type | Utilisez application/vnd.api+json pour les en-têtes Content-Type et Accept |
Bonnes pratiques
- Utilisez le format JSON:API - Suivez la spécification JSON:API pour tous les payloads de requête et réponse
- Définissez l’en-tête revision - Incluez toujours l’en-tête
revisionavec la date de version API la plus récente - Utilisez des sparse fieldsets - Demandez uniquement les champs nécessaires avec
?fields[profile]=email,first_namepour réduire la taille du payload - Exploitez les relations - Utilisez le paramètre
includede JSON:API pour récupérer des ressources liées en une seule requête - Utilisez la pagination par curseur - Naviguez dans les grands ensembles de résultats avec le paramètre
page[cursor] - Implémentez les opérations en masse - Utilisez les endpoints bulk pour les imports de profils en batch et la création d’événements
- Utilisez OAuth pour des limites plus élevées - L’authentification OAuth offre des limites de taux 2x supérieures aux clés privées
Sécurité
- Périmètres de clés API privées - Contrôle d’accès granulaire Read/Full par type de ressource
- Support OAuth - Authentification sécurisée par jetons pour les intégrations partenaires
- Isolation des clés publiques - Clés côté client limitées aux opérations de création uniquement
- TLS 1.2+ - Toutes les communications API chiffrées en transit
- SOC 2 Type II - Klaviyo est certifié SOC 2 Type II
- Conformité RGPD - API Data Privacy pour les demandes de suppression de profils