Fundaia

Entrar Empezar

Correo

Cada proyecto trae Correo: tu propio Resend dentro de Fundaia. Envías desde tus dominios con DKIM, ves cada correo y lo que le pasó, y tu código usa los SDK oficiales de Resend sin cambiar nada más que la dirección. Está en la barra del proyecto (Correo), en fundaia email y en el servidor MCP.

Empezar en cuatro pasos

  1. Añade un dominio en Correo › Dominios (fundaia email domains add example.com). Mejor un subdominio dedicado, como mail.example.com: separa la reputación del correo de tu dominio principal.
  2. Publica sus registros DNS. Si la zona está en una cuenta de Cloudflare que la instancia alcanza, Configurar DNS automáticamente los escribe por ti. Si no, cópialos en tu proveedor:
RegistroTipoNombrePara qué
DKIMTXTfundaia-xxxx._domainkeyFirma cada correo con la clave de tu dominio
SPFTXTsendAutoriza a la plataforma a enviar en nombre del dominio de rebotes
RebotesMXsendDevuelve los rebotes a Fundaia (cuando la instancia recibe correo)
DMARCTXT_dmarcRecomendado: v=DMARC1; p=none; para empezar
RecepciónMX@Solo si activas Recibir correo

Nunca se sobrescribe una política SPF ni un MX que ya tengas: si existen, te decimos qué añadir.

  1. Espera a la verificación. Fundaia comprueba los registros con resolvedores públicos, a menudo los primeros minutos y luego cada media hora. Puedes forzarlo con Verificar ahora. Pasadas 72 horas sin verificar, el dominio queda como fallido; corrige los registros y vuelve a verificar.
  2. Crea una clave en Correo › Claves API o conecta un servicio. La clave se muestra una sola vez.

Enviar desde tu código

La API vive en https://infrastructure.fundaia.com/api/email y habla el mismo idioma que la de Resend: las mismas rutas, los mismos campos y los mismos errores. Con el SDK oficial de Node basta con su baseUrl:

import { Resend } from 'resend'

const resend = new Resend(process.env.RESEND_API_KEY, { baseUrl: process.env.RESEND_BASE_URL })

await resend.emails.send({
  from: 'Tienda <hola@mail.example.com>',
  to: 'ana@example.org',
  subject: 'Tu pedido está en camino',
  html: '<p>Gracias por tu compra</p>',
})

El SDK de Node también lee RESEND_BASE_URL del entorno, así que muchas veces no hay que tocar el código. Desde cualquier otro lenguaje, una petición HTTP:

curl https://infrastructure.fundaia.com/api/email/emails \
  -H "Authorization: Bearer fdm_..." \
  -H "Content-Type: application/json" \
  -d '{"from":"hola@mail.example.com","to":"ana@example.org","subject":"Hola","text":"Hola"}'

Conectar un servicio

Conectar a un servicio (o fundaia email connect api) crea una clave de solo envío para ese servicio y le escribe RESEND_API_KEY (sellada) y RESEND_BASE_URL, y además SMTP_HOST, SMTP_PORT, SMTP_USER y SMTP_PASSWORD cuando la instancia acepta SMTP. El servicio las recibe en su próximo despliegue.

Por SMTP

Si tu aplicación solo sabe enviar por SMTP, usa el servidor y el puerto que muestra Correo › Resumen, el usuario fundaia y tu clave como contraseña. Lo que llega por SMTP pasa por las mismas reglas que la API.

Qué admite un envío

  • from, to, cc, bcc y reply_to, con nombre o sin él ("Ana <ana@example.org>"). Hasta 50 destinatarios entre to, cc y bcc.
  • html y text. Si solo mandas HTML, la versión de texto se genera sola.
  • attachments: content en base64 o path con una URL pública; hasta 40 MB por correo. Con content_id el adjunto va incrustado (<img src="cid:logo">). No se admiten ejecutables.
  • tags ([{ "name": "categoria", "value": "pedido" }]), que vuelven en los webhooks, y headers propios. From, Subject, Message-ID y similares los pone la plataforma.
  • scheduled_at: una fecha ISO 8601 o una frase como in 10 minutes o en 2 horas, como mucho a 30 días. Un correo programado se puede reprogramar o cancelar hasta que sale.
  • La cabecera Idempotency-Key: repetir una petición con la misma clave durante 24 horas devuelve el mismo correo, sin enviarlo dos veces. Usarla con otro contenido es un error 409.
  • Lotes: POST /emails/batch con hasta 100 correos (sin adjuntos ni programación). Con x-batch-validation: permissive, los correos válidos salen y los demás vuelven en errors.
  • template: { "id": "bienvenida", "variables": { "nombre": "Ana" } } envía con una plantilla publicada.

Direcciones de prueba

delivered@resend.dev, bounced@resend.dev, complained@resend.dev y suppressed@resend.dev simulan cada resultado sin enviar nada a nadie, también con etiquetas (delivered+pedidos@…). Sirven para probar tus webhooks antes de verificar un dominio.

