>_ Black Engine

Supabase error sending confirmation email: solución

Por Black Engine · 6 de noviembre de 2026

“Error sending confirmation email” en Supabase significa que el usuario intentó registrarse, pero el correo de confirmación no se pudo enviar. Las causas son tres: el servicio de correo incluido de Supabase no permite ese destinatario o llegó a su límite, tu SMTP propio está mal configurado (host, puerto, credenciales, remitente), o la plantilla del correo tiene un error. El motivo exacto aparece en los logs de Auth.

SMTP es el protocolo para enviar correos. “Configurar un SMTP propio” significa decirle a Supabase que envíe tus correos a través de un proveedor como Resend o Brevo en lugar de su servicio de prueba.

Paso 1: lee el error real en los logs

  1. En el panel de Supabase abre Logs.
  2. Elige los logs de Auth.
  3. Busca la hora del registro fallido.

Verás algo más específico que el mensaje de la app: autenticación SMTP rechazada, tiempo de espera agotado, remitente no verificado, límite alcanzado, etc.

Paso 2: ¿estás usando el correo incluido de Supabase?

Según la documentación de SMTP de Supabase, a noviembre de 2026 el servicio incluido:

  • Solo entrega a correos del equipo de tu organización en Supabase. A otros correos falla con “Email address not authorized”.
  • Tiene un límite de 2 mensajes por hora (Supabase aclara que puede cambiar sin aviso).
  • No tiene garantía de entrega; es para pruebas.

Si tu app ya tiene usuarios reales, necesitas SMTP propio. No hay otra forma.

Paso 3: configura un SMTP propio

  1. Crea cuenta en un proveedor de correo transaccional (Supabase menciona Resend, AWS SES, Postmark, Twilio SendGrid, ZeptoMail y Brevo).
  2. Verifica tu dominio en el proveedor (te pedirá agregar registros DNS como SPF y DKIM). Sin esto, muchos proveedores rechazan el envío o tus correos caen en spam.
  3. Copia del proveedor: host, puerto, usuario y contraseña SMTP.
  4. En Supabase ve a Authentication → configuración de SMTP y activa Custom SMTP.
  5. Llena los datos y un remitente de tu dominio verificado, por ejemplo [email protected].
  6. Guarda y prueba registrándote con un correo que no sea del equipo.

Al activar SMTP propio, Supabase indica que el límite inicial sube a 30 mensajes por hora y se puede ajustar en Authentication → Rate Limits. Ver email rate limit exceeded.

Paso 4: errores típicos del SMTP propio

Síntoma en el log Causa probable Qué hacer
Autenticación fallida Usuario o contraseña SMTP incorrectos Copia de nuevo las credenciales del proveedor (en algunos, el usuario es fijo, como resend o apikey)
Tiempo agotado (timeout) Puerto bloqueado Usa 587 (STARTTLS) o 465 (TLS); el 25 suele estar bloqueado en la nube
No se pudo conectar al host Host mal escrito Solo el nombre, sin https://: smtp.proveedor.com
Remitente no permitido Dominio no verificado en el proveedor Verifica el dominio y usa un remitente de ese dominio
Error del proveedor por límite Superaste el plan del proveedor Revisa tu cuota en el panel del proveedor

Paso 5: revisa la plantilla del correo

En Authentication → Email Templates, abre Confirm signup. La plantilla debe incluir la variable del enlace:

<h2>Confirma tu correo</h2>
<p><a href="{{ .ConfirmationURL }}">Confirmar mi cuenta</a></p>

Si alguien la editó y rompió la sintaxis de {{ }}, el envío puede fallar. Prueba restaurando la plantilla por defecto.

Paso 6: revisa la URL del enlace

Si el correo sí llega pero al darle clic falla, el problema es otro: la Site URL o las Redirect URLs. Lo explicamos en supabase requested path is invalid.

Si tu app es de Lovable

Las apps con Lovable Cloud envían los correos de autenticación por defecto desde un remitente genérico de Lovable; en planes de pago puedes usar tu propio dominio con su función de Custom emails. Si conectaste tu propio proyecto de Supabase, aplica todo lo de esta guía. Ver también Lovable error verifying email.

Qué hacer con los usuarios que se quedaron sin confirmar

Mientras el correo fallaba, quizá varias personas se registraron y nunca recibieron el enlace. Ya con el SMTP funcionando:

  1. Ve a Authentication → Users y filtra o busca los usuarios sin fecha de confirmación.
  2. Agrega en tu app un botón de “Reenviar correo de confirmación”. Con supabase-js v2 se ve así:
const { error } = await supabase.auth.resend({
  type: 'signup',
  email: correoDelUsuario,
})
  1. Si son pocos y los conoces, escríbeles para que usen ese botón. No los borres para que “se registren otra vez” sin avisarles: pierden lo que hayan guardado.

El correo ya sale pero cae en spam

Que el error desaparezca no significa que el correo llegue a la bandeja de entrada. Revisa:

  • SPF y DKIM verificados en tu proveedor (los registros DNS del paso 3).
  • Un registro DMARC en tu dominio; Gmail y Yahoo lo exigen a quienes envían en volumen.
  • El remitente coincide con el dominio verificado: enviar como [email protected] desde un proveedor que verificó otrodominio.com falla la autenticación.
  • Asunto y texto claros, en español, con el nombre de tu app. Un correo vacío con solo un enlace se parece mucho a phishing.

Para probar, regístrate con cuentas de Gmail, Outlook y un correo de empresa, y revisa la carpeta de spam en las tres.

Errores comunes

  • Probar siempre con el correo del dueño del proyecto (que sí está autorizado) y creer que ya funciona para todos.
  • Usar Gmail personal como SMTP para una app con muchos usuarios: tiene límites bajos y no está pensado para eso.
  • No verificar el dominio en el proveedor y que todo caiga en spam.
  • Desactivar Confirm email “temporalmente” y olvidarlo.

Si tu app no puede registrar usuarios, cada hora cuenta. En Black Engine configuramos el SMTP, el dominio y las plantillas contigo por WhatsApp para que los correos lleguen. Si tienes más errores de Supabase, revisa error 400 en Supabase.

Preguntas frecuentes

¿Por qué Supabase dice 'Error sending confirmation email'?

Porque Supabase no logró enviar el correo de confirmación: el servicio incluido no permite ese destinatario o llegó a su límite, o tu SMTP propio está mal configurado. El detalle exacto está en los logs de Auth.

¿El usuario se creó aunque salga el error?

Con frecuencia sí: el registro existe pero sin confirmar. Revisa en Authentication → Users antes de pedirle que se registre de nuevo.

¿Qué SMTP uso con Supabase?

Supabase menciona proveedores como Resend, AWS SES, Postmark, SendGrid, ZeptoMail y Brevo. Cualquiera que dé host, puerto, usuario y contraseña SMTP funciona.

¿Desactivo la confirmación de correo para que funcione?

No en producción. Cualquiera podría registrarse con correos ajenos. Arregla el envío y deja la confirmación activa.

Pide ayuda por WhatsApp