---
title: "Connecteur Brevo — Emailing & consentement"
module: integrations
type: functional
status: active
updated: 2026-09-22
---

# Connecteur Brevo — Emailing & consentement

Connecteur **bidirectionnel** du Store : il tient à jour, dans la plateforme d'emailing
[Brevo](https://www.brevo.com/), le fichier de contacts issu du CRM d'Isi-APP — et fait redescendre
dans la fiche contact les désabonnements décidés par les destinataires eux-mêmes. Il peut aussi, en
option, faire remonter vers le CRM les contacts déjà présents chez Brevo — voir *Reprise entrante
des contacts*.

## À quoi ça sert

Un client qui envoie des campagnes depuis Brevo n'a plus à exporter, nettoyer et réimporter un
fichier de contacts à chaque envoi : son CRM et son outil d'emailing restent alignés tout seuls.

Surtout, il n'a plus à surveiller manuellement les désabonnements. Quand un destinataire clique sur
« se désabonner » au bas d'un e-mail, l'information revient **automatiquement** dans la fiche
contact : la case « Opposition prospection » se coche, et la décision est tracée dans le registre de
consentement. Le commercial qui ouvre la fiche le lendemain le voit, et ne rappelle pas.

## Ce qu'il faut pour démarrer

| Prérequis | Détail |
|-----------|--------|
| Un compte Brevo | Le plan gratuit suffit pour tester (voir *Limites et précautions*) |
| Une clé API Brevo | À créer depuis les paramètres du compte Brevo (rubrique des clés API) |
| Un profil administrateur | Voir ci-dessous |

**Qui peut configurer le connecteur.** Tout le Store est réservé aux **administrateurs** : les
profils administrateurs locaux de la structure et les intervenants ISI. Un utilisateur du CRM, même
disposant de tous les droits sur les contacts, **ne verra pas cet écran** — brancher une clé d'accès
à un service externe est un geste d'administration, pas un geste métier.

Cela ne l'empêche en rien de travailler : une fois le connecteur branché par un administrateur, la
synchronisation et les désabonnements fonctionnent pour tout le monde, sans que personne ait à s'en
occuper.

## Installation

1. Dans le **Store**, installer le connecteur **« Brevo — Emailing & consentement »**.
2. Ouvrir **Mes connecteurs**, puis l'instance créée.
3. Coller la **clé API Brevo** et enregistrer.
4. Cliquer sur **« Tester la connexion »** pour vérifier que la clé est acceptée.
5. Renseigner l'**expéditeur** (nom et adresse), utilisé comme expéditeur par défaut des
   campagnes, et si vous le souhaitez la **liste Brevo par défaut** : tout contact synchronisé y
   sera inscrit automatiquement. Laissé vide, ce champ n'inscrit les contacts dans aucune liste —
   ils existent alors chez Brevo sans appartenir à une liste de diffusion, et il faut les y
   ajouter depuis Brevo pour pouvoir leur écrire.

   Une fois la clé API enregistrée, ces deux champs ne se saisissent plus à l'aveugle : la liste
   se **choisit dans un menu déroulant** des listes réellement présentes dans le compte, avec leur
   nombre d'abonnés, et les expéditeurs validés du compte sont rappelés sous le champ d'adresse.
   Désigner une liste ou un expéditeur que le compte Brevo ne connaît pas est **refusé à
   l'enregistrement**, avec le rappel de ce qui existe. C'étaient les deux erreurs qui ne se
   voyaient qu'à l'usage, longtemps après l'écran qui les avait introduites : des contacts
   rattachés à rien, et une campagne refusée au moment de l'envoi.

   **Votre compte ne contient encore aucune liste ?** C'est le cas d'un compte Brevo fraîchement
   ouvert — chaque client branche son propre compte, avec ses propres listes, et Isi-APP n'en
   impose aucune. Le menu déroulant n'a alors rien à proposer : le bouton **« Créer une liste »**,
   posé juste à côté, la crée **dans votre compte Brevo sans quitter Isi-APP**. Elle est aussitôt
   sélectionnée comme liste par défaut ; il ne reste qu'à enregistrer. Sans ce raccourci il fallait
   partir chez Brevo, créer la liste, revenir et recharger l'écran — un aller-retour au moment le
   plus mal choisi, celui de la première configuration.

   Le nom suffit (100 caractères au plus). Brevo range obligatoirement chaque liste dans un
   dossier : s'il n'y en a qu'un, il est retenu sans rien vous demander ; s'il y en a plusieurs, le
   choix vous est proposé. Un nom déjà utilisé dans votre compte est refusé par Brevo, et le
   message vous le dit.

   > **Si le compte Brevo n'est pas joignable**, rien n'est bloqué. Première configuration où la
   > clé n'est pas encore enregistrée, panne, quota dépassé : le champ reste saisissable à la main
   > et l'enregistrement passe, avec un message vous signalant que la vérification n'a pas pu être
   > faite. Un connecteur impossible à paramétrer parce que le service distant ne répond pas
   > coûterait plus cher que l'erreur qu'on cherche à prévenir. La création de liste, elle, n'est
   > pas proposée dans ce cas : sans compte lisible, il n'y a rien à y créer.

   > **Ce réglage inscrit, il ne retire jamais.** Le modifier plus tard n'enlève pas les contacts
   > déjà inscrits dans l'ancienne liste : ils restent dans les deux. Un retrait se fait depuis
   > Brevo.
6. Onglet **Automatisation** : choisir la fréquence et activer la synchronisation automatique.

> **Le retour des désabonnements se met en place tout seul.** Il n'y a plus d'étape technique à
> demander : dès que l'instance est active et que la clé API est enregistrée, Isi-APP annonce à
> Brevo où lui renvoyer les désabonnements — et le refait de lui-même si la clé change. Si
> quelque chose bloque (clé refusée, Brevo indisponible), **l'écran de configuration vous le dit**
> par un bandeau ; sans bandeau, c'est que tout est en place.
>
> **Le symptôme à reconnaître** reste le même : un connecteur qui *ne remonte plus les
> désabonnements alors que la synchronisation fonctionne*. Dans ce cas, réenregistrez la
> configuration — cela relance la déclaration. Si le bandeau persiste, votre interlocuteur ISI
> dispose d'une commande de réparation qui rejoue exactement la même opération.

## Ce qui est synchronisé

Partent vers Brevo **tous les contacts du CRM de votre structure qui ont une adresse e-mail**,
accompagnés de leur **nom**, de leur **prénom**, et de leur **état de consentement**.

C'est ce dernier point qui compte le plus : un contact en opposition **est transmis à Brevo**, avec
la mention « désabonné ». Il n'est pas écarté du fichier. La différence est importante — si on ne
l'envoyait pas, Brevo ignorerait son refus et une campagne pourrait l'atteindre. En le transmettant
avec son refus, on garantit l'inverse : **Brevo sait qu'il ne doit pas lui écrire**.

Ne partent pas :

| Contact | Pourquoi |
|---------|----------|
| Sans adresse e-mail | Rien à envoyer |
| Archivé (supprimé du CRM) | Il n'a plus à figurer dans un fichier de diffusion |
| Rattaché à un client archivé | Même raison : la relation commerciale est close |
| D'une autre structure | Chaque structure a son propre compte Brevo, les fichiers ne se croisent jamais |

> **Exclure n'est pas retirer.** Ces contacts ne sont plus *envoyés* à Brevo — ils n'en sont pas
> *retirés* pour autant. Un contact déjà synchronisé avant que son client ne soit archivé reste
> présent dans le compte Brevo, toujours inscrit à ses listes : une campagne construite **depuis
> Brevo** peut donc encore l'atteindre. Pour qu'il en disparaisse vraiment, il faut le supprimer ou
> le désabonner côté Brevo. Cela ne concerne pas les contacts en opposition, transmis avec leur
> refus et que Brevo n'écrira donc jamais.

> **Le numéro de téléphone n'est pas transmis.** Brevo n'accepte les numéros qu'au format
> international (`+33 6 12 34 56 78`) et refuse les formats français courants (`06 12 34 56 78`),
> tels qu'ils sont saisis dans le CRM. Or un seul numéro mal formaté ferait échouer l'envoi du
> contact **en entier**, nom et consentement compris. Le téléphone est donc volontairement laissé de
> côté : mieux vaut un contact synchronisé sans numéro qu'un contact non synchronisé.

## Le désabonnement : une règle à sens unique

C'est le cœur du connecteur, et la règle mérite d'être comprise telle quelle.

**Quand un destinataire se désabonne depuis un e-mail Brevo**, l'information revient dans Isi-APP en
**quelques secondes** — sans attendre la prochaine synchronisation. La case « Opposition
prospection » se coche sur la fiche contact, et la décision est enregistrée dans le registre de
consentement avec sa date et son origine. Si la même personne existe en double dans le CRM, **toutes
ses fiches** sont mises à jour, et pas seulement la première trouvée.

Dans les rares cas où ce retour immédiat échoue (incident réseau, indisponibilité passagère),
**rien n'est perdu** : Brevo ne renvoie pas l'information, mais la synchronisation suivante la
retrouve et coche l'opposition. Le désabonnement est donc au pire pris en compte avec quelques
heures de décalage, selon la fréquence choisie — jamais oublié.

**L'inverse n'arrive jamais.** Le connecteur ne réabonne **personne**, dans aucune circonstance.

La raison est simple : seule la personne concernée peut revenir sur son refus. Si le CRM ignore
encore qu'un contact s'est désabonné et que Brevo, lui, le sait, c'est Brevo qui a raison — le
destinataire a cliqué chez lui. Réaligner dans l'autre sens reviendrait à effacer un refus explicite
à chaque synchronisation, à l'insu de tout le monde.

Concrètement :

| Situation | Ce que fait le connecteur |
|-----------|---------------------------|
| Désabonné chez Brevo, pas encore dans le CRM | Coche l'opposition dans le CRM |
| En opposition dans le CRM, pas encore chez Brevo | Transmet l'opposition à Brevo |
| Consentement redonné par la personne | **Rien d'automatique** — voir ci-dessous |

Pour qu'un contact redevienne démarchable, il faut **décocher la case « Opposition prospection » sur
sa fiche**, à la main, en connaissance de cause. La décision est alors tracée avec son auteur et sa
date, et transmise à Brevo à la synchronisation suivante. C'est volontairement un geste humain : il
engage la structure.

## À quelle fréquence

La synchronisation complète se règle sur la fiche de l'instance, onglet **Automatisation** :
**toutes les 6 h**, **12 h**, **24 h**, **hebdomadaire** ou **mensuelle**, au choix — avec un
interrupteur *Synchronisation automatique activée*. L'écran affiche la date de la dernière
synchronisation automatique.

Une échéance atteinte est traitée dans les **cinq minutes** qui suivent.

Un rythme quotidien convient à la plupart des structures. Inutile de descendre à 6 h si les contacts
bougent peu : les désabonnements, eux, ne passent pas par la synchronisation — ils arrivent
immédiatement par le retour de Brevo.

Un e-mail d'alerte peut être envoyé en cas d'échec : même onglet, *Notifier par email en cas
d'échec*.

## Lancer une synchronisation et vérifier qu'elle a servi

L'écran de l'instance, dans le Store, porte un panneau **« Synchronisation des contacts »**. Il fait
deux choses.

**Lancer.** Le bouton *Synchroniser maintenant* envoie les contacts sans attendre l'échéance
automatique. Le panneau se met à jour tout seul pendant le traitement, affiche l'issue (succès,
erreur, date) et donne accès à l'historique des exécutions précédentes. Deux synchronisations ne
peuvent pas se chevaucher : tant que l'une tourne, le bouton attend.

