# Supabase + Brew

Avvia le automazioni di Brew dai webhook del database sulla tabella auth.users di Supabase, inclusi eventi derivati come conferma dell’email, cambio della password, passaggio da anonimo a utente reale e ban o rimozione del ban.

URL canonico: https://brew.new/it/browse/integrations/supabase

- Direzione: Dati in entrata
- Collegamento: Secret del webhook
- Trigger da eventi di autenticazione

## Funzionalità disponibili

- **Trigger da evento**: Avvia le automazioni di Brew dai webhook del database sulla tabella auth.users di Supabase, inclusi eventi derivati come conferma dell’email, cambio della password e accesso.

## Trasforma gli eventi di autenticazione in email utili

Collega Supabase per far partire email in linea con il tuo brand quando qualcuno si registra, conferma la propria email, cambia la password o riceve un ban. Uno script di configurazione aggiunge un trigger alla tua tabella auth.users e Brew trasforma ogni modifica in uno dei 12 trigger delle automazioni.

Supabase Auth resta responsabile di accesso, link di conferma, magic link e reimpostazione della password. Brew crea e invia le email che seguono queste modifiche.


## Cosa puoi creare

- Email di benvenuto: parti da auth.user.email_confirmed, così la prima email raggiunge solo indirizzi verificati. Brew ricava quell’evento solo da un aggiornamento che imposta email_confirmed_at, quindi un utente la cui riga viene creata già confermata produce soltanto auth.user.created. Verifica quale caso si applica al tuo progetto, poi scegli un solo trigger per evitare benvenuti doppi.
- Benvenuto agli ospiti che creano un account: l’evento auth.user.upgraded_from_anonymous scatta quando is_anonymous passa da true a false, cioè quando un utente anonimo diventa un account permanente.
- Avvisi di cambio password: l’evento auth.user.password_changed scatta a ogni modifica di encrypted_password. Il payload non contiene dati sulla password. Inserisci un link alla tua pagina di recupero dell’account, nel caso in cui la modifica non sia stata fatta dall’utente.
- Avvisi di cambio email: l’evento auth.user.email_changed contiene il vecchio indirizzo in previousValue e quello nuovo in newValue. Brew invia al nuovo indirizzo.
- Follow-up sugli inviti: l’evento auth.user.invited scatta quando un aggiornamento imposta invited_at. Il link d’invito lo invia Supabase Auth, mentre un’email di Brew può aggiungere contesto per l’onboarding. Prima di affidarti a questo trigger, invia un vero invito di prova dal tuo progetto.
- Avvisi di sospensione: l’evento auth.user.banned scatta quando viene impostato banned_until e ne contiene il valore in newValue. L’evento auth.user.unbanned scatta quando banned_until viene svuotato.
- Conferme di eliminazione: l’evento auth.user.deleted scatta quando la riga viene eliminata e include comunque l’indirizzo email di quella riga.

## Gli eventi di accesso non indicano un ritorno

L’evento auth.user.signed_in scatta quando cambia last_sign_in_at. Anche il rinnovo dei token di Supabase modifica quella colonna, quindi l’evento può scattare più volte mentre un utente resta connesso. Non dimostra che qualcuno sia tornato dopo una lunga assenza.

È anche l’evento derivato con la priorità più bassa. Quando lo stesso aggiornamento conferma un’email o converte un utente anonimo, Brew emette quell’evento al posto di auth.user.signed_in.

Per un follow-up con gli utenti inattivi, stabilisci l’inattività nella tua applicazione in base ai suoi dati di attività. Invia a Brew un evento personalizzato separato solo per gli utenti idonei, e lascia che un’automazione attiva invii il follow-up a partire da quell’evento.

Testa entrambi i percorsi: un utente inattivo riceve il follow-up; un utente che è stato attivo prima della verifica no.


## Configura Supabase in Brew

- Apri Integrazioni, scegli Supabase e seleziona Genera l’URL del webhook. Brew inserisce già quell’URL nello script SQL di configurazione.
- Crea un secret di firma con openssl rand -hex 32. Né Brew né Supabase lo generano per te, e Brew richiede almeno 16 caratteri.
- In Supabase, apri SQL Editor e incolla lo script SQL di configurazione. Sostituisci il segnaposto del secret con il tuo secret, poi eseguilo. Lo script attiva pgcrypto e pg_net, salva il secret in Supabase Vault e aggiunge un trigger ad auth.users per inserimenti, aggiornamenti ed eliminazioni.
- Incolla lo stesso secret in Brew e seleziona Collega. Il collegamento crea un trigger per ciascuno dei 12 eventi. Non esiste un interruttore per attivare o disattivare gli eventi.
- Dopo il collegamento, crea un utente di test in Supabase, in Authentication > Users. In Brew lo stato passa da “In attesa dell’evento di test” a “Collegato”, e nel pannello Eventi recenti compare la consegna con “firma valida”.
- Crea un’automazione, seleziona il suo evento Supabase e invia un test mentre è ancora in bozza. Quando arriva un evento corrispondente, vengono eseguite solo le automazioni attive.
- Ti servono i permessi per eseguire SQL sullo schema auth, installare estensioni e scrivere in Supabase Vault. Dopo aver ruotato il secret, puoi eseguire di nuovo lo script SQL senza problemi.

