# Supabase + Brew

Löse Brew-Automatisierungen über Datenbank-Webhooks der Supabase-Tabelle auth.users aus, einschließlich abgeleiteter Events für E-Mail-Bestätigung, Passwortänderung, Upgrade von anonymen zu echten Nutzern sowie Sperren oder Entsperren.

Kanonische URL: https://brew.new/de/browse/integrations/supabase

- Datenrichtung: Eingehende Daten
- Verbindung: Webhook-Secret
- Trigger für Auth-Events

## Verfügbare Funktionen

- **Event-Trigger**: Löse Brew-Automatisierungen über Datenbank-Webhooks der Supabase-Tabelle auth.users aus, einschließlich abgeleiteter Events für E-Mail-Bestätigung, Passwortänderung und Anmeldung.

## Mach aus Auth-Events nützliche E-Mails

Verbinde Supabase, um markenkonforme E-Mails auszulösen, wenn sich jemand registriert, die E-Mail-Adresse bestätigt, das Passwort ändert oder gesperrt wird. Ein Setup-Skript legt einen Datenbank-Trigger auf deiner Tabelle auth.users an, und Brew macht aus jeder Änderung einen von 12 Triggern für Automatisierungen.

Für Anmeldung, Bestätigungslinks, Magic Links und Passwort-Resets bleibt Supabase Auth zuständig. Brew erstellt und versendet die E-Mails, die auf diese Änderungen folgen.


## Was du damit bauen kannst

- Willkommens-E-Mails: Starte mit auth.user.email_confirmed, damit die erste E-Mail nur verifizierte Adressen erreicht. Brew leitet dieses Event nur aus einem Update ab, das email_confirmed_at setzt. Ein Nutzer, dessen Zeile schon bestätigt angelegt wird, erzeugt also nur auth.user.created. Prüfe, welcher Fall auf dein Projekt zutrifft, und wähle dann nur einen Trigger, damit niemand doppelt begrüßt wird.
- Begrüßung beim Wechsel vom Gast zum Konto: Das Event auth.user.upgraded_from_anonymous wird ausgelöst, wenn is_anonymous von true auf false wechselt – also dann, wenn aus einem anonymen Nutzer ein dauerhaftes Konto wird.
- Hinweise zu Passwortänderungen: Das Event auth.user.password_changed wird bei jeder Änderung an encrypted_password ausgelöst. Die Payload enthält keine Passwortdaten. Verlinke auf deine eigene Seite zur Kontowiederherstellung, falls die Änderung nicht vom Nutzer selbst kam.
- Hinweise zu geänderten E-Mail-Adressen: Das Event auth.user.email_changed enthält die alte Adresse in previousValue und die neue in newValue. Brew sendet an die neue Adresse.
- Follow-ups zu Einladungen: Das Event auth.user.invited wird ausgelöst, wenn ein Update invited_at setzt. Den Einladungslink verschickt Supabase Auth selbst, eine E-Mail aus Brew kann Kontext fürs Onboarding ergänzen. Verschicke aus deinem Projekt eine echte Testeinladung, bevor du dich auf diesen Trigger verlässt.
- Hinweise zu Sperrungen: Das Event auth.user.banned wird ausgelöst, wenn banned_until gesetzt wird, und enthält den Wert in newValue. Das Event auth.user.unbanned wird ausgelöst, wenn banned_until wieder geleert wird.
- Bestätigungen von Löschungen: Das Event auth.user.deleted wird ausgelöst, wenn die Zeile gelöscht wird, und enthält trotzdem noch die E-Mail-Adresse aus dieser Zeile.

## Anmelde-Events sind kein Zeichen für eine Rückkehr

Das Event auth.user.signed_in wird ausgelöst, wenn sich last_sign_in_at ändert. Auch Token-Aktualisierungen in Supabase ändern diese Spalte, das Event kann also wiederholt ausgelöst werden, während ein Nutzer angemeldet bleibt. Es zeigt nicht, dass jemand nach langer Abwesenheit zurückgekommen ist.