**Vérifier.** Le panneau met côte à côte les deux nombres qui comptent : les **contacts démarchables
du CRM** et les **contacts réellement présents dans la liste Brevo de destination**. C'est cette
confrontation qui manquait — un écran qui annonce « Succès » ne dit rien de l'endroit où les
contacts ont atterri.

Trois situations sont nommées explicitement, parce qu'aucune ne se voit autrement qu'en ouvrant
Brevo :

| Ce qui est signalé | Ce que ça veut dire |
|--------------------|---------------------|
| Aucune liste par défaut configurée | Les contacts partent chez Brevo sans appartenir à aucune liste : aucune campagne ne peut les viser |
| La liste configurée n'existe pas dans le compte | Même conséquence, avec en plus l'illusion d'un réglage fait |
| La liste compte nettement moins de contacts que le CRM | La liste n'a pas encore reçu la population du CRM |

Dans ce dernier cas, **lancer une synchronisation remplit bien la liste**, y compris pour les
contacts déjà connus de Brevo : désigner une liste après une première synchronisation les y fait
entrer à la passe suivante. Seuls les contacts désinscrits n'y sont pas versés — ils n'ont rien à
faire dans une liste de diffusion.

Le nombre de contacts s'affiche **« Inconnu »**, jamais zéro, quand la liste n'a pas pu être lue : un
zéro laisserait croire à une liste vide alors qu'on ne sait simplement pas.

