FlowKit

Connecter Klaviyo à n8n : synchroniser profils, événements personnalisés et flows e-commerce

Publié le 19 août 2026 · 6 min de lecture

Klaviyo s'est imposé chez la plupart des marchands Shopify et WooCommerce comme la plateforme de référence pour l'email et le SMS marketing piloté par le comportement : chaque flow (panier abandonné, bienvenue, post-achat, winback) se déclenche sur des événements et se segmente sur des propriétés de profil. Le problème arrive dès qu'un signal utile n'est pas nativement dans Klaviyo — un ticket support résolu, un score de risque calculé ailleurs, un paiement Stripe qui échoue en dehors du tunnel Shopify. n8n comble ce vide : il pousse dans Klaviyo exactement les profils et les événements dont vos flows ont besoin, sans que ces plateformes tierces ne parlent nativement entre elles.

Générer une clé API privée et fixer la revision

Klaviyo distingue clés publiques (pour le tracking JS côté navigateur) et clés privées (pour les appels serveur). Dans Settings > API Keys, créez une Private API Key avec les scopes nécessaires — profiles:write et events:write suffisent pour les usages décrits ici, en suivant le principe du moindre privilège déjà détaillé dans notre guide de sécurisation des credentials API.

Dans n8n, créez un credential Header Auth :

  • Nom de l'en-tête : Authorization
  • Valeur : Klaviyo-API-Key votre_cle_privee

Un second en-tête est obligatoire sur chaque appel : revision, avec une date de révision supportée (par exemple 2025-07-15). Klaviyo versionne son API par date plutôt que par numéro de version classique — omettre cet en-tête, ou en fixer un trop ancien, fait échouer l'appel ou change silencieusement le format de réponse attendu.

Créer ou mettre à jour un profil

Pour faire exister ou enrichir un contact dans Klaviyo, l'endpoint à utiliser côté serveur est POST https://a.klaviyo.com/api/profile-import, et non l'endpoint profiles simple qui échoue si le profil existe déjà. Un node HTTP Request avec :

  • Méthode : POST
  • URL : https://a.klaviyo.com/api/profile-import
  • Corps JSON : un objet data de type profile, avec les attributesemail (ou phone_number, ou external_id, au moins un identifiant est requis), first_name, last_name, et un objet properties pour toute donnée custom (statut de fidélité, segment interne, score calculé)

Ce endpoint résout le profil par email, téléphone ou identifiant externe : s'il existe déjà, ses attributs sont mis à jour ; sinon, il est créé. C'est le point d'entrée naturel pour tout ce qui provient d'un autre système — un enrichissement de leads décrit dans notre guide sur l'enrichissement automatique des leads, ou une mise à jour de statut client venant de votre CRM synchronisé via HubSpot ou Pipedrive.

Envoyer un événement personnalisé pour déclencher un flow

Un profil à jour ne suffit pas à lancer une action immédiate — c'est le rôle des événements, envoyés à POST https://a.klaviyo.com/api/events. Le corps JSON attend un objet data de type event, avec :

  • metric.data.attributes.name : le nom de la métrique (par exemple Ticket support résolu ou Paiement échoué), créée automatiquement dans Klaviyo au premier envoi si elle n'existe pas
  • profile.data.attributes : l'identifiant du contact concerné (email ou external_id)
  • properties : les données contextuelles de l'événement, exploitables ensuite dans le contenu dynamique du flow
  • unique_id : un identifiant unique de l'événement, à générer côté n8n (par exemple l'ID de la ressource source), pour que Klaviyo déduplique un renvoi accidentel plutôt que de déclencher deux fois le même flow

Klaviyo répond 202 Accepted : l'événement est accepté pour traitement asynchrone, pas encore garanti d'avoir déclenché un flow au moment de la réponse.

Cas d'usage : enrichir un flow de relance avec un signal calculé ailleurs