Lo que le pasa a cada correo

Correo › Correos lista todo lo que enviaste, con su estado: en cola, programado, enviándose, enviado, entregado, entrega retrasada, rebotado, queja, fallido o cancelado. El detalle muestra cada destinatario con la última respuesta de su servidor, la línea de tiempo, las cabeceras, los adjuntos y una vista previa del HTML (aislada: nunca ejecuta nada del correo).

  • Reintentos: si el servidor del destinatario dice «más tarde», Fundaia lo reintenta a 1, 5, 15 y 30 minutos, a 1, 2 y 4 horas, y luego cada 8 horas, hasta 72 horas. Pasado ese plazo, el correo cuenta como rebotado.
  • Rebotes y quejas: un rebote definitivo o una queja de spam añaden la dirección a la lista de supresión del proyecto, y no se le vuelve a escribir. La lista se ve, se busca y se edita en Correo › Supresiones.
  • Seguimiento: activa en el dominio el seguimiento de aperturas (una imagen invisible) y de clics (los enlaces pasan por la plataforma). Cada apertura cuenta una vez por destinatario; los clics, todos.
  • Conservación: el contenido de los correos se guarda 30 días; el registro de cada envío, lo que diga tu plan.

Audiencias y difusiones

Una audiencia es una lista de contactos: añádelos uno a uno, por la API o importando un CSV con una columna email (y opcionalmente nombre, apellidos y baja).

Una difusión es un correo para toda una audiencia. Cada contacto recibe el suyo, personalizado con {{{FIRST_NAME|amiga}}}, {{{LAST_NAME}}} o {{{EMAIL}}}, y con un enlace de baja: {{{RESEND_UNSUBSCRIBE_URL}}} en el cuerpo, además de la baja en un clic que Gmail y Outlook muestran junto al remitente. Quien se da de baja deja de recibir difusiones de ese proyecto. Antes de enviar puedes mandarte una prueba; después, el detalle cuenta entregas, aperturas, clics y rebotes.

Plantillas

Una plantilla guarda asunto, remitente, HTML y texto con variables: {{nombre}} se escapa como HTML y {{{nombre}}} va tal cual, las dos con un valor por defecto opcional ({{nombre|cliente}}). Editas un borrador, lo previsualizas con valores de ejemplo y lo publicas: los envíos usan siempre la versión publicada, así que puedes trabajar en la siguiente sin romper nada.

Webhooks

Correo › Webhooks manda cada evento a tu endpoint HTTPS: email.sent, email.delivered, email.delivery_delayed, email.bounced, email.complained, email.opened, email.clicked, email.failed, email.scheduled, email.received, contact.created, contact.updated, contact.deleted, domain.created, domain.updated y domain.deleted.

Cada petición va firmada como las de Resend, con las cabeceras svix-id, svix-timestamp y svix-signature, así que la librería svix la verifica con la clave whsec_… que ves una sola vez al crear el webhook. Si tu endpoint no contesta con un 2xx, se reintenta a los 5 segundos, 5 y 30 minutos, y 2, 5 y 10 horas. Cada entrega se ve con su respuesta y se puede reintentar a mano.

Correo entrante

Activa Recibir correo en un dominio y publica su MX. Lo que llegue a cualquier dirección de ese dominio aparece en Correo › Recibidos, con sus adjuntos y el .eml original, y dispara email.received. Un dominio recibe en un solo proyecto. La recepción depende de que la instancia tenga configurado su servidor de entrada; si no lo tiene, Correo › Resumen lo dice.

Planes

Correo se contrata aparte del plan de la plataforma, por espacio de trabajo, en Facturación › Correo:

PlanPrecioCorreos al mesAl díaDominiosExcedente
Gratis0 €3.0001001No: se para al llegar
Pro15 €/mes50.000Sin límite100,80 € por cada 1.000
Escala75 €/mes150.000Sin límite1000,60 € por cada 1.000
EmpresaA medidaA medidaA medidaA medidaEscríbenos

Cuenta cada destinatario de cada correo. Las direcciones de prueba y las suprimidas no cuentan. Todas las funciones están en todos los planes. La API acepta hasta 10 peticiones por segundo por clave.

Registros de la API

Correo › Registros guarda cada llamada a la API durante 30 días: la clave, el método, la ruta, la respuesta, cuánto tardó y desde qué cliente.

Cómo sale el correo de la plataforma

Quien administra la instancia elige por dónde sale el correo:

  • Sandbox: nada sale de la plataforma. Cada correo se guarda y se ve como entregado. Es lo que hay mientras la instancia no tiene salida, y Correo › Resumen lo avisa.
  • Directo: la plataforma entrega a los servidores de cada destinatario por el puerto 25.
  • Relay: la plataforma firma y entrega a un servidor SMTP intermedio, por ejemplo un MTA propio con IP limpia.

En los tres casos el DKIM es el de tu dominio, así que cambiar de salida no te obliga a tocar tu DNS.