Ressources · Intégration n8n

Intégration Brevo n8nAutomatiser Brevo avec n8n.

Chaque email transactionnel laisse une trace, et n8n sait la lire. L'intégration Brevo n8n ouvre 15 opérations réparties sur 4 ressources : contacts, attributs de contact, emails et expéditeurs. Le Brevo Trigger écoute 12 événements d'email. Tout se pilote depuis un workflow.

Avis vérifiés sur Trustpilot · Agence IA, automatisation & growth

Pourquoi automatiser

Que fait vraiment l'intégration Brevo n8n ?

Deux nœuds sont livrés avec n8n pour Brevo. Le nœud Brevo appelle l'API de Brevo à ta place, avec 15 opérations réparties entre les contacts, les attributs de contact, les emails transactionnels et les expéditeurs. Le Brevo Trigger, lui, démarre un workflow quand Brevo signale quelque chose sur un email, parmi 12 événements. Un trigger, c'est simplement le nœud qui décide du moment où un workflow part. Et le credential créé pour l'un fonctionne pour l'autre.

Dans la pratique, trois familles de workflows reviennent tout le temps.

L'envoi d'abord. Le workflow récupère une commande, une inscription ou un ticket, puis email.sendTemplate déclenche le template Brevo correspondant, avec ses Template Parameters remplis depuis l'item entrant. Face à une simple boîte mail comme Gmail, la différence tient à un point : la mise en forme reste dans Brevo, n8n ne fournit que les valeurs.

L'hygiène de base ensuite. contact.upsert écrit le contact qu'il existe déjà ou non. Un formulaire, une ligne de Google Sheets et une fiche CRM finissent donc sur une seule fiche propre, au lieu de trois quasi doublons qu'il faudra fusionner un jour. Et attribute.create déclare les champs avant que quoi que ce soit essaie de les remplir.

La réaction, enfin. Les 12 événements du trigger racontent ce qui est arrivé à chaque email transactionnel, et le workflow répond. Un hard bounce neutralise l'adresse, un clic monte un score, une désinscription se propage vers les autres outils qui détiennent le même contact, par exemple Mautic.

Restent les bordures. Le nœud couvre 4 ressources, pas une de plus : les listes de contacts, les campagnes marketing, les SMS et les statistiques sont en dehors. Quand l'un de ces besoins arrive, le nœud HTTP Request appelle n'importe quel endpoint de l'API Brevo et réutilise le même credential via l'authentification prédéfinie. La clé n'est jamais recopiée ailleurs. Ce repli est la façon normale d'étendre le nœud, pas un bricolage.

Un dernier point avant de construire : le mécanisme du Brevo Trigger n'est pas documenté. Prévois donc que le workflow doit être actif pour qu'il écoute, et garde un chemin manuel pour rejouer un traitement. Si c'est n8n qui est nouveau et pas Brevo, la Formation n8n reprend credentials, expressions et gestion d'erreur dans l'ordre où cette page s'en sert. Pour situer n8n face aux autres plateformes, l'Avis n8n est plus utile qu'un comparatif de logos.

Connexion

Comment connecter Brevo à n8n ?

  1. 01

    Générer la clé API dans Brevo

    Il faut d'abord un compte développeur Brevo : c'est le prérequis indiqué dans la documentation du credential n8n. De là, tu crées une nouvelle clé en suivant le guide de démarrage rapide de l'API Brevo. Cette clé est le seul secret nécessaire : le credential Brevo dans n8n ne propose qu'une méthode d'authentification, la clé API. Pas de parcours OAuth, pas de scopes à cocher, pas d'URL de redirection à déclarer.

  2. 02

    Enregistrer la clé comme credential n8n

    Dans n8n, ouvre le menu Credentials et crée un credential Brevo. Un credential, c'est un jeu de secrets enregistré une fois, que les nœuds empruntent au moment de s'exécuter : la clé vit à un seul endroit plutôt que dans chaque workflow. Le formulaire demande un unique champ, API Key. Colle la valeur générée côté Brevo, enregistre, et donne au credential un nom que tu reconnaîtras dans une liste déroulante dans six mois.

  3. 03

    Sélectionner le credential dans le nœud

    Pose un nœud Brevo sur le canevas, ou un Brevo Trigger, et choisis dans sa liste le credential enregistré. La même entrée sert aux deux nœuds et à tous les workflows suivants, donc cette étape ne se refait jamais. Sur le nœud, tu choisis ensuite une ressource puis une opération. Sur le trigger, tu renseignes la Resource, tu coches les événements sous Trigger On, puis tu actives le workflow.