Notre guide sur la relance de paniers abandonnés par IA construit toute la logique de détection et d'envoi directement dans n8n. Une approche complémentaire, quand Klaviyo est déjà en place pour l'e-commerce, consiste à laisser Klaviyo gérer le flow (timing, canal email/SMS, contenu dynamique) et à ne faire pousser par n8n que le signal qui manque nativement. Par exemple : un node Code calcule, à partir de l'historique d'achat et du panier en cours, un score de probabilité de rachat plus fin que le simple délai d'abandon ; ce score est envoyé comme propriété d'un événement Panier scoré vers Klaviyo, et le flow Klaviyo se ramifie ensuite (offre différente selon le score, ou silence total en dessous d'un seuil pour ne pas sursolliciter un client peu susceptible de convertir).

Ce type de segmentation comportementale n'est pas anecdotique : une étude de Goic, Rojas et Saavedra, publiée dans le Journal of Interactive Marketing en 2021 (« The Effectiveness of Triggered Email Marketing in Addressing Browse Abandonments », voir sur Google Scholar), montre sur une expérimentation terrain que les emails déclenchés par abandon de navigation augmentent bien les revenus par rapport à l'absence d'email, mais que l'effet varie fortement selon le levier utilisé dans le message — la gamification et la curiosité y surpassent la simple remise de prix. Autrement dit, le signal envoyé au flow (et donc à Klaviyo) compte souvent plus que la mécanique d'envoi elle-même.

Le même principe s'applique à un paiement Stripe qui échoue hors du tunnel de commande standard : le guide sur les webhooks Stripe et les relances de paiement détaille la détection ; un événement Paiement echoue poussé vers Klaviyo permet ensuite de router la relance dans un flow existant plutôt que d'en construire un nouveau en dehors de la plateforme marketing.

Recevoir des données de Klaviyo dans n8n

Le sens inverse est possible via l'action Webhook, disponible à l'intérieur d'un flow Klaviyo : elle envoie une requête POST vers une URL externe avec les données du profil et de l'événement ayant déclenché le flow. Un Webhook Trigger n8n en réception peut, par exemple, journaliser qu'un client a atteint une étape donnée d'un flow de winback dans une table de suivi, ou notifier une équipe commerciale qu'un compte à forte valeur vient de recevoir une offre de rétention. Comme pour tout webhook public, vérifier l'origine de la requête et gérer les doublons de livraison suit les mêmes principes que ceux détaillés dans notre guide de sécurisation des webhooks n8n et notre guide sur l'idempotence des webhooks.

Respecter les limites de débit

L'API Klaviyo applique une limite de débit par point de terminaison, structurée en deux fenêtres : une limite en rafale sur une seconde, et une limite lissée sur une minute — un dépassement de l'une ou l'autre renvoie une erreur 429. En pratique, un envoi en masse de profils ou d'événements (import initial, resynchronisation complète) déclenche ces limites bien plus vite qu'un flux continu d'événements unitaires. Un node Split In Batches pour cadencer l'envoi, combiné à l'option Retry on Fail avec délai croissant sur le node HTTP Request, absorbe l'essentiel des 429 sans intervention manuelle — la méthode générale est détaillée dans notre guide sur la gestion du rate limit des API IA, directement transposable ici.

Sécuriser la clé API

Une clé privée Klaviyo donne accès en lecture et écriture à l'ensemble de la base de contacts — email, téléphone, historique d'achat le cas échéant. Elle doit rester exclusivement dans un credential n8n chiffré, jamais dans un node Set ou codée en dur dans une expression. Limiter les scopes de la clé au strict nécessaire (profiles:write, events:write, sans accès aux campagnes ni à la facturation du compte) réduit l'impact d'une fuite éventuelle.

Klaviyo n'est pas un remplaçant de Brevo

Les deux outils envoient des emails, mais ne couvrent pas le même usage. Klaviyo est pensé nativement pour l'e-commerce comportemental — segmentation sur l'historique d'achat, attribution de revenu par flow, intégration profonde avec le catalogue Shopify — quand notre guide sur l'automatisation de l'email marketing avec Brevo couvre un usage plus généraliste de newsletters et de séquences marketing, indépendant d'une boutique en ligne. Faire cohabiter les deux sur un même domaine d'envoi sans répartition claire des usages dégrade généralement la délivrabilité de l'ensemble.

Pour aller plus loin

Pousser vers Klaviyo des signaux qui n'existent nulle part ailleurs — score de risque, statut support, événement de paiement — transforme des flows génériques en flows réellement personnalisés. Si ce score doit d'abord être calculé à partir du comportement client, le guide sur le scoring de risque de churn par IA détaille la mécanique en amont. Et si l'essentiel de votre besoin porte sur le tri et la réponse automatique aux emails entrants plutôt que sur l'envoi marketing, le Pack Inbox IA (79 €) couvre ce périmètre complémentaire ; le Bundle FlowKit Complet (269 € au lieu de 347 € pris séparément) réunit l'ensemble des packs pour qui automatise à la fois la réception et l'envoi.

FAQ

Questions fréquentes

Comment authentifier n8n auprès de l'API Klaviyo ?

Créez une clé API privée dans Klaviyo (Settings > API Keys), puis dans n8n un credential Header Auth avec l'en-tête Authorization et la valeur Klaviyo-API-Key votre_cle. Ajoutez aussi l'en-tête revision avec une date de révision supportée (par exemple 2025-07-15) : Klaviyo versionne son API par date et rejette les appels sans cet en-tête.

Quelle est la différence entre créer un profil et envoyer un événement dans Klaviyo ?

Un profil (endpoint profile-import) décrit qui est le contact — email, prénom, propriétés custom — et sert de base à la segmentation. Un événement (endpoint events) décrit ce que ce contact a fait à un instant donné — un ticket support résolu, un paiement échoué — et sert de déclencheur de flow. Les deux se complètent : on met à jour le profil pour affiner le ciblage, on envoie un événement pour lancer une action immédiate.

Comment éviter les erreurs 429 de Klaviyo dans un workflow n8n ?

Klaviyo applique une limite en rafale (par seconde) et une limite lissée (par minute) selon le point de terminaison appelé. Activer l'option Retry on Fail avec un délai croissant sur le node HTTP Request, et limiter la concurrence avec un node Split In Batches plutôt qu'un envoi en masse instantané, évite l'essentiel des 429 en usage normal.

Klaviyo peut-il envoyer des données vers n8n, dans l'autre sens ?

Oui, via l'action Webhook disponible à l'intérieur d'un flow Klaviyo : elle envoie une requête POST vers une URL externe, avec les données du profil et de l'événement qui a déclenché le flow. Un Webhook Trigger n8n peut recevoir cette requête pour, par exemple, synchroniser un statut de flow vers un CRM ou une base de données.

Bundle FlowKit Complet

269 €