Brevo
Brevo (anciennement Sendinblue) est une plateforme marketing tout-en-un française – newsletters, SMS, CRM – qui inclut une API d’e-mail transactionnel. Les données sont hébergées dans l’UE et l’offre gratuite permet quelques centaines d’e-mails par jour.
Choisissez Brevo si vous l’utilisez déjà pour vos newsletters ou votre CRM et voulez tout centraliser, ou si vous cherchez un fournisseur hébergé dans l’UE avec un quota gratuit quotidien généreux. Si vous n’avez besoin que d’e-mail transactionnel avec une délivrabilité maximale, comparez avec Postmark ou Mailgun dans la présentation des services d’envoi.
Prérequis
Section intitulée « Prérequis »- Un compte Brevo avec l’e-mail transactionnel activé. Les nouveaux comptes sont parfois mis en attente de validation avant de pouvoir envoyer des e-mails transactionnels.
- Un expéditeur vérifié : ajoutez et authentifiez votre domaine dans Expéditeurs, domaines et IP dédiées → Domaines, puis ajoutez l’adresse d’expéditeur sous Expéditeurs.
- Une clé API v3 depuis SMTP & API → Clés API → Générer une nouvelle clé API (elle commence par
xkeysib-). Les clés API Brevo ne sont pas limitées par autorisation – créez une clé dédiée nommée p. ex. « Frontmail » pour pouvoir la révoquer indépendamment. N’utilisez pas la clé SMTP (xsmtpsib-…) ; Frontmail utilise l’API HTTP. - Si les adresses IP autorisées (paramètres de sécurité) sont activées pour votre compte, désactivez-les ou ajoutez les adresses IP sortantes de Frontmail – sinon chaque appel est refusé avec
403 unrecognised IP address.
Connexion dans Frontmail
Section intitulée « Connexion dans Frontmail »- Ouvrez Services d’envoi → Ajouter un service → Brevo.
- Remplissez les champs :
| Champ | Où le trouver | Exemple |
|---|---|---|
| Clé API (v3) | SMTP & API → Clés API (affichée une seule fois) | xkeysib-1a2b3c…-XyZ |
| Jeton du webhook | Facultatif – le token que vous choisissez pour le webhook Brevo (voir plus bas) | 9f8e7d6c5b4a… |
| E-mails par seconde (max.) | Facultatif ; 10/s par défaut | 10 |
- Cliquez sur Vérifier et enregistrer – Frontmail lit les informations de votre compte Brevo avec la clé.
- Le service est enregistré une fois la vérification réussie. Les identifiants sont chiffrés avec le chiffrement d’enveloppe d’AWS KMS.
DNS : SPF, DKIM et DMARC
Section intitulée « DNS : SPF, DKIM et DMARC »Brevo liste les enregistrements sous Expéditeurs, domaines et IP dédiées → Domaines → Authentifier. Valeurs typiques :
; Code de propriété du domaineexample.com. TXT "brevo-code:1a2b3c4d5e6f7a8b9c0d"
; DKIM – les domaines récents reçoivent deux CNAME, les plus anciens un seul TXT sur mail._domainkeybrevo1._domainkey.example.com. CNAME b1.example-com.dkim.brevo.com.brevo2._domainkey.example.com. CNAME b2.example-com.dkim.brevo.com.
; SPF – à fusionner avec votre enregistrement existantexample.com. TXT "v=spf1 include:spf.brevo.com ~all"
; DMARC_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"- Copiez les noms et valeurs exacts depuis Brevo – le format DKIM a changé au fil du temps (TXT
mail._domainkeyou CNAMEbrevo1/brevo2) et les comptes plus anciens peuvent encore afficherinclude:spf.sendinblue.com. - Brevo considère un enregistrement DMARC comme obligatoire pour l’authentification du domaine ;
p=nonesuffit pour commencer. Durcissez enp=quarantine/p=rejectaprès avoir examiné les rapports.
Brevo a un point de terminaison d’API unique (api.brevo.com/v3) et héberge les données dans l’UE. Il n’y a rien à sélectionner dans Frontmail.
Sandbox et limites
Section intitulée « Sandbox et limites »- Offre gratuite : 300 e-mails par jour (transactionnel et marketing confondus).
- Les offres payantes reposent sur un volume mensuel d’e-mails ; quand les crédits sont épuisés, Brevo répond
402 not_enough_credits, que Frontmail traite comme une erreur auth (le service est inutilisable jusqu’à ce que vous rechargiez). - Validation du compte : tant que Brevo n’a pas validé votre compte, l’API peut refuser les envois avec
account_under_validation. - Brevo accepte un en-tête
X-Sib-Sandbox: droppour les essais à blanc ; Frontmail ne l’utilise pas.
Webhooks (suivi de livraison)
Section intitulée « Webhooks (suivi de livraison) »-
Copiez l’URL du webhook depuis la page du service dans Frontmail (bouton de copie) :
https://api.frontmail.dev/webhooks/providers/brevo/<token> -
Dans Brevo, ouvrez Transactionnel → Paramètres → Webhook → Ajouter un nouveau webhook (interface récente : Paramètres → Webhooks → Transactionnel).
-
Collez l’URL et, dans l’authentification, choisissez Token. Générez un token long et aléatoire, collez-le dans Brevo et dans le champ Frontmail Jeton du webhook. Brevo envoie alors
Authorization: Bearer <token>à chaque appel. (La Basic auth fonctionne aussi – utilisez le token comme mot de passe.) -
Sélectionnez les événements :
| Événement Brevo | Événement Frontmail |
|---|---|
| Delivered | delivered |
| Hard bounce, Invalid email | bounced (définitif) – ajoutée à la liste de suppression |
| Soft bounce, Blocked | enregistré comme rebond temporaire |
| Deferred | enregistré sur le message |
| Complaint (spam) | complained – ajoutée à la liste de suppression |
| Opened | opened |
| Clicked | clicked |
Vérification de la signature : Brevo ne signe pas le contenu des webhooks. Le token secret dans l’URL identifie le service et, si vous définissez un Jeton du webhook, Frontmail refuse les appels dont le bearer token (ou le mot de passe Basic auth) ne correspond pas.
Frontmail marque chaque message avec fm:<message id> pour que les événements puissent être associés.
Erreurs courantes
Section intitulée « Erreurs courantes »- auth – le service est cassé (clé invalide, adresse IP non autorisée, plus de crédits, compte en cours de validation). Le service est marqué
unhealthy; le propriétaire reçoit un e-mail et une bannière dans le tableau de bord. Un service de secours défini sur le modèle prend le relais ; sinon le crédit est remboursé et le message attend dans la file d’attente des e-mails retenus enheld_service_error, puis part automatiquement une fois le service réparé (revérifié à l’enregistrement et lors de la vérification d’état quotidienne). - permanent – ce message ne peut pas être envoyé (destinataire invalide, expéditeur invalide ou non vérifié, erreur de validation 400). Service de secours s’il est configuré, sinon
failedet remboursé. - transient – 5xx, 429, délais dépassés. Relancé avec un délai exponentiel ; après la dernière tentative,
failedet remboursé.
| Réponse de Brevo | Catégorie | Que faire |
|---|---|---|
401 unauthorized – Key not found |
auth | Générez une nouvelle clé API v3 (pas la clé SMTP) et mettez à jour le service. |
403 permission_denied – unrecognised IP address |
auth | Désactivez les adresses IP autorisées ou ajoutez les adresses IP de Frontmail. |
402 not_enough_credits |
auth | Passez à une offre supérieure ou attendez la réinitialisation du quota quotidien ou mensuel. |
400 account_under_validation |
auth | Terminez la validation du compte Brevo (consultez votre boîte de réception Brevo). |
400 invalid_parameter – sender is invalid / not verified |
permanent | Ajoutez et vérifiez l’adresse d’expéditeur sous Expéditeurs. |
400 invalid_parameter – email is not valid |
permanent | Voir destinataire invalide. |
429 Too Many Requests |
transient | Limite de débit ; relancé avec un délai croissant. |
500 / 502 / 503, délai dépassé |
transient | Panne chez Brevo – Frontmail relance. |
Liste de contrôle
Section intitulée « Liste de contrôle »- E-mail transactionnel activé, compte validé
- Domaine authentifié :
brevo-code, DKIM, SPF, DMARC - Adresse d’expéditeur ajoutée sous Expéditeurs
- Clé API v3 dédiée (
xkeysib-…), adresses IP autorisées désactivées ou Frontmail autorisé - Tester la connexion réussit
- Webhook transactionnel avec authentification par token, même token dans Frontmail
- Événements : delivered, hard/soft bounce, invalid, blocked, complaint (+ opened/clicked)