Déclencheurs

Qu'est-ce qui déclenche un workflow depuis Brevo ?

Brevo Trigger est le nœud qui démarre un workflow quand quelque chose se passe dans Brevo. Il couvre 12 événements, listés ci-dessous par famille. Tu actives le workflow et chaque événement reçu devient une exécution.

Ce que tu vois dans n8n

Tous les événements, par famille

Une ligne par objet, une puce par action. L'événement à cocher dans le nœud s'écrit objet.action ; survole une puce pour lire quand il se déclenche.

blocked.*1
  • blocked.
    • blocked
click.*1
  • click.
    • click
deferred.*1
  • deferred.
    • deferred
delivered.*1
  • delivered.
    • delivered
hard.*1
    invalid.*1
    • invalid.
      • invalid
    opened.*1
    • opened.
      • opened
    request.*1
    • request.
      • request
    soft.*1
      spam.*1
      • spam.
        • spam
      unique.*1
        unsubscribed.*1
        • unsubscribed.
          • unsubscribed

        Notes de configuration

        01Set Up the Brevo TriggerDeux paramètres configurent le Brevo Trigger, et tous les deux pèsent plus lourd qu'il n'y paraît.

        Deux paramètres configurent le Brevo Trigger, et tous les deux pèsent plus lourd qu'il n'y paraît.

        Paramètres clés

        • Resource : requis, il fixe ce que le trigger surveille avant même de parler d'événements.
        • Trigger On : la liste des événements auxquels le workflow réagit, cochés un par un. Aucune entrée « tout » n'existe : un événement non coché n'arrive jamais sur le canevas, et en ajouter un plus tard demande de rouvrir le trigger, pas les nœuds qui suivent.
        Quand l'utiliser
        dès que le point de départ est une observation de Brevo sur un email, et non une action de ton propre système. La documentation du nœud ne précise pas le mécanisme derrière ce trigger. La règle honnête est donc la plus simple : le workflow doit être actif pour que le trigger écoute, et un workflow désactivé n'entend rien. La version 1 du trigger couvre 12 événements, et n'en cocher que deux ou trois garde les exécutions lisibles.
        02Email Sent, Delivered and DeferredLa distribution a trois points de contrôle, et chacun répond à une question différente sur le même message.

        La distribution a trois points de contrôle, et chacun répond à une question différente sur le même message.

        Paramètres clés

        • Trigger On : coche request pour Email Sent, déclenché quand l'email transactionnel part, delivered pour Email Delivered, quand il arrive à destination, et deferred pour Email Deferred, quand le serveur destinataire le repousse à plus tard.
        Cas d'usage
        un service logistique archive chaque request dans un tableur, et la preuve d'envoi existe quoi que raconte le client trois semaines après. Une revue de délivrabilité s'appuie plutôt sur deferred : un message sans cesse repoussé désigne le domaine d'envoi, pas le destinataire. Croiser envoyé et délivré dans le même workflow donne aussi un contrôle simple : ce qui part sans jamais arriver mérite un coup d'œil.
        03Email Opened, Unique Open and ClickedL'engagement se lit sur trois événements, et en confondre deux fausse tous les tableaux construits ensuite.

        L'engagement se lit sur trois événements, et en confondre deux fausse tous les tableaux construits ensuite.

        Paramètres clés

        • Trigger On : opened se déclenche à chaque ouverture de l'email transactionnel, uniqueOpened à la première ouverture par ce destinataire, click au clic sur un lien du message.
        Quand l'utiliser
        prends uniqueOpened pour compter des personnes et opened pour compter des lectures. Un client qui rouvre sa facture quatre fois reste une personne, pas quatre. Et branche click sur quelque chose qui agit : une colonne de score, une relance, une notification dans Slack pour le commercial qui suit le compte. Le clic sur un transactionnel signale une intention, c'est le plus exploitable des trois. Une ouverture seule reste un signal faible, surtout sur un reçu que le destinataire rouvre deux fois par réflexe.
        04Hard Bounce, Soft-Bounce, Blocked and InvalidQuatre événements signalent que le message n'est pas arrivé, et la bonne réaction diffère à chaque fois.

        Quatre événements signalent que le message n'est pas arrivé, et la bonne réaction diffère à chaque fois.

        Paramètres clés

        • Trigger On : hardBounce pour un rebond définitif, softBounce pour un rebond temporaire, blocked quand l'email transactionnel est bloqué, invalid quand l'adresse est invalide.
        Cas d'usage
        un hard bounce ou une adresse invalide, c'est définitif : le workflow marque le contact avec contact.update et cesse d'écrire dessus. Un soft bounce, c'est temporaire, et ça mérite un compteur plutôt qu'une suppression : trois d'affilée sur la même adresse, c'est un signal, un seul, c'est du bruit. Les emails bloqués gagnent à remonter à un humain, parce que la cause est presque toujours côté envoi. Regrouper les quatre événements dans un seul workflow, avec un aiguillage sur le nom de l'événement, évite d'entretenir quatre flux presque identiques.
        05Email Marked Spam and UnsubscribedUne plainte et un désabonnement mettent tous les deux fin à la conversation, et tous les deux doivent être respectés partout en même temps.

        Une plainte et un désabonnement mettent tous les deux fin à la conversation, et tous les deux doivent être respectés partout en même temps.

        Paramètres clés

        • Trigger On : spam se déclenche quand un email transactionnel est marqué comme spam, unsubscribed quand le destinataire se désabonne.
        Quand l'utiliser
        ces deux-là se branchent en premier, avant tous les événements d'engagement. Le contact désabonné dans Brevo reste souvent actif dans un CRM, un tableur et une audience publicitaire, et c'est le workflow qui les remet d'accord. Une plainte spam mérite mieux qu'un drapeau : on la journalise, on regarde ce qui a été envoyé, et une série de plaintes se traite comme un problème de campagne, pas de destinataires. Ces deux événements sont aussi l'assurance la moins chère contre une dégradation de délivrabilité qui s'installe sans bruit pendant des mois.
        Actions

        Que sait faire le nœud Brevo ?

        Le nœud Brevo expose 15 opérations sur 4 ressources. Pour chacune : le nœud tel que tu le configures dans n8n, les champs obligatoires, et nos notes de terrain.

        Matrice ressources × opérations
        RessourceCreateGetGet ManyUpdateDeleteSendSend TemplateCreate or Update
        Contact✓✓✓✓✓✓
        Contact Attribute✓✓✓✓
        Email✓✓
        Sender✓✓✓

        Contact

        6 opérations
        01

        Create a contact

        contact.create

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Ajoute un contact dans Brevo et renvoie la fiche qui vient d'être créée. Aucun champ n'est marqué requis sur cette opération : un appel vide passe donc quand même, et laisse un contact sans adresse.

        Paramètres clés

        • Email : l'adresse du contact, au format name@email.com suggéré par le champ, le plus souvent {{ $json.email }} quand elle vient d'un formulaire ou d'un nœud précédent.
        • Contact Attributes : le tableau d'attributs ajoutés avec le contact, un nom et une valeur par entrée.
        Cas d'usage
        une inscription à un webinaire arrive dans Brevo avec le prénom et la société déjà remplis, prête pour la séquence qui suit.
        02

        Upsert a contact

        contact.upsert

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Cherche l'adresse d'abord, puis crée le contact ou met à jour celui qui existe. C'est l'opération qui empêche une base de se remplir de quasi doublons quand la même personne remplit deux formulaires.

        Paramètres clés

        • Email : requis ici, contrairement à Create. Il sert d'identifiant, donc une valeur vide bloque l'exécution du nœud au lieu d'écrire une fiche anonyme.
        • Contact Attributes : le tableau d'attributs à mettre à jour, appliqué que le contact vienne d'être créé ou qu'il existait déjà.
        Cas d'usage
        une synchro quotidienne depuis un tableur où certaines lignes sont des nouveaux clients et d'autres des corrections.
        03

        Delete a contact

        contact.delete

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Supprime le contact de Brevo. Il n'y a ni corbeille ni retour en arrière, donc cette opération se place en bout de branche, une fois la décision prise, jamais au milieu d'un nettoyage automatique.

        Paramètres clés

        • Contact Identifier : l'email encodé en URL, l'identifiant du contact, ou la valeur de son attribut SMS. Les trois fonctionnent, ce qui dépanne quand la demande arrive avec un numéro de téléphone plutôt qu'une adresse.
        Cas d'usage
        une demande d'effacement traitée de bout en bout par un workflow qui vide aussi le même contact des outils en aval.
        04

        Get a contact

        contact.get

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Lit un contact et renvoie ses attributs. C'est le deuxième nœud habituel après un trigger qui ne transmet qu'une adresse.

        Paramètres clés

        • Contact Identifier : requis. Accepte l'email encodé en URL, l'identifiant du contact ou la valeur de son attribut SMS, souvent écrit sous forme d'expression, par exemple {{ $json.email }}, pour que la valeur suive l'item dans le workflow.
        Cas d'usage
        un événement de clic arrive avec une adresse et rien d'autre : le workflow va chercher la fiche pour savoir sur quelle offre est cette personne avant de décider qui prévenir.
        05

        Get many contacts

        contact.getAll

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Sort un lot de contacts de Brevo, un item par contact, pour les exports et les audits plutôt que pour une recherche unitaire.

        Paramètres clés

        • Return All : activé, n8n enchaîne les pages de l'API jusqu'au dernier contact. Désactivé, Limit fixe le nombre maximal renvoyé.
        • Filters : réduit l'ensemble avant qu'il n'arrive sur le canevas.
        • Sort : trie par date de création, ascendant ou descendant.
        • Modified Since : ne garde que les contacts modifiés après une date UTC encodée en URL, au format YYYY-MM-DDTHH:mm:ss.SSSZ.
        Cas d'usage
        un export nocturne incrémental où Modified Since limite le transfert aux fiches qui ont bougé.
        06

        Update a contact

        contact.update

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Modifie les valeurs d'attributs d'un contact existant, et échoue au lieu d'en créer un si l'identifiant ne correspond à personne. Cette rigidité est utile : elle sert quand la fiche doit être là.

        Paramètres clés

        • Contact Identifier : requis. L'email encodé en URL, l'identifiant du contact ou la valeur de l'attribut SMS.
        • Attributes : le tableau d'attributs à mettre à jour, chacun avec son nom et sa nouvelle valeur.
        Cas d'usage
        un rebond bascule un attribut de délivrabilité à faux, et la campagne suivante saute l'adresse sans que personne relise une liste à la main.

        Contact Attribute

        4 opérations
        07

        Create an attribute

        attribute.create

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Déclare un nouvel attribut de contact dans le compte, c'est-à-dire le champ que les opérations de contact rempliront ensuite. Quatre valeurs sont requises, plus que sur n'importe quelle autre opération du nœud.

        Paramètres clés

        • Category : requis, parmi normal, transactional, calculated, category et global.
        • Name : requis, le nom de l'attribut.
        • Type : requis, text, date, float ou boolean.
        • Value : requis, la valeur de l'attribut.
        Cas d'usage
        un workflow d'initialisation qui prépare un compte Brevo neuf avec les attributs attendus par les templates.
        08

        Update an attribute

        attribute.update

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Modifie un attribut déjà présent dans le compte. Le détail intéressant se cache dans les catégories : seules trois des cinq sont proposées ici, donc un attribut normal ou transactionnel ne se remodèle pas par ce chemin.

        Paramètres clés

        • Category : calculated, category ou global.
        • Name : le nom de l'attribut existant, qui doit correspondre exactement.
        • Value : la valeur à mettre à jour.
        • Contact Attributes : sous Update Fields, la liste des valeurs et libellés que l'attribut peut prendre.
        Cas d'usage
        un attribut calculé dont la formule change en même temps que la grille tarifaire.
        09

        Delete an attribute

        attribute.delete

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Retire un attribut du modèle de contact. Tous les contacts perdent ce champ, donc mieux vaut exporter d'abord et supprimer ensuite.

        Paramètres clés

        • Category : la famille à laquelle appartient l'attribut, parmi normal, transactional, calculated, category et global. Les cinq catégories sont disponibles ici, contrairement à l'opération de mise à jour.
        • Name : l'attribut à retirer.
        Cas d'usage
        mettre au rebut un champ hérité d'un ancien outil après une migration, une fois qu'aucun template ne s'y réfère plus.
        10

        Get many attributes

        attribute.getAll

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Liste les attributs déclarés dans le compte. C'est ainsi qu'un workflow vérifie ce qui existe avant d'essayer d'écrire dedans.

        Paramètres clés

        • Return All : activé, tous les attributs reviennent, sur autant de pages d'API que nécessaire. Désactivé, Limit fixe le nombre maximal renvoyé.
        Cas d'usage
        un garde-fou en tête d'import : récupérer les attributs, les comparer aux colonnes du fichier entrant, et arrêter l'exécution avec un message clair quand une colonne n'a pas d'attribut correspondant, plutôt que de perdre la donnée en silence.

        Email

        2 opérations
        11

        Send a transactional email

        email.send

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Envoie un email transactionnel composé dans le nœud, donc un contenu qui vit dans le workflow et pas dans Brevo.

        Paramètres clés

        • Sender et Receipients : requis tous les deux, et un champ vide arrête l'exécution.
        • Send HTML : bascule le corps entre Text Content et HTML Content.
        • Subject : l'objet du message.
        • Receipients CC et Receipients BCC : destinataires supplémentaires, sous Additional Fields.
        • Email Tags : étiquette l'envoi pour le retrouver plus tard, à côté d'Attachments dans la même collection.
        Cas d'usage
        une alerte interne dont le texte change avec le workflow, et qui ne mérite pas un template.
        12

        Send an email with an existing Template

        email.sendTemplate

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Utilise un template conçu dans Brevo au lieu de HTML tapé dans n8n, ce qui laisse la mise en forme entre les mains de ceux qui tiennent la marque.

        Paramètres clés

        • Receipients : requis, le seul champ sur lequel le nœud insiste.
        • Template ID : une liste déroulante alimentée par le compte, donc aucun identifiant à retenir.
        • Template Parameters : sous Additional Fields, le jeu d'attributs qui personnalise le template, typiquement des expressions comme {{ $json.order_id }}.
        • Attachments et Email Tags : fichiers à joindre et étiquettes de recherche.
        Cas d'usage
        une confirmation de commande où le marketing tient le design et le workflow fournit les valeurs.

        Sender

        3 opérations
        13

        Create a sender

        sender.create

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Enregistre un expéditeur dans le compte, l'identité sous laquelle partiront les emails transactionnels. Les deux champs sont requis, ce qui en fait l'opération la plus simple du nœud à réussir.

        Paramètres clés

        • Name : requis, le nom affiché à côté de l'adresse chez le destinataire.
        • Email : requis, l'adresse de l'expéditeur, au format name@email.com.
        Cas d'usage
        une agence qui ouvre un espace pour un nouveau client crée son expéditeur dans le workflow qui installe déjà les attributs, pour que la première campagne ne parte pas d'une adresse oubliée là.
        14

        Delete a sender

        sender.delete

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Retire un expéditeur du compte. Tout ce qui pointe encore vers cette identité doit être corrigé avant, puisque les opérations d'envoi nomment un expéditeur explicitement.

        Paramètres clés

        • Sender ID : l'identifiant de l'expéditeur à supprimer, pas son adresse. Get Many Senders reste la façon habituelle de trouver cet identifiant, souvent enchaîné en {{ $json.id }} directement dans ce champ.
        Cas d'usage
        une routine de départ d'un collaborateur qui efface son expéditeur personnel, tandis que l'expéditeur partagé de l'équipe reste intact.
        15

        Get many senders

        sender.getAll

        Ce que tu vois dans n8n

        Notes & cas d'usage

        Renvoie les expéditeurs disponibles dans le compte, avec leurs identifiants. C'est ce qui rend l'opération de suppression praticable.

        Paramètres clés

        • Return All : activé, le nœud parcourt les pages de l'API jusqu'à la liste complète. Désactivé, Limit plafonne le nombre d'expéditeurs renvoyés.
        Cas d'usage
        un audit mensuel qui liste les expéditeurs et les compare aux adresses encore utilisées, pour que le compte n'accumule pas des identités que plus personne ne reconnaît. La même liste alimente un menu quand un workflow laisse un humain choisir sous quel nom part une campagne.
        Besoin d'aide

        Besoin d'aide pour automatiser Brevo avec n8n ?

        L'équipe te répond directement.

        Chaque message est lu par une personne.

        FAQ

        Brevo et n8n : les questions fréquentes

        01L'intégration Brevo n8n est-elle gratuite ?
        Oui, côté n8n. Le nœud Brevo et le Brevo Trigger sont livrés avec n8n : rien à installer, aucun coût supplémentaire, que tu passes par n8n Cloud, l'offre hébergée par n8n, ou par ta propre instance en Community Edition sous licence Sustainable Use. Un workflow se comporte pareil dans les deux cas, donc tu peux monter ton automatisation en local puis la déplacer sur Cloud sans rien réécrire. Ce que coûte le compte Brevo lui-même est une autre question, que cette page ne traite pas. Le seul effort d'installation, c'est le credential : une clé API, enregistrée une fois, réutilisée par les deux nœuds dans tous les workflows suivants.
        02Quels credentials faut-il pour connecter Brevo à n8n ?
        Une clé API, et rien d'autre. Le credential Brevo dans n8n ne propose qu'une méthode d'authentification et demande un seul champ, API Key. Le prérequis est un compte développeur Brevo ; la clé se génère en suivant la documentation de démarrage rapide de l'API Brevo. Enregistre-la une fois dans le menu Credentials et elle couvre à la fois le nœud Brevo et le Brevo Trigger, sans configuration séparée côté trigger. Aucun parcours OAuth à valider, aucun scope à sélectionner, aucune URL de redirection à déclarer. Le jour où la clé tourne, modifier ce credential unique met à jour tous les workflows qui l'empruntent.
        03Quelles sont les limites du nœud Brevo dans n8n ?
        Le nœud couvre 15 opérations sur 4 ressources : contacts, attributs de contact, emails transactionnels et expéditeurs. Tout le reste, listes de contacts, campagnes marketing, SMS, statistiques, sort de son périmètre. Le nœud HTTP Request comble le vide : il appelle n'importe quel endpoint de Brevo et réutilise le même credential via l'authentification prédéfinie, donc la clé reste à un seul endroit. Sur les opérations de lecture, surveille Return All. Laissé désactivé, le nœud s'arrête à Limit, et un workflow qui a l'air complet travaille en fait sur une tranche des données. Active-le pour un export, laisse-le décoché pour une vérification rapide.
        04Le Brevo Trigger réagit-il en temps réel ?
        Impossible de l'affirmer honnêtement, parce que le mécanisme de ce trigger n'est pas documenté sur le nœud. Ce qui est certain : le Brevo Trigger écoute les 12 événements cochés sous Trigger On, en version 1 du nœud, et il n'écoute que tant que le workflow est actif. Désactive le workflow, plus rien n'arrive sur le canevas. Construis donc avec cette contrainte plutôt que contre elle : ne coche que les événements sur lesquels tu agis vraiment, journalise ce qui entre, et double le trigger d'une lecture planifiée via Get Many Contacts quand un processus ne doit rien manquer. Teste avec un envoi réel avant de lui faire confiance en production.
        05n8n ou Make pour Brevo ?
        Ça dépend d'où doit tourner le workflow et de la façon dont tu veux le payer. Make est hébergé par Make, sans option d'auto-hébergement, et facturé à l'opération : un workflow qui boucle sur des milliers de contacts a donc un coût qui suit le volume. n8n tourne sur Cloud ou sur ton propre serveur, ce qui compte quand les données de contact ne doivent pas quitter ton infrastructure. Côté Brevo, les deux atteignent la même API. Les vrais critères de décision sont l'hébergement, la maîtrise des données, le modèle de coût, et la logique visuelle que ton équipe lit le plus vite. Monte un workflow sur chacun avant de trancher.