Ce panneau compte les contacts **présents** dans la liste, désinscrits compris : il répond à « mes
contacts sont-ils bien arrivés ? ». L'écran des campagnes, lui, annonce les **destinataires
joignables** — les deux nombres diffèrent dès qu'une adresse s'est désabonnée, et c'est normal.

L'égalité parfaite entre les deux nombres n'est **pas** attendue, et un petit écart n'est pas
signalé : deux fiches partageant une adresse ne font qu'un seul abonné, une liste peut contenir des
adresses importées hors du CRM. L'alerte ne se déclenche qu'à
partir d'un écart significatif — sinon le bandeau serait permanent, donc ignoré.

### Le cas qui a motivé cet écran

Une instance affichait une synchronisation « en succès » alors que rien n'était jamais parti. Deux
causes s'additionnaient, et aucune n'était visible depuis l'application :

- la **liste par défaut portait un identifiant qui n'existait pas** dans le compte — les listes
  réelles étaient les n° 2 et 4 : les contacts poussés arrivaient bien chez Brevo, mais sans entrer
  dans aucune liste ;
- **aucun traitement de fond ne prenait en charge les synchronisations du Store** côté serveur : la
  synchronisation complète n'avait donc jamais tourné une seule fois.

Résultat : **961 contacts démarchables** côté CRM face à **1 abonné** côté Brevo, et un écran qui
parlait d'« écart de synchronisation » là où il n'y avait jamais eu de synchronisation du tout. Les
deux causes sont corrigées ; le panneau décrit ci-dessus existe pour que le même cas se lise
désormais en un coup d'œil, depuis l'application.

