Brevo
Brevo (ex Sendinblue) è una piattaforma di marketing francese tutto in uno – newsletter, SMS, CRM – che include un’API per le email transazionali. I dati sono ospitati nell’UE e il piano gratuito consente qualche centinaio di email al giorno.
Scegli Brevo quando lo usi già per newsletter o CRM e vuoi avere tutto in un unico posto, oppure vuoi un provider ospitato nell’UE con un generoso limite giornaliero gratuito. Se ti servono solo email transazionali e la massima recapitabilità, confrontalo con Postmark o Mailgun nella panoramica dei servizi.
Prerequisiti
Sezione intitolata “Prerequisiti”- Un account Brevo con le email transazionali attivate. I nuovi account a volte restano in attesa di validazione prima di poter inviare email transazionali.
- Un mittente verificato: aggiungi e autentica il tuo dominio in Senders, Domains & Dedicated IPs → Domains e aggiungi l’indirizzo mittente in Senders.
- Una chiave API v3 da SMTP & API → API keys → Generate a new API key (inizia con
xkeysib-). Le chiavi API di Brevo non hanno permessi limitabili: crea una chiave dedicata, chiamata ad es. «Frontmail», così puoi revocarla in modo indipendente. Non usare la chiave SMTP (xsmtpsib-…): Frontmail usa l’API HTTP. - Se per il tuo account è attivo Authorised IPs (impostazioni di sicurezza), disattivalo oppure aggiungi gli IP in uscita di Frontmail; altrimenti ogni chiamata viene rifiutata con
403 unrecognised IP address.
Collegamento in Frontmail
Sezione intitolata “Collegamento in Frontmail”- Apri Servizi email → Aggiungi servizio → Brevo.
- Compila i campi:
| Campo | Dove trovarlo | Esempio |
|---|---|---|
| Chiave API (v3) | SMTP & API → API keys (mostrata una sola volta) | xkeysib-1a2b3c…-XyZ |
| Token del webhook | Facoltativo – il token che scegli per il webhook di Brevo (vedi sotto) | 9f8e7d6c5b4a… |
| Max email al secondo | Facoltativo; predefinito 10/s | 10 |
- Clicca Verifica e salva: Frontmail legge i dati del tuo account Brevo con la chiave.
- Il servizio viene salvato quando il controllo va a buon fine. Le credenziali sono cifrate con AWS KMS (envelope encryption).
DNS: SPF, DKIM e DMARC
Sezione intitolata “DNS: SPF, DKIM e DMARC”Brevo elenca i record in Senders, Domains & Dedicated IPs → Domains → Authenticate. Valori tipici:
; Codice di proprietà del dominioexample.com. TXT "brevo-code:1a2b3c4d5e6f7a8b9c0d"
; DKIM – i domini più recenti hanno due CNAME, quelli più vecchi un solo TXT su mail._domainkeybrevo1._domainkey.example.com. CNAME b1.example-com.dkim.brevo.com.brevo2._domainkey.example.com. CNAME b2.example-com.dkim.brevo.com.
; SPF – da unire al record esistenteexample.com. TXT "v=spf1 include:spf.brevo.com ~all"
; DMARC_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"- Copia nomi e valori esatti dei record da Brevo: il formato DKIM è cambiato nel tempo (TXT
mail._domainkeyoppure CNAMEbrevo1/brevo2) e gli account più vecchi possono ancora mostrareinclude:spf.sendinblue.com. - Brevo considera obbligatorio un record DMARC per l’autenticazione del dominio; per iniziare basta
p=none. Rendilo più restrittivo (p=quarantine/p=reject) dopo aver esaminato i report.
Regioni
Sezione intitolata “Regioni”Brevo ha un unico endpoint API (api.brevo.com/v3) e ospita i dati nell’UE. In Frontmail non c’è niente da selezionare.
Sandbox e limiti
Sezione intitolata “Sandbox e limiti”- Piano gratuito: 300 email al giorno (transazionali e marketing insieme).
- I piani a pagamento si basano su un volume mensile di email; quando i crediti finiscono Brevo risponde
402 not_enough_credits, che Frontmail tratta come errore auth (il servizio è inutilizzabile finché non ricarichi). - Validazione dell’account: finché Brevo non valida il tuo account, l’API può rifiutare gli invii con
account_under_validation. - Brevo supporta un’intestazione
X-Sib-Sandbox: dropper le prove a vuoto; Frontmail non la usa.
Webhook (tracciamento della consegna)
Sezione intitolata “Webhook (tracciamento della consegna)”-
Copia l’URL del webhook dalla pagina del servizio in Frontmail (pulsante di copia):
https://api.frontmail.dev/webhooks/providers/brevo/<token> -
In Brevo apri Transactional → Settings → Webhook → Add a new webhook (interfaccia più recente: Settings → Webhooks → Transactional).
-
Incolla l’URL e, alla voce autenticazione, scegli Token. Genera un token lungo e casuale e incollalo in Brevo e nel campo Token del webhook di Frontmail. Brevo invierà poi
Authorization: Bearer <token>a ogni chiamata. (Funziona anche Basic auth: usa il token come password.) -
Seleziona gli eventi:
| Evento Brevo | Evento Frontmail |
|---|---|
| Delivered | delivered |
| Hard bounce, Invalid email | bounced (hard) – aggiunto alla lista di soppressione |
| Soft bounce, Blocked | registrato come soft bounce |
| Deferred | registrato sul messaggio |
| Complaint (spam) | complained – aggiunto alla lista di soppressione |
| Opened | opened |
| Clicked | clicked |
Verifica della firma: Brevo non firma i payload. Il token segreto nell’URL identifica il servizio e, quando imposti un Token del webhook, Frontmail rifiuta le chiamate il cui bearer token (o password Basic auth) non corrisponde.
Frontmail etichetta ogni messaggio con fm:<message id>, così gli eventi possono essere associati.
Errori comuni
Sezione intitolata “Errori comuni”- auth – il servizio non funziona (chiave non valida, IP non autorizzato, crediti esauriti, account in validazione). Il servizio viene segnato come
unhealthy; il proprietario riceve un’email e un banner nella dashboard. Subentra il servizio di riserva del modello, se c’è; altrimenti il credito viene rimborsato e il messaggio aspetta nella coda dei messaggi in attesa comeheld_service_errore viene inviato automaticamente dopo che avrai sistemato il servizio (ricontrollato al salvataggio e dal controllo di stato giornaliero). - permanent – questo messaggio non può essere inviato (destinatario non valido, mittente non valido o non verificato, validazione 400). Servizio di riserva se configurato, altrimenti
failede rimborsato. - transient – 5xx, 429, timeout. Ritentato con backoff esponenziale; dopo l’ultimo tentativo
failede rimborsato.
| Risposta di Brevo | Classe | Cosa fare |
|---|---|---|
401 unauthorized – Key not found |
auth | Genera una nuova chiave API v3 (non la chiave SMTP) e aggiorna il servizio. |
403 permission_denied – unrecognised IP address |
auth | Disattiva Authorised IPs o aggiungi gli IP di Frontmail. |
402 not_enough_credits |
auth | Passa a un piano superiore o aspetta che il limite giornaliero/mensile si azzeri. |
400 account_under_validation |
auth | Completa la validazione dell’account Brevo (controlla la tua casella Brevo). |
400 invalid_parameter – sender is invalid / not verified |
permanent | Aggiungi e verifica l’indirizzo mittente in Senders. |
400 invalid_parameter – email is not valid |
permanent | Vedi destinatario non valido. |
429 Too Many Requests |
transient | Limite di frequenza; ritentato con backoff. |
500 / 502 / 503, timeout |
transient | Disservizio di Brevo: Frontmail ritenta. |
Checklist
Sezione intitolata “Checklist”- Email transazionali attivate, account validato
- Dominio autenticato:
brevo-code, DKIM, SPF, DMARC - Indirizzo mittente aggiunto in Senders
- Chiave API v3 dedicata (
xkeysib-…), Authorised IPs disattivato o Frontmail consentito - Prova connessione va a buon fine
- Webhook transazionale con autenticazione Token, stesso token in Frontmail
- Eventi: delivered, hard/soft bounce, invalid, blocked, complaint (+ opened/clicked)