Brevo
Brevo (antes Sendinblue) es una plataforma francesa de marketing todo en uno (newsletters, SMS, CRM) que incluye una API de correo transaccional. Los datos se alojan en la UE y el plan gratuito permite unos cientos de correos al día.
Elige Brevo si ya lo usas para newsletters o como CRM y quieres tenerlo todo en un sitio, o si buscas un proveedor alojado en la UE con un cupo diario gratuito generoso. Si solo necesitas correo transaccional y la mejor entregabilidad, compáralo con Postmark o Mailgun en el resumen de los servicios.
Requisitos previos
Sección titulada «Requisitos previos»- Una cuenta de Brevo con el correo transaccional activado. A veces las cuentas nuevas quedan pendientes de validación antes de poder enviar correo transaccional.
- Un remitente verificado: añade y autentica tu dominio en Senders, Domains & Dedicated IPs → Domains y añade la dirección From en Senders.
- Una clave de API v3 de SMTP & API → API keys → Generate a new API key (empieza por
xkeysib-). Las claves de API de Brevo no tienen permisos limitados: crea una clave dedicada con un nombre como «Frontmail» para poder revocarla por separado. No uses la clave SMTP (xsmtpsib-…); Frontmail usa la API HTTP. - Si tu cuenta tiene activado Authorised IPs (ajustes de seguridad), desactívalo o añade las IP de salida de Frontmail; si no, todas las llamadas se rechazan con
403 unrecognised IP address.
Conectar en Frontmail
Sección titulada «Conectar en Frontmail»- Abre Servicios de correo → Añadir servicio → Brevo.
- Rellena los campos:
| Campo | Dónde encontrarlo | Ejemplo |
|---|---|---|
| Clave de API (v3) | SMTP & API → API keys (se muestra una sola vez) | xkeysib-1a2b3c…-XyZ |
| Token del webhook | Opcional: el token que elijas para el webhook de Brevo (ver más abajo) | 9f8e7d6c5b4a… |
| Máx. de correos por segundo | Opcional; por defecto 10/s | 10 |
- Haz clic en Verificar y guardar: Frontmail lee los datos de tu cuenta de Brevo con la clave.
- El servicio se guarda cuando la comprobación es correcta. Las credenciales se cifran con cifrado de sobre de AWS KMS.
DNS: SPF, DKIM y DMARC
Sección titulada «DNS: SPF, DKIM y DMARC»Brevo muestra los registros en Senders, Domains & Dedicated IPs → Domains → Authenticate. Valores habituales:
; Código de propiedad del dominioexample.com. TXT "brevo-code:1a2b3c4d5e6f7a8b9c0d"
; DKIM: los dominios nuevos reciben dos CNAME; los antiguos, un único TXT en mail._domainkeybrevo1._domainkey.example.com. CNAME b1.example-com.dkim.brevo.com.brevo2._domainkey.example.com. CNAME b2.example-com.dkim.brevo.com.
; SPF: combínalo con tu registro actualexample.com. TXT "v=spf1 include:spf.brevo.com ~all"
; DMARC_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"- Copia los nombres y valores exactos de los registros desde Brevo: el formato de DKIM ha cambiado con el tiempo (TXT en
mail._domainkeyfrente a los CNAMEbrevo1/brevo2) y las cuentas antiguas pueden seguir mostrandoinclude:spf.sendinblue.com. - Brevo considera obligatorio un registro DMARC para autenticar el dominio; para empezar basta con
p=none. Endurécelo ap=quarantine/p=rejectdespués de revisar los informes.
Regiones
Sección titulada «Regiones»Brevo tiene un único endpoint de API (api.brevo.com/v3) y aloja los datos en la UE. No hay nada que elegir en Frontmail.
Sandbox y límites
Sección titulada «Sandbox y límites»- Plan gratuito: 300 correos al día (transaccionales y de marketing en total).
- Los planes de pago se basan en un volumen mensual de correos; cuando se agotan los créditos, Brevo responde
402 not_enough_credits, que Frontmail trata como un error de auth (el servicio no se puede usar hasta que recargues). - Validación de la cuenta: hasta que Brevo valida tu cuenta, la API puede rechazar los envíos con
account_under_validation. - Brevo admite la cabecera
X-Sib-Sandbox: droppara pruebas en seco; Frontmail no la usa.
Webhooks (seguimiento de la entrega)
Sección titulada «Webhooks (seguimiento de la entrega)»-
Copia la URL del webhook de la página del servicio en Frontmail (botón de copiar):
https://api.frontmail.dev/webhooks/providers/brevo/<token> -
En Brevo, abre Transactional → Settings → Webhook → Add a new webhook (en la interfaz nueva: Settings → Webhooks → Transactional).
-
Pega la URL y, en la autenticación, elige Token. Genera un token aleatorio largo y pégalo en Brevo y en el campo Token del webhook de Frontmail. Así Brevo envía
Authorization: Bearer <token>en cada llamada. (Basic auth también funciona: usa el token como contraseña). -
Selecciona los eventos:
| Evento de Brevo | Evento de Frontmail |
|---|---|
| Delivered | delivered |
| Hard bounce, Invalid email | bounced (permanente): se añade a la lista de supresión |
| Soft bounce, Blocked | se registra como rebote temporal |
| Deferred | se registra en el mensaje |
| Complaint (spam) | complained: se añade a la lista de supresión |
| Opened | opened |
| Clicked | clicked |
Verificación de la firma: Brevo no firma los payloads. El token secreto de la URL identifica el servicio y, si configuras un Token del webhook, Frontmail rechaza las llamadas cuyo bearer token (o contraseña de Basic auth) no coincide.
Frontmail etiqueta cada mensaje con fm:<message id> para poder asociar los eventos.
Errores habituales
Sección titulada «Errores habituales»- auth: el servicio no funciona (clave no válida, IP no autorizada, sin créditos, cuenta pendiente de validación). El servicio se marca como
unhealthy; el propietario recibe un correo y un aviso en el panel. Si la plantilla tiene un servicio de respaldo, este toma el relevo; si no, se devuelve el crédito y el mensaje espera en la cola de correos retenidos comoheld_service_errory se envía automáticamente cuando arreglas el servicio (se vuelve a comprobar al guardar y en la comprobación de estado diaria). - permanent: este mensaje no se puede enviar (destinatario no válido, remitente no válido o sin verificar, error de validación 400). Servicio de respaldo si está configurado; si no,
failedy se devuelve el crédito. - transient: 5xx, 429, tiempos de espera agotados. Se reintenta con espera exponencial; tras el último intento,
failedy se devuelve el crédito.
| Respuesta de Brevo | Clase | Qué hacer |
|---|---|---|
401 unauthorized – Key not found |
auth | Genera una nueva clave de API v3 (no la clave SMTP) y actualiza el servicio. |
403 permission_denied – unrecognised IP address |
auth | Desactiva Authorised IPs o añade las IP de Frontmail. |
402 not_enough_credits |
auth | Mejora el plan o espera a que se renueve el cupo diario/mensual. |
400 account_under_validation |
auth | Completa la validación de la cuenta de Brevo (revisa tu bandeja de entrada de Brevo). |
400 invalid_parameter – sender is invalid / not verified |
permanent | Añade y verifica la dirección From en Senders. |
400 invalid_parameter – email is not valid |
permanent | Consulta destinatario no válido. |
429 Too Many Requests |
transient | Límite de velocidad alcanzado; se reintenta con espera. |
500 / 502 / 503, tiempo de espera agotado |
transient | Caída de Brevo: Frontmail reintenta. |
Lista de comprobación
Sección titulada «Lista de comprobación»- Correo transaccional activado y cuenta validada
- Dominio autenticado:
brevo-code, DKIM, SPF, DMARC - Dirección From añadida en Senders
- Clave de API v3 dedicada (
xkeysib-…), Authorised IPs desactivado o Frontmail permitido - Probar conexión funciona
- Webhook transaccional con autenticación por token y el mismo token en Frontmail
- Eventos: delivered, hard/soft bounce, invalid, blocked, complaint (+ opened/clicked)