SMTP do Supabase com a Brevo para os e-mails de Auth
Troque o remetente de e-mail integrado do Supabase pelo SMTP da Brevo em confirmações, magic links, convites e redefinições de senha. Envie o resto pelas Edge Functions com a API da Brevo.

Por que usar a Brevo como SMTP do Supabase
O que você cria com Supabase e Brevo
Em setembro de 2026, mais de 10.000 organizações enviaram e-mails pela Brevo a partir de Edge Functions do Supabase.

[auth.email.smtp]
host = "smtp-relay.brevo.com"
port = 587
user = "your-brevo-smtp-login"
pass = "env(BREVO_SMTP_KEY)"
admin_email = "[email protected]"
sender_name = "Your app"
curl --request POST \
--url https://api.brevo.com/v3/smtp/email \
--header "api-key: $BREVO_API_KEY" \
--header "content-type: application/json" \
--data '{
"sender": { "email": "[email protected]" },
"to": [{ "email": "[email protected]" }],
"subject": "Welcome",
"htmlContent": "<p>Thanks for signing up.</p>"
}'
// supabase/functions/send-email/index.ts
const BREVO_URL = 'https://api.brevo.com/v3/smtp/email'
Deno.serve(async (req) => {
const { to, subject, html } = await req.json()
const res = await fetch(BREVO_URL, {
method: 'POST',
headers: {
'api-key': Deno.env.get('BREVO_API_KEY')!,
'content-type': 'application/json',
},
body: JSON.stringify({
sender: { email: '[email protected]' },
to: [{ email: to }],
subject,
htmlContent: html,
}),
})
return new Response(await res.text(), {
status: res.status,
})
})

create extension if not exists pg_net;
create or replace function public.send_welcome()
returns trigger language plpgsql as $$
begin
perform net.http_post(
url := 'https://<project-ref>.supabase.co'
|| '/functions/v1/send-email',
headers := jsonb_build_object(
'Authorization', 'Bearer <your-key>'
),
body := jsonb_build_object(
'to', new.email,
'subject', 'Welcome',
'html', '<p>Thanks for signing up.</p>'
)
);
return new;
end;
$$;
create trigger on_profile_created
after insert on public.profiles
for each row execute function public.send_welcome();


Entregue todos os e-mails do Supabase Auth
Confirmações, magic links, códigos de uso único, convites e redefinições de senha passam pelo SMTP da Brevo para qualquer endereço. Como o Supabase recomenda, deixe conteúdo promocional fora desses e-mails.
Envie e-mails das Edge Functions
As Edge Functions não abrem conexões de saída nas portas 25 e 587, então envie pela API da Brevo: um POST em /v3/smtp/email, com sua chave no header api-key. Guarde a chave com supabase secrets set e leia com Deno.env.get. Uma resposta 201 devolve um messageId.
Traga os eventos de entrega para o Supabase
Os webhooks transacionais da Brevo informam 15 eventos de e-mail, entre eles entregue, aberto, clicado e hard bounce. Aponte um para uma Edge Function, desative verify_jwt nela e verifique as chamadas por conta própria. Cada conta aceita até 40 webhooks.
Envie a partir de um trigger do banco de dados
Com a extensão pg_net, um trigger do Postgres chama sua Edge Function, que então chama a API da Brevo. O pg_net está em beta, envia só corpos JSON e dispara as requisições depois do commit da transação.
Envie os e-mails de Auth a partir do seu domínio
Autentique um domínio de envio na Brevo e crie um remetente para os seus e-mails de Auth. O Supabase recomenda um domínio separado para eles, como auth.example.com.
Veja cada e-mail de Auth na Brevo
Confirmações, magic links e redefinições de senha aparecem nos registros transacionais da Brevo com os seus eventos de entrega, para você verificar o que chegou à caixa de entrada.