# Supabase + Brew

Dispare automações do Brew a partir de webhooks de banco de dados da tabela auth.users do Supabase, incluindo eventos derivados de confirmação de e-mail, troca de senha, conversão de usuário anônimo em real e banimento ou desbanimento.

URL canônica: https://brew.new/pt-br/browse/integrations/supabase

- Direção: Entrada de dados
- Conexão: Segredo de webhook
- Gatilhos de eventos de autenticação

## Funcionalidades disponíveis

- **Gatilhos de evento**: Dispare automações do Brew a partir de webhooks de banco de dados da tabela auth.users do Supabase, incluindo eventos derivados de confirmação de e-mail, troca de senha e login.

## Transforme eventos de autenticação em e-mails úteis

Conecte o Supabase para disparar e-mails com a cara da sua marca quando alguém se cadastra, confirma o e-mail, troca a senha ou é banido. Um script de configuração adiciona um trigger à sua tabela auth.users, e o Brew transforma cada mudança em um dos 12 gatilhos de automação.

O Supabase Auth continua responsável pelo login, pelos links de confirmação, pelos links mágicos e pelas redefinições de senha. O Brew cria e envia os e-mails que vêm depois dessas mudanças.


## O que você pode criar

- E-mails de boas-vindas: comece pelo evento auth.user.email_confirmed, para que o primeiro e-mail chegue só a endereços verificados. O Brew só deriva esse evento de uma atualização que preenche email_confirmed_at; assim, um usuário cuja linha já nasce confirmada gera apenas o auth.user.created. Confira qual caso vale para o seu projeto e escolha um único gatilho para evitar boas-vindas duplicadas.
- Boas-vindas a usuários anônimos que criam conta: o evento auth.user.upgraded_from_anonymous é disparado quando is_anonymous muda de true para false, ou seja, quando um usuário anônimo vira uma conta permanente.
- Avisos de troca de senha: o evento auth.user.password_changed é disparado a cada mudança em encrypted_password. O payload não traz nenhum dado da senha. Inclua um link para a sua própria página de recuperação de conta, caso não tenha sido o usuário quem fez a mudança.
- Avisos de troca de e-mail: o evento auth.user.email_changed traz o endereço antigo em previousValue e o novo em newValue. O Brew envia para o endereço novo.
- Acompanhamento de convites: o evento auth.user.invited é disparado quando uma atualização preenche invited_at. O próprio Supabase Auth envia o link do convite, e um e-mail do Brew pode acrescentar informações de onboarding. Envie um convite de teste real pelo seu projeto antes de contar com esse gatilho.
- Avisos de suspensão: o evento auth.user.banned é disparado quando banned_until é preenchido e traz esse valor em newValue. O auth.user.unbanned é disparado quando banned_until é limpo.
- Confirmações de exclusão: o evento auth.user.deleted é disparado quando a linha é excluída e ainda inclui o endereço de e-mail dessa linha.

## Eventos de login não indicam que a pessoa voltou

O evento auth.user.signed_in é disparado quando last_sign_in_at muda. As renovações de token do Supabase também mudam essa coluna, então o evento pode ser disparado várias vezes enquanto o usuário continua logado. Ele não indica que alguém voltou depois de uma longa ausência.

Ele também é o evento derivado de menor prioridade. Quando a mesma atualização confirma um e-mail ou converte um usuário anônimo em conta permanente, o Brew emite esse evento no lugar do auth.user.signed_in.

Para enviar um e-mail de acompanhamento a usuários inativos, decida na sua aplicação quem está inativo, com base nos dados de atividade dela. Dispare um evento personalizado separado no Brew só para os usuários que se encaixam nesse critério e deixe que uma automação ativa envie o acompanhamento a partir desse evento.

Teste os dois caminhos: um usuário inativo recebe o acompanhamento; um usuário que estava ativo antes da verificação não recebe.


## Configure o Supabase no Brew

- Abra Integrações, escolha Supabase e selecione Gerar URL do webhook. O Brew já preenche essa URL no SQL de configuração.
- Crie um segredo de assinatura com openssl rand -hex 32. Nem o Brew nem o Supabase geram esse segredo, e o Brew exige pelo menos 16 caracteres.
- No Supabase, abra o SQL Editor e cole o SQL de configuração. Troque o placeholder do segredo pelo seu segredo e execute o SQL. Ele ativa as extensões pgcrypto e pg_net, guarda o segredo no Supabase Vault e adiciona um trigger em auth.users para inserções, atualizações e exclusões.
- Cole o mesmo segredo no Brew e selecione Conectar. Ao conectar, o Brew cria gatilhos para todos os 12 eventos. Não há um botão para ativar ou desativar eventos.
- Depois de conectar, crie um usuário de teste no Supabase, em Authentication > Users. O status no Brew muda de “Aguardando evento de teste” para “Conectado”, e o painel Eventos recentes mostra a entrega com “assinatura válida”.
- Crie uma automação, selecione o evento do Supabase dela e envie um teste enquanto ela ainda estiver como rascunho. Só automações ativas são executadas quando chega um evento correspondente.
- Você precisa de permissão para executar SQL no esquema auth, instalar extensões e gravar no Supabase Vault. É seguro executar o SQL de novo depois de rotacionar o segredo.

