Ir al contenido

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.

  • 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.
  1. Abre Servicios de correo → Añadir servicio → Brevo.
  2. 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
  1. Haz clic en Verificar y guardar: Frontmail lee los datos de tu cuenta de Brevo con la clave.
  2. El servicio se guarda cuando la comprobación es correcta. Las credenciales se cifran con cifrado de sobre de AWS KMS.

Brevo muestra los registros en Senders, Domains & Dedicated IPs → Domains → Authenticate. Valores habituales:

; Código de propiedad del dominio
example.com. TXT "brevo-code:1a2b3c4d5e6f7a8b9c0d"
; DKIM: los dominios nuevos reciben dos CNAME; los antiguos, un único TXT en 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: combínalo con tu registro actual
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 los nombres y valores exactos de los registros desde Brevo: el formato de DKIM ha cambiado con el tiempo (TXT en mail._domainkey frente a los CNAME brevo1/brevo2) y las cuentas antiguas pueden seguir mostrando include:spf.sendinblue.com.
  • Brevo considera obligatorio un registro DMARC para autenticar el dominio; para empezar basta con p=none. Endurécelo a p=quarantine / p=reject después de revisar los informes.

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.

  • 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: drop para pruebas en seco; Frontmail no la usa.
  1. 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>
  2. En Brevo, abre Transactional → Settings → Webhook → Add a new webhook (en la interfaz nueva: Settings → Webhooks → Transactional).

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

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

  • 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 como held_service_error y 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, failed y se devuelve el crédito.
  • transient: 5xx, 429, tiempos de espera agotados. Se reintenta con espera exponencial; tras el último intento, failed y 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.
  • 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)