Außerdem ist es das abgeleitete Event mit der niedrigsten Priorität. Bestätigt dasselbe Update eine E-Mail-Adresse oder macht aus einem anonymen Nutzer ein dauerhaftes Konto, erzeugt Brew dieses Event statt auth.user.signed_in.

Für eine Nachfass-E-Mail an inaktive Nutzer entscheidest du in deiner Anwendung anhand ihrer eigenen Aktivitätsdaten, wer als inaktiv gilt. Löse nur für Nutzer, auf die das zutrifft, ein separates eigenes Event in Brew aus, und lass eine Live-Automatisierung auf dieses Event hin die Nachfass-E-Mail versenden.

Teste beide Pfade: Ein inaktiver Nutzer bekommt die Nachfass-E-Mail; ein Nutzer, der vor der Prüfung aktiv war, bekommt sie nicht.


## Supabase in Brew einrichten

- Öffne „Integrationen“, wähle Supabase und klicke auf „Webhook-URL generieren“. Brew trägt diese URL schon ins Setup-SQL ein.
- Erzeuge ein Signing Secret mit openssl rand -hex 32. Weder Brew noch Supabase stellen es aus, und Brew verlangt mindestens 16 Zeichen.
- Öffne in Supabase den „SQL Editor“ und füge das Setup-SQL ein. Ersetze den Platzhalter für das Secret durch dein Secret und führe das SQL dann aus. Es aktiviert pgcrypto und pg_net, speichert das Secret im Supabase Vault und legt auf auth.users einen Datenbank-Trigger für Inserts, Updates und Deletes an.
- Füge dasselbe Secret in Brew ein und klicke auf „Verbinden“. Beim Verbinden legt Brew Trigger für alle 12 Events an. Einen Schalter zum Aktivieren oder Deaktivieren einzelner Events gibt es nicht.
- Lege nach dem Verbinden in Supabase unter „Authentication > Users“ einen Testnutzer an. Der Status in Brew wechselt von „Wartet auf Test-Event“ zu „Verbunden“, und unter „Letzte Events“ erscheint die Zustellung mit „Signatur OK“.
- Erstelle eine Automatisierung, wähle ihr Supabase-Event und sende einen Test, solange sie noch den Status „Entwurf“ hat. Nur Automatisierungen mit dem Status „Live“ werden ausgeführt, wenn ein passendes Event eintrifft.
- Du brauchst die Berechtigung, SQL auf dem Schema auth auszuführen, Extensions zu installieren und in den Supabase Vault zu schreiben. Das SQL nach dem Rotieren des Secrets erneut auszuführen, ist unbedenklich.

## Unterstützte Supabase-Events

Die Events auth.user.created, auth.user.updated und auth.user.deleted stammen aus Inserts, Updates und Deletes auf auth.users. Die übrigen Events leitet Brew aus einem Update ab, indem die alte mit der neuen Zeile verglichen wird.

Ein Update erzeugt genau ein Event. Ändern sich mehrere Spalten gleichzeitig, gewinnt der erste Treffer in dieser Reihenfolge: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Ein Update, auf das nichts davon zutrifft, kommt als auth.user.updated an.

Brew unterstützt diese 12 Event-Typen:

- 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

## Kontaktsynchronisierung und Personalisierung

Jedes verifizierte Event mit einer echten E-Mail-Adresse legt einen Brew-Kontakt an oder aktualisiert ihn – zugeordnet über die E-Mail-Adresse und unabhängig davon, ob eine Automatisierung das Event nutzt. Wenn die Daten vorhanden sind, setzt Brew Vor- und Nachname, supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url und supabase_provider.

Manche Events setzen zusätzlich Lifecycle-Felder. Das Feld supabase_account_status wird zu active, invited, banned oder deleted. Die Felder supabase_email_verified_at, supabase_phone_verified_at und supabase_last_sign_in_at stammen aus den passenden Bestätigungs- und Anmelde-Events.

Richte dich bei Merge-Tags nach dem deklarierten Payload-Schema des gewählten Events. Jedes Event enthält email und, sofern vorhanden, firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt und emailConfirmedAt. Namen und Avatare stammen aus raw_user_meta_data, mit Fallbacks für Registrierungen per OAuth. Die drei Zeitstempel sind in Unix-Sekunden angegeben.