→ Détail de l'audit :
[Files de jobs sans worker — la file `store` dans l'image Docker](../../.claude/records/audits/queue-workers-2026-09.md).

## Ce qui est tracé

Toute décision de consentement est enregistrée, quelle que soit son origine — un clic de
désabonnement chez Brevo, une case cochée par un commercial, un import de fichier. Le registre
conserve la valeur avant, la valeur après, la date, l'origine et, quand il y en a un, l'auteur.

Un désabonnement venu de Brevo n'a pas d'auteur interne : c'est le destinataire lui-même qui a agi.
C'est normal, et c'est ce que le registre indique.

**Une adresse devenue injoignable n'est pas un refus.** Quand Brevo signale qu'un e-mail n'a
définitivement pas pu être remis — boîte supprimée, domaine disparu —, le contact cesse d'être
démarché, mais l'historique le présente comme **« Adresse devenue injoignable »**, d'origine
« Rebond signalé par la plateforme d'e-mailing », et non comme une opposition. La distinction
compte : cette personne n'a rien demandé, et un registre qui présenterait sa boîte supprimée comme
un refus exprimé serait faux le jour où elle conteste.

Le détail conservé (nom de la campagne, date de l'événement) est **abrégé** au-delà d'une certaine
longueur, avec des points de suspension : le registre garde de quoi comprendre, pas la payload
entière.

→ Détail du registre et de son affichage sur la fiche contact :
[Consentement marketing d'un contact](../crm/contact-marketing-consent.md).

## Limites et précautions

**Volume.** Brevo limite le nombre d'échanges autorisés par heure. La synchronisation s'y adapte
d'elle-même en ralentissant ; si le plafond est malgré tout atteint, elle **s'interrompt
proprement** et reprend à l'échéance suivante, là où elle s'était arrêtée. Aucun contact n'est
perdu, et aucune donnée n'est écrite à moitié. En pratique, elle reste confortable
**jusqu'à environ 30 000 contacts** par structure. Au-delà, une synchronisation complète peut
dépasser l'heure : espacer la fréquence (quotidienne plutôt que toutes les 6 h) suffit généralement.
Si le volume devient réellement contraignant, c'est une évolution technique à demander, pas un
réglage.

**Plan gratuit Brevo.** Il plafonne à **300 envois par jour**, et ce quota est **partagé** entre les
campagnes et les e-mails automatiques (confirmations, notifications). Une campagne vers plus de 300
destinataires ne partira donc pas en une fois. Le plan gratuit convient pour valider le
fonctionnement, pas pour une diffusion réelle. La synchronisation des contacts, elle, n'est pas
concernée par ce quota.

**Reconfiguration.** Changer la clé API ou recréer l'instance déclenche automatiquement une
nouvelle déclaration du retour de Brevo : il n'y a rien à refaire à la main. Le seul cas qui
demande votre attention est un **bandeau d'échec** sur l'écran de configuration — il signifie que
Brevo a refusé la déclaration, et donc que les désabonnements ne reviendront pas tant qu'il est
affiché.

**Doublons.** Brevo identifie un contact par son adresse e-mail : deux fiches CRM partageant la
même adresse n'en forment **qu'une seule** chez Brevo. C'est normal et sans perte — le
désabonnement, lui, redescend bien sur **toutes** les fiches concernées — mais cela signifie qu'un
fichier Brevo peut compter moins de contacts que le CRM. L'écart n'est pas une anomalie à corriger.

> **Le refus l'emporte.** Quand deux fiches partagent une adresse et que l'une des deux refuse les
> communications, **c'est le refus qui s'applique à l'adresse entière** : rien ne sera envoyé à
> cette personne, même si l'autre fiche n'a rien signalé. Une même adresse ne pouvant porter qu'un
> seul état chez Brevo, c'est le choix le plus protecteur — et le seul défendable si la personne
> conteste ensuite avoir été démarchée.

Dans le compte rendu de synchronisation, les fiches en double apparaissent en **« ignorées »** :
leur adresse a déjà été transmise par l'autre fiche. Ce n'est pas une erreur.

## Reprise entrante des contacts

Le connecteur peut aussi faire le chemin inverse de la synchronisation habituelle : repérer, parmi
les contacts déjà présents dans votre compte Brevo, ceux dont l'adresse appartient à un client que
vous suivez déjà dans le CRM — pour vous proposer de les y ajouter.

C'est utile pour un compte Brevo alimenté depuis longtemps par d'autres moyens (formulaires web,
salons, imports manuels) : ses contacts n'entrent jamais automatiquement dans le CRM tant que
cette fonction n'est pas activée.

**C'est une fonction optionnelle, désactivée par défaut.** Elle s'active depuis l'écran de
configuration de l'instance, par la case **« Proposer les contacts Brevo reconnus en import
CRM »**. Une fois activée, le repérage se fait dans la même synchronisation que l'envoi habituel
des contacts — pas d'étape ni de quota supplémentaire.

> **Aucun contact n'entre dans le CRM sans que vous l'ayez validé.** Cocher la case ne crée rien :
> elle ajoute un repérage, dont le résultat attend votre décision dans un écran de revue dédié,
> ligne par ligne, avant toute création.

| Situation | Ce que fait le connecteur |
|-----------|---------------------------|
| L'adresse appartient à un domaine reconnu d'un client déjà suivi | Le contact est proposé à l'écran de revue |
| Le domaine ne correspond à aucun client connu | Le contact n'est pas proposé : Isi-APP ne crée jamais de client à partir d'une simple adresse |
| L'adresse existe déjà parmi vos contacts CRM | Rien n'est recréé — la fiche existante fait foi |
| Le contact n'a **ni nom ni prénom** chez Brevo | Il est écarté, dans l'onglet des lignes non exploitables. Isi-APP **n'invente pas** un nom à partir de l'adresse : `contact@`, `info@` ou `compta@` deviendraient « Contact », « Info », « Compta » — un nom fabriqué finirait dans un e-mail adressé à une personne réelle. Ces adresses sont d'ailleurs le plus souvent des boîtes partagées, pas des contacts |

> **Comment un domaine est rattaché à un client** — domaine déclaré sur la fiche, site web, ou
> adresses des contacts déjà connus, et ce qui se passe quand deux clients partagent le même
> domaine : voir [Rapprochement d'un domaine et d'un client](../crm/customer-domain-resolver.md).
> C'est la page à ouvrir quand un contact est proposé pour le mauvais client, ou n'est pas proposé
> alors que vous l'attendiez.

### L'écran de revue

Trois onglets : **« À créer »** (les contacts proposés), **« Non traité »** (adresses sans nom ni
prénom exploitable, cf. le tableau ci-dessus) et **« Ignorés »** (ce que vous avez définitivement
écarté).

Sur « À créer », chaque ligne dit **pourquoi** un client est proposé — ou ne l'est pas : domaine
déclaré sur la fiche client, domaine du site web, domaine déjà vu chez un contact existant, ou
l'une des trois raisons qui empêchent une proposition univoque (domaine partagé par plusieurs
clients, fournisseur d'e-mail grand public type Gmail, domaine inconnu du CRM). Quand plusieurs
clients partagent le même domaine, ils sont proposés en raccourci ; le sélecteur complet reste de
toute façon toujours disponible si aucun ne convient.

**« Tout créer » ne porte que sur les lignes déjà rattachées.** Choisir un client par défaut étend
la sélection aux autres ; sans ce choix, une ligne sans client proposé n'est jamais créée par un
« tout sélectionner » sans que vous l'ayez vu passer.

**Un lot se traite par 500 au plus.** « Tout sélectionner » retient les 500 premières lignes de
l'onglet et le dit ; les suivantes restent proposées et se traitent au lot d'après. Sur une première
reprise, qui peut compter des dizaines de milliers de contacts, un lot sans limite n'aboutirait pas
et vous laisserait sans réponse.

Depuis l'écran de configuration de l'instance, un bouton mène directement à cet écran et annonce
le nombre de contacts en attente.

### À quoi vous attendre au fil des synchronisations

**La première synchronisation après activation lit l'intégralité du compte Brevo** et peut donc
être plus longue que d'habitude. Les suivantes ne relisent que les contacts **créés ou modifiés
depuis la dernière fois** : le repérage reste rapide, et le quota d'échanges avec Brevo n'est pas
consommé pour rien. Un contact modifié dans Brevo revient naturellement dans les propositions à la
passe suivante, tant que vous ne l'avez pas traité.

> **Un contact que vous aviez archivé dans le CRM peut réapparaître en proposition** s'il existe
> toujours dans votre compte Brevo. C'est volontaire : Isi-APP ne peut pas deviner si vous l'avez
> archivé par erreur ou si Brevo l'a réinscrit légitimement. Pour qu'il cesse d'être proposé,
> utilisez **« Ignorer »** dans l'écran de revue — la décision est définitive et vaut pour toute la
> structure.

> **Si le repérage échoue, votre synchronisation habituelle continue.** Les deux sens sont
> indépendants : une panne côté lecture du compte Brevo n'empêche jamais l'envoi de vos contacts ni
> — surtout — le retour des désabonnements. L'incident est signalé dans le compte rendu de la
> synchronisation.

### Le consentement d'un contact repris

Un contact importé depuis Brevo arrive dans le CRM **sans aucune décision de consentement** : ni
« autorisé », ni « en opposition ». Sa case « Opposition prospection » reste vierge, exactement
comme pour un contact saisi à la main dont personne n'a encore recueilli l'avis — importer un
contact n'équivaut jamais à recueillir son consentement.

**Seule exception** : si le contact est déjà marqué comme désabonné dans votre compte Brevo, son
opposition est reprise telle quelle dès son entrée dans le CRM — la même règle que pour le retour
des désabonnements décrit plus haut. Un refus déjà connu de Brevo reste un refus.

→ Détail du registre de consentement :
[Consentement marketing d'un contact](../crm/contact-marketing-consent.md).

## Campagnes

Le connecteur permet aussi de créer, d'envoyer et de suivre des campagnes e-mail **sans quitter
Isi-APP**. L'écran se trouve dans le CRM, à l'adresse **CRM → Campagnes email** — une entrée de menu qui n'apparaît qu'une fois le connecteur installé et actif, pour ne pas encombrer le CRM des structures qui n'utilisent pas Brevo.

**Qui y a accès.** Configurer le connecteur reste réservé aux administrateurs ; piloter une campagne
est un geste commercial. L'écran suit donc les **droits sur les contacts CRM**, qui sont la
population qu'une campagne adresse :

| Vous avez… | Vous pouvez… |
|------------|--------------|
| le droit de **lecture** des contacts | ouvrir l'écran, consulter les campagnes, leurs statistiques et le nombre de contacts démarchables |
| le droit de **modification** des contacts | en plus : créer, modifier, retirer et **envoyer** une campagne |

Sans droit de lecture, l'entrée de menu n'apparaît pas et l'adresse directe est refusée. En lecture
seule, les boutons d'action ne sont pas proposés : un envoi part vers toute une liste et ne se
rattrape pas.

**Créer une campagne.** Quatre informations : un nom (interne, pour s'y retrouver), l'objet de
l'e-mail, la liste de diffusion Brevo destinataire, et le contenu. Une date d'envoi peut être
renseignée pour programmer le départ — elle s'entend en heure française. L'expéditeur est celui
configuré sur le connecteur : il doit être un expéditeur **déjà validé dans Brevo**, sans quoi
l'envoi est refusé.

Enregistrer **crée la campagne chez Brevo sans l'envoyer**. L'envoi reste un geste distinct et
explicite.

**Une liste vide ne peut pas recevoir de campagne.** Brevo refuse toute campagne qui ne vise
personne. Le sélecteur annonce donc le nombre de contacts de chaque liste, marque celles qui sont
vides « vide, envoi impossible », et bloque l'enregistrement si l'une d'elles est choisie — en
rappelant combien de contacts du CRM sont démarchables et attendent d'y être poussés. C'est le cas
typique d'une liste qu'on vient de créer : lancez la synchronisation depuis la fiche du connecteur,
puis revenez la choisir.

⚠️ **Le nombre affiché compte les contacts présents, pas les destinataires.** Un contact qui s'est
désinscrit reste dans la liste et y est compté, mais ne recevra rien. Brevo ne publie aucun
décompte fiable des joignables : Isi-APP ne peut donc pas vous prévenir d'avance qu'une liste
peuplée n'enverra à personne. Dans ce cas, le refus de Brevo est traduit et affiché au moment de
l'enregistrement — il faut alors choisir une autre liste, un désabonnement ne se défaisant pas
depuis Isi-APP.

**Partir d'un modèle Brevo.** Plutôt que de retaper le contenu, le formulaire propose un champ
facultatif **« Partir d'un modèle Brevo »**, qui reprend le contenu d'un des modèles d'e-mail de votre
compte. Le contenu repris reste **entièrement modifiable** ensuite : c'est ce que l'écran affiche, et
rien d'autre, qui partira chez Brevo.

Trois comportements à connaître :

- **Si le champ de contenu est vide**, le modèle le remplit directement, sans question.
- **S'il contient déjà quelque chose**, l'écran **demande confirmation** avant de le remplacer, en
  nommant le modèle concerné. Refuser conserve votre texte à l'identique.
- **L'objet de l'e-mail n'est repris que s'il est vide.** S'il porte déjà un intitulé, il est conservé
  sans question : il désigne le plus souvent la campagne elle-même (« Newsletter de janvier »), et
  l'objet d'un modèle générique le dégraderait.

**Si votre compte Brevo ne contient aucun modèle**, l'écran vous le dit : c'est fréquent et ce n'est
pas une panne. Si les modèles n'ont pas pu être lus chez Brevo, l'écran l'annonce également. Dans les
deux cas, **le contenu reste saisissable à la main** et la campagne se crée normalement — le choix
d'un modèle est un confort, jamais un passage obligé.

> Les modèles se créent **dans l'éditeur de Brevo**, pas dans Isi-APP. Un modèle que vous venez d'y
> ajouter apparaît dès la prochaine ouverture du formulaire — il n'y a pas de délai à attendre, et
> **un modèle tout juste créé est proposé comme les autres**, même si vous ne l'avez pas activé
> dans Brevo : ce réglage gouverne les envois automatiques de Brevo, pas la reprise de son contenu
> dans une campagne.

**Envoyer.** Le bouton en forme d'avion en papier, dans la colonne d'actions de la ligne (son
infobulle indique « Envoyer la campagne »), demande une confirmation qui annonce **le nombre
d'abonnés de la liste visée** — ce sont eux, et eux seuls, qui recevront l'e-mail. Ce nombre peut différer du compteur
« contacts CRM démarchables » affiché en haut de l'écran : la liste Brevo peut contenir des
adresses qui ne viennent pas du CRM, ou ne pas encore refléter la dernière synchronisation. Quand
l'écart est notable, l'écran le signale. Si ce nombre n'a pas pu être lu chez Brevo, la confirmation
le dit : elle n'affiche **jamais « 0 »**, qui laisserait croire qu'un envoi ne touchera personne.
**Un envoi ne se rattrape pas** : une fois parti, il ne peut être ni annulé ni rappelé. Une campagne
déjà envoyée ne peut pas l'être une seconde fois, même sur un double clic ou un rafraîchissement de
page.

**Suivre.** Le tableau affiche, pour chaque campagne, le nombre d'e-mails envoyés, d'ouvertures, de
clics et de désabonnements. Ces chiffres sont **rafraîchis automatiquement toutes les heures**
pendant les 30 jours qui suivent l'envoi ; l'action *Actualiser les statistiques*, dans le menu
« ⋮ » de la ligne, permet de les rafraîchir immédiatement. Ils peuvent donc accuser un léger retard
sur ce qu'affiche Brevo : c'est volontaire, interroger Brevo à chaque affichage consommerait le
quota d'échanges au détriment de la synchronisation des contacts.

**Retrouver une campagne.** Le tableau se manœuvre comme les autres tableaux de l'application :
recherche sur le nom et l'objet, filtres par statut et par liste de diffusion, tri sur chaque colonne
chiffrée, choix des colonnes affichées, et enregistrement de filtres nommés qu'on retrouve d'une
visite à l'autre. La liste est désormais **paginée** : l'écran n'affichait auparavant que les
**50 campagnes les plus récentes, sans le dire**. Au-delà, des campagnes bien réelles n'apparaissaient
nulle part et rien ne le signalait — un défaut qu'on n'aurait remarqué qu'avec un client envoyant
beaucoup. Toutes sont maintenant atteignables.

**Modifier une campagne.** Tant qu'elle n'est **pas partie** — brouillon ou programmée — une campagne
se modifie depuis le menu « ⋮ » de sa ligne : nom, objet, liste destinataire, date d'envoi et
contenu. C'est le **même formulaire que la création**, pré-rempli. Une campagne **déjà envoyée n'est
plus modifiable** : l'action n'est pas proposée, et elle reste refusée si on tente de la déclencher
par un autre chemin.

> **Le contenu de l'e-mail est relu chez Brevo** à l'ouverture du formulaire : il n'est pas stocké
> dans Isi-APP. Si Brevo est injoignable, ou si la campagne n'y a pas de contenu lisible, l'écran le
> dit et **ne propose aucun champ de contenu** — un champ vide se lirait comme le contenu actuel, et
> l'enregistrer remplacerait le vrai contenu par du vide. Le nom, l'objet, la liste et la date
> restent visibles.

> **En modification, partir d'un modèle demande toujours confirmation** — le champ de contenu est
> déjà rempli avec celui de la campagne. Ce que vous remplaceriez là n'est pas un brouillon : c'est
> le contenu réel de la campagne, qui repartira chez Brevo au prochain enregistrement.

**Quand Brevo ne répond pas.** Les noms des listes de diffusion viennent de Brevo. S'ils n'ont pas pu
être lus, l'écran **l'annonce en tête de tableau** et affiche « Nom de liste indisponible » plutôt
qu'un libellé de remplacement : un nom fabriqué se lirait comme une information fiable et masquerait
la panne — donc aussi le fait que tout ce que l'écran dit des listes est peut-être faux. Le filtre
par liste est alors désactivé, pour ne pas proposer de trier sur des valeurs inconnues. Si au
contraire Brevo répond mais ne connaît plus une liste, la campagne est signalée comme pointant sur une
**liste supprimée chez Brevo** : ce n'est pas une panne mais une information exploitable, et l'envoi
échouerait.

**Retirer une campagne** (menu « ⋮ ») la fait disparaître de la liste dans Isi-APP. Elle **reste chez
Brevo**, avec ses statistiques : une campagne partie ne s'efface pas.

> **Attention au plan gratuit.** Les 300 envois quotidiens sont vite atteints par une campagne
> réelle — voir *Limites et précautions*.

## Voir aussi

- [Consentement marketing d'un contact](../crm/contact-marketing-consent.md) — la fiche contact, la
  date de décision et le registre.
- Doc technique : [`brevo-connector.md`](../../.claude/technical-docs/integrations/brevo-connector.md)
