# Supabase + Brew

Activa automatizaciones de Brew con webhooks de base de datos de la tabla auth.users de Supabase, incluidos eventos derivados para la confirmación del email, el cambio de contraseña, el paso de usuario anónimo a usuario real y el bloqueo o desbloqueo.

URL canónica: https://brew.new/es/browse/integrations/supabase

- Dirección: Entrada de datos
- Conexión: Secreto del webhook
- Disparadores por eventos de autenticación

## Funciones disponibles

- **Disparadores por eventos**: Activa automatizaciones de Brew con webhooks de base de datos de la tabla auth.users de Supabase, incluidos eventos derivados para la confirmación del email, el cambio de contraseña y el inicio de sesión.

## Convierte los eventos de autenticación en emails útiles

Conecta Supabase para activar emails fieles a tu marca cuando alguien se registra, confirma su email o cambia su contraseña, o cuando se bloquea una cuenta. Un script de configuración añade un trigger de base de datos a tu tabla auth.users, y Brew convierte cada cambio en uno de sus 12 disparadores de automatizaciones.

Supabase Auth sigue encargándose del inicio de sesión, los enlaces de confirmación, los magic links y los restablecimientos de contraseña. Brew crea y envía los emails que vienen después de esos cambios.


## Qué puedes crear

- Emails de bienvenida: parte del evento auth.user.email_confirmed para que el primer email solo llegue a direcciones verificadas. Brew solo deriva ese evento de una actualización que asigna un valor a email_confirmed_at, así que un usuario cuya fila se crea ya confirmada solo genera auth.user.created. Comprueba qué caso se da en tu proyecto y elige un solo disparador para no enviar bienvenidas duplicadas.
- Bienvenidas a cuentas que dejan de ser anónimas: el evento auth.user.upgraded_from_anonymous se emite cuando is_anonymous pasa de true a false, es decir, cuando un usuario anónimo se convierte en una cuenta permanente.
- Avisos de cambio de contraseña: el evento auth.user.password_changed se emite con cualquier cambio en encrypted_password. El payload no incluye ningún dato de la contraseña. Enlaza a tu propia página de recuperación de cuenta por si no fue el propio usuario quien hizo el cambio.
- Avisos de cambio de email: el evento auth.user.email_changed incluye la dirección anterior en previousValue y la nueva en newValue. Brew envía el email a la dirección nueva.
- Seguimiento de invitaciones: el evento auth.user.invited se emite cuando una actualización asigna un valor a invited_at. Supabase Auth envía por su cuenta el enlace de invitación, y un email de Brew puede añadir contexto de onboarding. Envía una invitación de prueba real desde tu proyecto antes de confiar en este disparador.
- Avisos de suspensión: el evento auth.user.banned se emite cuando se asigna un valor a banned_until e incluye ese valor en newValue. El evento auth.user.unbanned se emite cuando se borra banned_until.
- Confirmaciones de eliminación: el evento auth.user.deleted se emite cuando se elimina la fila y sigue incluyendo la dirección de email de esa fila.

## Los inicios de sesión no indican que alguien haya vuelto

El evento auth.user.signed_in se emite cuando cambia last_sign_in_at. Las renovaciones del token de Supabase también cambian esa columna, así que el evento puede emitirse una y otra vez mientras un usuario mantiene la sesión iniciada. No demuestra que alguien haya vuelto tras una larga ausencia.

Además, es el evento derivado con menor prioridad. Cuando la misma actualización confirma un email o convierte en permanente una cuenta anónima, Brew emite ese evento en lugar de auth.user.signed_in.

Para retomar el contacto con usuarios inactivos, determina la inactividad en tu aplicación a partir de sus propios datos de actividad. Dispara un evento personalizado de Brew aparte solo para los usuarios que cumplan los requisitos, y deja que una automatización activa envíe ese email a partir del evento.

Prueba las dos rutas: un usuario inactivo recibe el email; un usuario que estuvo activo antes de la comprobación, no.


## Configura Supabase en Brew

- Abre Integraciones, elige Supabase y selecciona Generar URL del webhook. Brew ya incluye esa URL en el SQL de configuración.
- Crea un secreto de firma con openssl rand -hex 32. Ni Brew ni Supabase lo generan, y Brew exige al menos 16 caracteres.
- En Supabase, abre SQL Editor y pega el SQL de configuración. Sustituye el marcador del secreto por tu secreto y ejecútalo. El SQL activa pgcrypto y pg_net, guarda el secreto en Supabase Vault y añade a auth.users un trigger de base de datos para las inserciones, las actualizaciones y las eliminaciones.
- Pega el mismo secreto en Brew y selecciona Conectar. Al conectar, Brew crea disparadores para los 12 eventos. No hay ningún interruptor para activar o desactivar eventos.
- Después de conectar, crea un usuario de prueba en Supabase, en Authentication > Users. En Brew, el estado pasa de “Esperando un evento de prueba” a “Conectado”, y Eventos recientes muestra la entrega con “firma correcta”.
- Crea una automatización, selecciona su evento de Supabase y envía una prueba mientras siga siendo un borrador. Cuando llega un evento que coincide, solo se ejecutan las automatizaciones activas.
- Necesitas permiso para ejecutar SQL en el esquema auth, instalar extensiones y escribir en Supabase Vault. Puedes volver a ejecutar el SQL sin problema después de rotar el secreto.

## Eventos de Supabase compatibles