Abgeleitete Events ergänzen previousValue, newValue oder beides, mit dem alten und dem neuen Wert der Spalte als Text. Das Event auth.user.password_changed hat keines von beiden. Das Feld provider enthält die Registrierungsmethode, etwa email, google oder github, sodass du Willkommens-Flows danach steuern kannst, wie sich jemand registriert hat.

Die Supabase-Nutzer-ID ist kein Merge-Tag. Brew speichert sie als supabase_user_id am Kontakt, zum Filtern und Segmentieren.

Ein Supabase-Konto begründet keine Einwilligung in Marketing-E-Mails. Halte die Einwilligung bei der Registrierung fest und prüfe sie vor Werbeversänden.


## Ersetzt Brew die Auth-E-Mails von Supabase?

Nein. Bestätigungslinks, Magic Links, Einladungen und Passwort-Resets verschickt Supabase Auth weiterhin über sein eigenes E-Mail-Setup, etwa einen eigenen SMTP-Dienst. Brew startet Automatisierungen, nachdem diese Änderungen in auth.users angekommen sind. Supabase empfiehlt getrennte Versanddomains für Auth- und Marketing-E-Mails.


## Warum erscheint ein Event, ohne dass eine E-Mail versendet wird?

Ein Event zu empfangen und eine E-Mail zu senden, sind getrennte Schritte. Prüfe, ob eine passende Automatisierung live ist, sieh dir dann ihre Filter und ihren Ausführungsverlauf an und prüfe, ob der Empfänger erreichbar und die Versanddomain bereit ist. Ein Event zu einem Nutzer ohne E-Mail-Adresse, etwa zu einem anonymen Nutzer, der noch keine hinterlegt hat, legt keinen Kontakt an und startet keine Automatisierung.


## Limits und Fehlerbehebung

- Brew liest nur auth.users. Für Events aus anderen Tabellen legst du in Brew einen eigenen Trigger an und löst ihn über die Brew-API aus deiner Anwendung oder aus einer Supabase Edge Function aus.
- Brew kann in Supabase keine Nutzer anlegen, sperren oder löschen und versendet keine E-Mails von Supabase Auth.
- Scheitern Zustellungen an der Signaturprüfung, passt das Secret im Supabase Vault nicht zu dem in Brew. Erzeuge ein neues Secret, führe das Setup-SQL damit erneut aus und verbinde Supabase in Brew mit demselben Wert neu.
- Kommen keine Zustellungen an, führe das Setup-SQL erneut aus und prüfe dann, ob pgcrypto installiert ist und das Secret im Vault zu dem in Brew passt.
- Nach auth.user.email_changed legt Brew den Kontakt mit der neuen Adresse an oder aktualisiert ihn. Der Kontakt mit der alten Adresse bleibt unverändert.
- Das Event auth.user.deleted setzt supabase_account_status auf deleted. Den Kontakt in Brew entfernt es nicht.
- Prüfe die Einwilligung und den Zweck jeder E-Mail. Die Synchronisierung von Supabase-Nutzern erlaubt keine Werbeversände.

## Quellen und Einrichtungsanleitungen

- [E-Mail-Tools für Supabase vergleichen](/de/blog/best-email-tools-for-supabase-auth-emails-product-events-and-lifecycle-campaigns)
- [Einrichtungsanleitung für Supabase](https://docs.brew.new/integrations/import/supabase)
- [Automatisierung erstellen](https://docs.brew.new/create-emails/build-an-automation)
- [Merge-Tags](https://docs.brew.new/create-emails/merge-tags)
- [Was du mit Brew versenden kannst](https://docs.brew.new/get-started/what-you-can-send)
- [Datenbank-Webhooks in Supabase](https://supabase.com/docs/guides/database/webhooks)
- [Nutzerfelder in Supabase](https://supabase.com/docs/guides/auth/users)
- [Eigener SMTP-Dienst für Supabase](https://supabase.com/docs/guides/auth/auth-smtp)

## Verwandte Seiten

- [Alle Integrationen](https://brew.new/de/browse/integrations.md)
- [Registrieren](https://brew.new/de/sign-up.md)
- Website: https://brew.new
