Salta ai contenuti

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.

  • 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.
  1. Apri Servizi email → Aggiungi servizio → Brevo.
  2. 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
  1. Clicca Verifica e salva: Frontmail legge i dati del tuo account Brevo con la chiave.
  2. Il servizio viene salvato quando il controllo va a buon fine. Le credenziali sono cifrate con AWS KMS (envelope encryption).

Brevo elenca i record in Senders, Domains & Dedicated IPs → Domains → Authenticate. Valori tipici:

; Codice di proprietà del dominio
example.com. TXT "brevo-code:1a2b3c4d5e6f7a8b9c0d"
; DKIM – i domini più recenti hanno due CNAME, quelli più vecchi un solo TXT su mail._domainkey
brevo1._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 esistente
example.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._domainkey oppure CNAME brevo1/brevo2) e gli account più vecchi possono ancora mostrare include: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.

Brevo ha un unico endpoint API (api.brevo.com/v3) e ospita i dati nell’UE. In Frontmail non c’è niente da selezionare.

  • 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: drop per le prove a vuoto; Frontmail non la usa.
  1. Copia l’URL del webhook dalla pagina del servizio in Frontmail (pulsante di copia):

    https://api.frontmail.dev/webhooks/providers/brevo/<token>
  2. In Brevo apri Transactional → Settings → Webhook → Add a new webhook (interfaccia più recente: Settings → Webhooks → Transactional).

  3. 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.)

  4. 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.

  • 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 come held_service_error e 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 failed e rimborsato.
  • transient – 5xx, 429, timeout. Ritentato con backoff esponenziale; dopo l’ultimo tentativo failed e 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.
  • 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)