Los eventos auth.user.created, auth.user.updated y auth.user.deleted vienen de las inserciones, actualizaciones y eliminaciones en auth.users. Brew deriva los demás eventos de una actualización, comparando la fila anterior con la nueva.

Una actualización genera un solo evento. Cuando cambian varias columnas a la vez, gana la primera coincidencia en este orden: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Una actualización que no coincide con ninguno de ellos llega como auth.user.updated.

Brew admite 12 tipos de evento:

- auth.user.created
- auth.user.updated
- auth.user.deleted
- auth.user.email_confirmed
- auth.user.phone_confirmed
- auth.user.email_changed
- auth.user.password_changed
- auth.user.signed_in
- auth.user.banned
- auth.user.unbanned
- auth.user.invited
- auth.user.upgraded_from_anonymous

## Sincronización de contactos y personalización

Cada evento verificado con una dirección de email real crea o actualiza un contacto de Brew, identificado por su email, tanto si alguna automatización usa el evento como si no. Cuando los datos están disponibles, Brew completa el nombre, el apellido, supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url y supabase_provider.

Algunos eventos también completan campos del ciclo de vida. El campo supabase_account_status pasa a active, invited, banned o deleted. Los campos supabase_email_verified_at, supabase_phone_verified_at y supabase_last_sign_in_at vienen de los eventos de confirmación y de inicio de sesión correspondientes.

Usa el esquema de payload declarado del evento seleccionado para las etiquetas de combinación. Todos los eventos incluyen email y, cuando están disponibles, firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt y emailConfirmedAt. Los nombres y los avatares vienen de raw_user_meta_data, con valores de respaldo para los registros con OAuth. Las tres marcas de tiempo se expresan en segundos Unix.

Los eventos derivados añaden previousValue, newValue o ambos, con el valor anterior y el nuevo de la columna como texto. El evento auth.user.password_changed no tiene ninguno de los dos. El campo provider contiene el método de registro, como email, google o github, así que puedes dirigir los flujos de bienvenida según cómo se registró cada persona.

El ID de usuario de Supabase no es una etiqueta de combinación. Brew lo guarda en el contacto como supabase_user_id para filtrar y segmentar.

Una cuenta de Supabase no acredita el consentimiento para emails de marketing. Guarda el consentimiento en el momento del registro y compruébalo antes de hacer envíos promocionales.


## ¿Brew sustituye los emails de autenticación de Supabase?

No. Supabase Auth sigue enviando los enlaces de confirmación, los magic links, las invitaciones y los restablecimientos de contraseña con su propia configuración de email, como un SMTP personalizado. Brew inicia automatizaciones después de que esos cambios lleguen a auth.users. Supabase recomienda usar dominios de envío distintos para el email de autenticación y el de marketing.


## ¿Por qué aparece un evento sin que se envíe ningún email?

Recibir un evento y enviar un email son pasos distintos. Confirma que haya una automatización coincidente activa; después, revisa sus filtros y su historial de ejecuciones, y comprueba que el destinatario pueda recibir el email y el estado del dominio de envío. Un evento de un usuario sin dirección de email, como un usuario anónimo que aún no ha añadido ninguna, no crea ningún contacto ni inicia ninguna automatización.


## Límites y solución de problemas

- Brew solo lee auth.users. Para eventos de otras tablas, crea un disparador personalizado en Brew y actívalo con la API de Brew desde tu aplicación o desde una Edge Function de Supabase.
- Brew no puede crear, bloquear ni eliminar usuarios de Supabase, y no envía los emails de Supabase Auth.
- Si las entregas no superan la comprobación de la firma, el secreto de Supabase Vault no coincide con el de Brew. Genera un secreto nuevo, vuelve a ejecutar con él el SQL de configuración y vuelve a conectar Supabase en Brew con el mismo valor.
- Si no llega ninguna entrega, vuelve a ejecutar el SQL de configuración y comprueba que pgcrypto esté instalado y que el secreto de Vault coincida con el de Brew.
- Tras un evento auth.user.email_changed, Brew crea o actualiza el contacto con la dirección nueva. El contacto con la dirección anterior no cambia.
- El evento auth.user.deleted establece supabase_account_status en deleted. No elimina el contacto de Brew.
- Revisa el consentimiento y la finalidad de cada email. Sincronizar los usuarios de Supabase no autoriza a hacer envíos promocionales.

## Fuentes y guías de configuración

- [Compara herramientas de email para Supabase](/es/blog/best-email-tools-for-supabase-auth-emails-product-events-and-lifecycle-campaigns)
- [Guía de configuración de Supabase](https://docs.brew.new/integrations/import/supabase)
- [Crea una automatización](https://docs.brew.new/create-emails/build-an-automation)
- [Etiquetas de combinación](https://docs.brew.new/create-emails/merge-tags)
- [Qué puedes enviar con Brew](https://docs.brew.new/get-started/what-you-can-send)
- [Webhooks de base de datos de Supabase](https://supabase.com/docs/guides/database/webhooks)
- [Campos de usuario de Supabase](https://supabase.com/docs/guides/auth/users)
- [SMTP personalizado en Supabase](https://supabase.com/docs/guides/auth/auth-smtp)

## Relacionado

- [Todas las integraciones](https://brew.new/es/browse/integrations.md)
- [Crear cuenta](https://brew.new/es/sign-up.md)
- Sitio web: https://brew.new
