# Supabase + Brew

Start automatiseringen in Brew vanuit databasewebhooks op de tabel auth.users van Supabase, inclusief afgeleide events voor e-mailbevestiging, wachtwoordwijziging, upgrade van anoniem naar echt account en blokkeren of deblokkeren.

Canonieke URL: https://brew.new/nl/browse/integrations/supabase

- Richting: Inkomend
- Koppelmethode: Webhookgeheim
- Eventtriggers voor authenticatie

## Live mogelijkheden

- **Eventtriggers**: Start automatiseringen in Brew vanuit databasewebhooks op de tabel auth.users van Supabase, inclusief afgeleide events voor e-mailbevestiging, wachtwoordwijziging en inloggen.

## Maak van auth-events nuttige e-mails

Koppel Supabase om merkconforme e-mails te versturen wanneer iemand zich aanmeldt, een e-mailadres bevestigt, een wachtwoord wijzigt of wordt geblokkeerd. Een setupscript voegt een databasetrigger toe aan je tabel auth.users, en Brew maakt van elke wijziging een van de 12 triggers voor automatiseringen.

Supabase Auth blijft verantwoordelijk voor inloggen, bevestigingslinks, magic links en wachtwoordherstel. Brew maakt en verstuurt de e-mails die op die wijzigingen volgen.


## Wat je kunt bouwen

- Welkomstmails: start vanuit auth.user.email_confirmed, zodat de eerste e-mail alleen geverifieerde adressen bereikt. Brew leidt dat event alleen af uit een update die email_confirmed_at instelt, dus een gebruiker van wie de rij bij het aanmaken al bevestigd is, levert alleen auth.user.created op. Ga na welk geval voor je project geldt en kies dan één trigger om dubbele welkomstmails te voorkomen.
- Welkomstmails bij de overstap van gast naar account: auth.user.upgraded_from_anonymous ontstaat wanneer is_anonymous van true naar false gaat, oftewel wanneer een anonieme gebruiker een permanent account wordt.
- Meldingen over een wachtwoordwijziging: auth.user.password_changed ontstaat bij elke wijziging van encrypted_password. De payload bevat geen wachtwoordgegevens. Link naar je eigen pagina voor accountherstel, voor het geval de gebruiker de wijziging niet zelf heeft gedaan.
- Meldingen over een gewijzigd e-mailadres: auth.user.email_changed bevat het oude adres in previousValue en het nieuwe adres in newValue. Brew verstuurt naar het nieuwe adres.
- Opvolging van uitnodigingen: auth.user.invited ontstaat wanneer een update invited_at instelt. Supabase Auth verstuurt de uitnodigingslink zelf, en een e-mail van Brew kan context voor de onboarding toevoegen. Verstuur vanuit je project een echte testuitnodiging voordat je op deze trigger vertrouwt.
- Meldingen over een blokkering: auth.user.banned ontstaat wanneer banned_until wordt ingesteld, en bevat die waarde in newValue. auth.user.unbanned ontstaat wanneer banned_until wordt gewist.
- Bevestigingen van een verwijdering: auth.user.deleted ontstaat wanneer de rij wordt verwijderd, en bevat nog steeds het e-mailadres uit die rij.

## Een inlogevent is nog geen terugkerend bezoek

auth.user.signed_in ontstaat wanneer last_sign_in_at verandert. Ook het vernieuwen van tokens in Supabase verandert die kolom, dus het event kan herhaaldelijk ontstaan zolang een gebruiker ingelogd blijft. Het laat niet zien dat iemand na een lange afwezigheid is teruggekomen.

Het is bovendien het afgeleide event met de laagste prioriteit. Als dezelfde update een e-mailadres bevestigt of een anonieme gebruiker omzet naar een account, levert Brew dat event op in plaats van auth.user.signed_in.

Voor een check-in bij inactieve gebruikers bepaal je in je applicatie wie inactief is, op basis van de activiteitsgegevens van die applicatie zelf. Verstuur alleen voor gebruikers die in aanmerking komen een apart aangepast event naar Brew, en laat een automatisering met de status Live de check-in vanuit dat event versturen.

Test beide paden: een inactieve gebruiker krijgt de check-in; een gebruiker die vóór de controle actief was, krijgt hem niet.


## Supabase instellen in Brew

- Open Integraties, kies Supabase en klik op Webhook-URL genereren. Brew vult die URL alvast in de setup-SQL in.
- Maak een ondertekeningsgeheim aan met openssl rand -hex 32. Brew en Supabase leveren dat geheim niet zelf, en Brew vereist minstens 16 tekens.
- Open in Supabase de SQL Editor en plak de setup-SQL. Vervang de plaatshouder voor het geheim door je eigen geheim en voer de SQL daarna uit. De SQL schakelt pgcrypto en pg_net in, slaat het geheim op in Supabase Vault en voegt aan auth.users een databasetrigger toe voor nieuwe, gewijzigde en verwijderde rijen.
- Plak hetzelfde geheim in Brew en klik op Koppelen. Bij het koppelen maakt Brew triggers aan voor alle 12 events. Er is geen schakelaar om events in of uit te schakelen.
- Maak na het koppelen een testgebruiker aan in Supabase onder Authentication > Users. De status in Brew verandert dan van “Wacht op testevent” in “Gekoppeld”, en in Recente events staat de levering met “handtekening OK”.
- Maak een automatisering aan, selecteer het bijbehorende Supabase-event en verstuur een test zolang de automatisering nog de status Concept heeft. Alleen automatiseringen met de status Live worden uitgevoerd wanneer er een overeenkomend event binnenkomt.
- Je hebt rechten nodig om SQL uit te voeren op het schema auth, extensies te installeren en naar Supabase Vault te schrijven. Na het vernieuwen van het geheim kun je de SQL veilig opnieuw uitvoeren.