## Eventos do Supabase compatíveis

Os eventos auth.user.created, auth.user.updated e auth.user.deleted vêm de inserções, atualizações e exclusões em auth.users. O Brew deriva os demais eventos de uma atualização, comparando a linha antiga com a nova.

Uma atualização gera um único evento. Quando várias colunas mudam juntas, vale a primeira correspondência, nesta ordem: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Uma atualização que não corresponde a nenhum desses casos chega como auth.user.updated.

O Brew é compatível com estes 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

## Sincronização de contatos e personalização

Cada evento verificado com um endereço de e-mail real cria ou atualiza um contato do Brew, identificado pelo e-mail, independentemente de alguma automação usar o evento. Quando o evento traz esses dados, o Brew preenche o nome, o sobrenome e os campos supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url e supabase_provider.

Alguns eventos também preenchem campos de ciclo de vida. O campo supabase_account_status passa a ser active, invited, banned ou deleted. Os campos supabase_email_verified_at, supabase_phone_verified_at e supabase_last_sign_in_at vêm dos eventos de confirmação e de login correspondentes.

Use o esquema de payload declarado do evento selecionado para as tags de mesclagem. Todos os eventos incluem email e, quando presentes, firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt e emailConfirmedAt. Os nomes e os avatares vêm de raw_user_meta_data, com alternativas para cadastros via OAuth. Os três timestamps usam o tempo Unix, em segundos.

Os eventos derivados acrescentam previousValue, newValue ou os dois, com o valor antigo e o novo da coluna em texto. O auth.user.password_changed não tem nenhum dos dois. O campo provider guarda o método de cadastro, como email, google ou github, para você direcionar os fluxos de boas-vindas conforme a forma como a pessoa se cadastrou.

O ID de usuário do Supabase não é uma tag de mesclagem. O Brew guarda esse ID no contato, no campo supabase_user_id, para filtros e segmentação.

Uma conta no Supabase não estabelece consentimento para e-mails de marketing. Registre o consentimento no cadastro e confira-o antes de envios promocionais.


## O Brew substitui os e-mails de autenticação do Supabase?

Não. O Supabase Auth continua enviando links de confirmação, links mágicos, convites e redefinições de senha pela própria configuração de e-mail, como um SMTP personalizado. O Brew inicia automações depois que essas mudanças chegam a auth.users. O Supabase recomenda domínios de envio separados para os e-mails de autenticação e os de marketing.


## Por que um evento aparece sem que um e-mail seja enviado?

Receber um evento e enviar um e-mail são etapas separadas. Confirme que uma automação correspondente está ativa, examine os filtros e o histórico de execuções dela e verifique a elegibilidade do destinatário e o domínio de envio. Um evento de um usuário sem endereço de e-mail, como um usuário anônimo que ainda não informou um, não cria nenhum contato nem inicia nenhuma automação.


## Limites e solução de problemas

- O Brew só lê auth.users. Para eventos de outras tabelas, crie um gatilho personalizado no Brew e dispare-o pela API do Brew a partir da sua aplicação ou de uma Edge Function do Supabase.
- O Brew não pode criar, banir nem excluir usuários do Supabase, e não envia os e-mails do Supabase Auth.
- Se as entregas falharem na verificação de assinatura, o segredo no Supabase Vault não corresponde ao do Brew. Gere um novo segredo, execute de novo o SQL de configuração com ele e reconecte o Supabase no Brew com o mesmo valor.
- Se nenhuma entrega chegar, execute de novo o SQL de configuração e confirme que o pgcrypto está instalado e que o segredo do Vault é igual ao do Brew.
- Depois de um auth.user.email_changed, o Brew cria ou atualiza o contato com o endereço novo. O contato com o endereço antigo fica como está.
- O evento auth.user.deleted define supabase_account_status como deleted. Ele não remove o contato do Brew.
- Revise o consentimento e a finalidade de cada e-mail. Sincronizar usuários do Supabase não autoriza envios promocionais.

## Fontes e guias de configuração

- [Compare ferramentas de e-mail para o Supabase](/pt-br/blog/best-email-tools-for-supabase-auth-emails-product-events-and-lifecycle-campaigns)
- [Guia de configuração do Supabase](https://docs.brew.new/integrations/import/supabase)
- [Crie uma automação](https://docs.brew.new/create-emails/build-an-automation)
- [Tags de mesclagem](https://docs.brew.new/create-emails/merge-tags)
- [O que você pode enviar com o Brew](https://docs.brew.new/get-started/what-you-can-send)
- [Webhooks de banco de dados do Supabase](https://supabase.com/docs/guides/database/webhooks)
- [Campos de usuário do Supabase](https://supabase.com/docs/guides/auth/users)
- [SMTP personalizado do Supabase](https://supabase.com/docs/guides/auth/auth-smtp)

## Relacionados

- [Todas as integrações](https://brew.new/pt-br/browse/integrations.md)
- [Criar conta](https://brew.new/pt-br/sign-up.md)
- Site: https://brew.new