## Eventi Supabase supportati

Gli eventi auth.user.created, auth.user.updated e auth.user.deleted provengono da inserimenti, aggiornamenti ed eliminazioni su auth.users. Brew ricava gli altri eventi da un aggiornamento, confrontando la riga vecchia con quella nuova.

Un aggiornamento produce un solo evento. Quando cambiano più colonne insieme, vince la prima corrispondenza in quest’ordine: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Un aggiornamento che non corrisponde a nessuno di questi arriva come auth.user.updated.

Brew supporta questi 12 tipi di 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

## Sincronizzazione dei contatti e personalizzazione

Ogni evento verificato con un indirizzo email reale crea o aggiorna un contatto di Brew, abbinato in base all’email, che un’automazione usi o meno l’evento. Quando i dati sono presenti, Brew imposta nome, cognome, supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url e supabase_provider.

Alcuni eventi impostano anche campi sul ciclo di vita dell’account. Il campo supabase_account_status diventa active, invited, banned o deleted. I campi supabase_email_verified_at, supabase_phone_verified_at e supabase_last_sign_in_at provengono dai corrispondenti eventi di conferma e di accesso.

Per i merge tag, usa lo schema del payload dichiarato dall’evento selezionato. Ogni evento include email e, quando presenti, firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt ed emailConfirmedAt. Nomi e avatar provengono da raw_user_meta_data, con valori di riserva per le registrazioni tramite OAuth. I tre timestamp sono in secondi Unix.

Gli eventi derivati aggiungono previousValue, newValue o entrambi, con il valore vecchio e quello nuovo della colonna in formato testo. L’evento auth.user.password_changed non ha né l’uno né l’altro. Il campo provider indica il metodo di registrazione, come email, google o github, così puoi indirizzare i flussi di benvenuto in base a come qualcuno si è registrato.

L’ID utente di Supabase non è un merge tag. Brew lo salva sul contatto come supabase_user_id, per i filtri e la segmentazione.

Un account Supabase non costituisce un consenso all’email di marketing. Raccogli il consenso al momento della registrazione e verificalo prima degli invii promozionali.


## Brew sostituisce le email di autenticazione di Supabase?

No. Supabase Auth continua a inviare link di conferma, magic link, inviti e reimpostazioni della password tramite la propria configurazione email, ad esempio un SMTP personalizzato. Brew avvia le automazioni dopo che queste modifiche arrivano in auth.users. Supabase consiglia domini di invio separati per le email di autenticazione e per quelle di marketing.


## Perché un evento compare senza che venga inviata un’email?

Ricevere un evento e inviare un’email sono passaggi separati. Verifica che un’automazione corrispondente sia attiva, poi controlla i suoi filtri, la cronologia delle esecuzioni, l’idoneità del destinatario e il dominio di invio. Un evento relativo a un utente senza indirizzo email, ad esempio un utente anonimo che non ne ha ancora aggiunto uno, non crea alcun contatto e non avvia alcuna automazione.


## Limiti e risoluzione dei problemi

- Brew legge solo auth.users. Per gli eventi di altre tabelle, crea un trigger personalizzato in Brew e attivalo tramite l’API di Brew dalla tua applicazione o da una Supabase Edge Function.
- Brew non può creare, bannare o eliminare utenti Supabase, e non invia le email di Supabase Auth.
- Se le consegne non superano la verifica della firma, il secret in Supabase Vault non corrisponde a quello in Brew. Genera un nuovo secret, esegui di nuovo lo script SQL di configurazione con quel secret e ricollega Supabase in Brew con lo stesso valore.
- Se non arriva nessuna consegna, esegui di nuovo lo script SQL di configurazione, poi verifica che pgcrypto sia installato e che il secret in Vault corrisponda a quello in Brew.
- Dopo un evento auth.user.email_changed, Brew crea o aggiorna il contatto con il nuovo indirizzo. Il contatto con il vecchio indirizzo resta invariato.
- L’evento auth.user.deleted imposta supabase_account_status su deleted. Non rimuove il contatto da Brew.
- Verifica il consenso e la finalità di ogni email. Sincronizzare gli utenti Supabase non autorizza gli invii promozionali.

## Fonti e guide alla configurazione

- [Confronta gli strumenti email per Supabase](/it/blog/best-email-tools-for-supabase-auth-emails-product-events-and-lifecycle-campaigns)
- [Guida alla configurazione di Supabase](https://docs.brew.new/integrations/import/supabase)
- [Crea un’automazione](https://docs.brew.new/create-emails/build-an-automation)
- [Merge tag](https://docs.brew.new/create-emails/merge-tags)
- [Cosa puoi inviare con Brew](https://docs.brew.new/get-started/what-you-can-send)
- [Webhook del database di Supabase](https://supabase.com/docs/guides/database/webhooks)
- [Campi degli utenti di Supabase](https://supabase.com/docs/guides/auth/users)
- [SMTP personalizzato di Supabase](https://supabase.com/docs/guides/auth/auth-smtp)

## Correlati

- [Tutte le integrazioni](https://brew.new/it/browse/integrations.md)
- [Registrati](https://brew.new/it/sign-up.md)
- Sito web: https://brew.new