## Ondersteunde Supabase-events

auth.user.created, auth.user.updated en auth.user.deleted komen voort uit nieuwe, gewijzigde en verwijderde rijen in auth.users. Brew leidt de andere events af uit een update door de oude en de nieuwe rij te vergelijken.

Eén update levert één event op. Als er meerdere kolommen tegelijk veranderen, wint de eerste match in deze volgorde: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Een update die met geen van deze overeenkomt, komt binnen als auth.user.updated.

Brew ondersteunt de volgende 12 eventtypen:

- 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

## Contactsynchronisatie en personalisatie

Elk geverifieerd event met een echt e-mailadres maakt een contact in Brew aan of werkt het contact met dat e-mailadres bij, ongeacht of een automatisering het event gebruikt. Als die gegevens er zijn, vult Brew de voor- en achternaam, supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url en supabase_provider.

Sommige events vullen ook lifecyclevelden. supabase_account_status wordt active, invited, banned of deleted. supabase_email_verified_at, supabase_phone_verified_at en supabase_last_sign_in_at komen uit de bijbehorende bevestigings- en inlogevents.

Gebruik voor personalisatietags het gedeclareerde payloadschema van het gekozen event. Elk event bevat email en, voor zover beschikbaar, firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt en emailConfirmedAt. Namen en avatars komen uit raw_user_meta_data, met terugvalopties voor aanmeldingen via OAuth. De drie tijdstempels zijn Unix-tijd in seconden.

Afgeleide events voegen previousValue, newValue of allebei toe, met de oude en de nieuwe waarde van de kolom als tekst. auth.user.password_changed heeft geen van beide. provider bevat de aanmeldmethode, zoals email, google of github, zodat je welkomstflows kunt laten afhangen van hoe iemand zich heeft aangemeld.

De gebruikers-ID van Supabase is geen personalisatietag. Brew slaat die op het contact op als supabase_user_id, zodat je erop kunt filteren en segmenteren.

Een Supabase-account betekent nog geen toestemming voor marketingmails. Leg toestemming vast bij de aanmelding en controleer die vóór promotionele verzendingen.


## Vervangt Brew de auth-e-mails van Supabase?

Nee. Supabase Auth verstuurt bevestigingslinks, magic links, uitnodigingen en e-mails voor wachtwoordherstel nog steeds via de eigen e-mailinstellingen, zoals een eigen SMTP-server. Brew start automatiseringen nadat die wijzigingen in auth.users zijn terechtgekomen. Supabase raadt aparte verzenddomeinen aan voor auth-mail en marketingmail.


## Waarom verschijnt er een event zonder dat er een e-mail wordt verstuurd?

Een event ontvangen en een e-mail versturen zijn aparte stappen. Controleer of een overeenkomende automatisering op Live staat en bekijk daarna de filters, de uitvoeringsgeschiedenis, of de ontvanger in aanmerking komt en of het verzenddomein in orde is. Een event voor een gebruiker zonder e-mailadres, zoals een anonieme gebruiker die er nog geen heeft toegevoegd, maakt geen contact aan en start geen automatisering.


## Limieten en problemen oplossen

- Brew leest alleen auth.users. Voor events uit andere tabellen maak je een aangepaste trigger aan in Brew en activeer je die via de API van Brew vanuit je applicatie of een Supabase Edge Function.
- Brew kan geen gebruikers in Supabase aanmaken, blokkeren of verwijderen, en verstuurt geen e-mails van Supabase Auth.
- Mislukt bij leveringen de handtekeningcontrole, dan komt het geheim in Supabase Vault niet overeen met het geheim in Brew. Genereer een nieuw geheim, voer de setup-SQL daarmee opnieuw uit en koppel Supabase in Brew opnieuw met dezelfde waarde.
- Komen er geen leveringen binnen, voer de setup-SQL dan opnieuw uit en controleer daarna of pgcrypto is geïnstalleerd en of het geheim in Vault overeenkomt met het geheim in Brew.
- Na auth.user.email_changed maakt Brew het contact met het nieuwe adres aan of werkt het bij. Het contact met het oude adres blijft ongewijzigd.
- auth.user.deleted zet supabase_account_status op deleted. Het contact wordt niet uit Brew verwijderd.
- Controleer de toestemming en het doel van elke e-mail. Supabase-gebruikers synchroniseren geeft je nog geen toestemming voor promotionele verzendingen.

## Bronnen en handleidingen

- [E-mailtools voor Supabase vergelijken](/nl/blog/best-email-tools-for-supabase-auth-emails-product-events-and-lifecycle-campaigns)
- [Handleiding voor Supabase](https://docs.brew.new/integrations/import/supabase)
- [Een automatisering bouwen](https://docs.brew.new/create-emails/build-an-automation)
- [Personalisatietags](https://docs.brew.new/create-emails/merge-tags)
- [Wat je met Brew kunt versturen](https://docs.brew.new/get-started/what-you-can-send)
- [Databasewebhooks in Supabase](https://supabase.com/docs/guides/database/webhooks)
- [Gebruikersvelden in Supabase](https://supabase.com/docs/guides/auth/users)
- [Eigen SMTP-server in Supabase](https://supabase.com/docs/guides/auth/auth-smtp)

## Gerelateerd

- [Alle integraties](https://brew.new/nl/browse/integrations.md)
- [Account aanmaken](https://brew.new/nl/sign-up.md)
- Website: https://brew.new
