# Supabase + Brew

Uruchamiaj automatyzacje Brew webhookami bazy danych tabeli auth.users w Supabase, w tym zdarzeniami pochodnymi: potwierdzeniem adresu e-mail, zmianą hasła, zamianą konta anonimowego na pełne oraz blokadą lub odblokowaniem.

Kanoniczny adres URL: https://brew.new/pl/browse/integrations/supabase

- Kierunek danych: Import danych
- Połączenie: Sekret webhooka
- Wyzwalacze zdarzeń uwierzytelniania

## Dostępne funkcje

- **Wyzwalacze zdarzeń**: Uruchamiaj automatyzacje Brew webhookami bazy danych tabeli auth.users w Supabase, w tym zdarzeniami pochodnymi: potwierdzeniem adresu e-mail, zmianą hasła i logowaniem.

## Zamień zdarzenia uwierzytelniania w przydatne e-maile

Połącz Supabase, aby wysyłać e-maile spójne z marką, gdy ktoś się rejestruje, potwierdza adres e-mail, zmienia hasło lub zostaje zablokowany. Skrypt konfiguracyjny dodaje do Twojej tabeli auth.users wyzwalacz bazy danych, a Brew zamienia każdą zmianę w jeden z 12 wyzwalaczy automatyzacji.

Za logowanie, linki potwierdzające, magiczne linki i resety haseł nadal odpowiada Supabase Auth. Brew tworzy i wysyła e-maile, które następują po tych zmianach.


## Co możesz zbudować

- E-maile powitalne: zacznij od zdarzenia auth.user.email_confirmed, aby pierwszy e-mail trafiał tylko na zweryfikowane adresy. Brew wyznacza to zdarzenie wyłącznie na podstawie aktualizacji, która ustawia email_confirmed_at, więc dla użytkownika, którego wiersz od razu powstaje jako potwierdzony, pojawi się tylko zdarzenie auth.user.created. Sprawdź, który przypadek dotyczy Twojego projektu, a potem wybierz jeden wyzwalacz, aby uniknąć podwójnych powitań.
- Powitania gości, którzy założyli konto: zdarzenie auth.user.upgraded_from_anonymous pojawia się, gdy wartość is_anonymous zmienia się z true na false, czyli wtedy, gdy anonimowy użytkownik przechodzi na stałe konto.
- Powiadomienia o zmianie hasła: zdarzenie auth.user.password_changed pojawia się przy każdej zmianie wartości encrypted_password. Dane zdarzenia nie zawierają żadnych informacji o haśle. Dodaj link do własnej strony odzyskiwania konta na wypadek, gdyby zmiany nie dokonał sam użytkownik.
- Powiadomienia o zmianie adresu e-mail: zdarzenie auth.user.email_changed zawiera stary adres w polu previousValue, a nowy – w polu newValue. Brew wysyła e-mail na nowy adres.
- E-maile po zaproszeniu: zdarzenie auth.user.invited pojawia się, gdy aktualizacja ustawia invited_at. Link z zaproszeniem wysyła Supabase Auth, a e-mail z Brew może dodać do tego informacje na start. Zanim zaczniesz polegać na tym wyzwalaczu, wyślij ze swojego projektu prawdziwe testowe zaproszenie.
- Powiadomienia o zablokowaniu konta: zdarzenie auth.user.banned pojawia się, gdy zostanie ustawiona wartość banned_until, i zawiera ją w polu newValue. Zdarzenie auth.user.unbanned pojawia się, gdy wartość banned_until zostanie wyczyszczona.
- Potwierdzenia usunięcia konta: zdarzenie auth.user.deleted pojawia się po usunięciu wiersza i nadal zawiera adres e-mail z tego wiersza.

## Zdarzenia logowania nie oznaczają powrotu użytkownika

Zdarzenie auth.user.signed_in pojawia się, gdy zmienia się wartość last_sign_in_at. Tę kolumnę zmieniają też odświeżenia tokenów w Supabase, więc zdarzenie może się powtarzać, dopóki użytkownik pozostaje zalogowany. Nie świadczy ono o tym, że ktoś wrócił po długiej nieobecności.

Ma też najniższy priorytet spośród zdarzeń pochodnych. Gdy ta sama aktualizacja potwierdza adres e-mail lub przenosi anonimowego użytkownika na stałe konto, Brew emituje właśnie to zdarzenie zamiast auth.user.signed_in.

Jeśli chcesz odezwać się do nieaktywnych użytkowników, ustalaj brak aktywności w swojej aplikacji na podstawie jej własnych danych o aktywności. Osobne własne zdarzenie Brew wywołuj tylko dla użytkowników, którzy spełniają warunki, a wiadomość niech wysyła aktywna automatyzacja uruchamiana tym zdarzeniem.

Przetestuj obie ścieżki: nieaktywny użytkownik dostaje wiadomość; użytkownik, który był aktywny przed sprawdzeniem, jej nie dostaje.


## Skonfiguruj Supabase w Brew

- Otwórz Integracje, wybierz Supabase i kliknij „Wygeneruj adres URL webhooka”. Brew od razu wpisze ten adres URL do konfiguracyjnego skryptu SQL.
- Utwórz sekret podpisujący poleceniem openssl rand -hex 32. Nie generuje go ani Brew, ani Supabase, a Brew wymaga co najmniej 16 znaków.
- W Supabase otwórz SQL Editor i wklej konfiguracyjny skrypt SQL. Zastąp symbol zastępczy sekretu swoim sekretem, a potem uruchom skrypt. Skrypt włącza rozszerzenia pgcrypto i pg_net, zapisuje sekret w Supabase Vault i dodaje do tabeli auth.users wyzwalacz bazy danych dla operacji wstawiania, aktualizacji i usuwania.
- Wklej ten sam sekret w Brew i kliknij Połącz. Kliknięcie Połącz tworzy wyzwalacze dla wszystkich 12 zdarzeń. Nie ma przełącznika do włączania lub wyłączania zdarzeń.
- Po połączeniu utwórz w Supabase użytkownika testowego w sekcji Authentication > Users. Status w Brew zmieni się z „Czeka na zdarzenie testowe” na „Połączona”, a w panelu „Ostatnie zdarzenia” pojawi się dostarczenie z oznaczeniem „podpis prawidłowy”.
- Utwórz automatyzację, wybierz dla niej zdarzenie Supabase i wyślij test, dopóki jest jeszcze wersją roboczą. Po nadejściu pasującego zdarzenia uruchamiają się tylko aktywne automatyzacje.
- Potrzebujesz uprawnień do wykonywania zapytań SQL w schemacie auth, instalowania rozszerzeń i zapisu w Supabase Vault. Ponowne uruchomienie skryptu SQL po wymianie sekretu jest bezpieczne.

## Obsługiwane zdarzenia Supabase

Zdarzenia auth.user.created, auth.user.updated i auth.user.deleted pochodzą z operacji wstawiania, aktualizacji i usuwania w tabeli auth.users. Pozostałe zdarzenia Brew wyznacza na podstawie aktualizacji, porównując stary i nowy wiersz.

Jedna aktualizacja daje jedno zdarzenie. Gdy jednocześnie zmienia się kilka kolumn, liczy się pierwsze dopasowanie w tej kolejności: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Aktualizacja, która nie pasuje do żadnego z nich, przychodzi jako zdarzenie auth.user.updated.

Brew obsługuje 12 typów zdarzeń:

- 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

## Synchronizacja kontaktów i personalizacja

Każde zweryfikowane zdarzenie z prawdziwym adresem e-mail tworzy lub aktualizuje kontakt w Brew dopasowany po adresie e-mail – niezależnie od tego, czy jakaś automatyzacja korzysta z tego zdarzenia. Jeśli zdarzenie zawiera odpowiednie dane, Brew ustawia imię, nazwisko oraz pola supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url i supabase_provider.

Niektóre zdarzenia ustawiają też pola cyklu życia. Pole supabase_account_status przyjmuje wartość active, invited, banned lub deleted. Pola supabase_email_verified_at, supabase_phone_verified_at i supabase_last_sign_in_at pochodzą z odpowiednich zdarzeń potwierdzenia i logowania.

W tagach personalizacji korzystaj ze schematu danych zadeklarowanego dla wybranego zdarzenia. Każde zdarzenie zawiera pole email, a jeśli są dostępne – także pola firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt i emailConfirmedAt. Imiona, nazwiska i awatary pochodzą z raw_user_meta_data, z wartościami zastępczymi dla rejestracji przez OAuth. Te trzy znaczniki czasu są podawane jako czas uniksowy w sekundach.

Zdarzenia pochodne dodają pole previousValue, newValue lub oba – ze starą i nową wartością kolumny w postaci tekstu. Zdarzenie auth.user.password_changed nie ma żadnego z nich. Pole provider zawiera metodę rejestracji, np. email, google lub github, więc możesz dobierać sekwencję powitalną do sposobu rejestracji.

Identyfikator użytkownika Supabase nie jest tagiem personalizacji. Brew zapisuje go w kontakcie jako pole supabase_user_id, aby można było według niego filtrować i segmentować kontakty.

Konto w Supabase nie oznacza zgody na e-maile marketingowe. Zapisuj zgodę przy rejestracji i sprawdzaj ją przed wysyłkami promocyjnymi.


## Czy Brew zastępuje e-maile uwierzytelniające Supabase?

Nie. Linki potwierdzające, magiczne linki, zaproszenia i resety haseł nadal wysyła Supabase Auth przez skonfigurowaną u siebie usługę e-mail, np. własny serwer SMTP. Brew uruchamia automatyzacje, gdy te zmiany trafią do tabeli auth.users. Supabase zaleca osobne domeny wysyłkowe dla e-maili uwierzytelniających i marketingowych.


## Dlaczego zdarzenie jest widoczne, a e-mail nie został wysłany?

Odebranie zdarzenia i wysłanie e-maila to osobne kroki. Upewnij się, że pasująca automatyzacja jest aktywna, a potem przejrzyj jej filtry i historię uruchomień, sprawdź, czy odbiorca może otrzymać wiadomość, i skontroluj domenę wysyłkową. Zdarzenie dotyczące użytkownika bez adresu e-mail, np. anonimowego użytkownika, który go jeszcze nie dodał, nie tworzy kontaktu i nie uruchamia automatyzacji.


## Ograniczenia i rozwiązywanie problemów

- Brew odczytuje tylko tabelę auth.users. W przypadku zdarzeń z innych tabel utwórz w Brew własny wyzwalacz i wywołuj go przez API Brew ze swojej aplikacji lub z Edge Function w Supabase.
- Brew nie może tworzyć, blokować ani usuwać użytkowników Supabase i nie wysyła e-maili Supabase Auth.
- Jeśli dostarczenia nie przechodzą weryfikacji podpisu, sekret w Supabase Vault nie pasuje do sekretu w Brew. Wygeneruj nowy sekret, uruchom z nim ponownie konfiguracyjny skrypt SQL i połącz Supabase w Brew ponownie, podając tę samą wartość.
- Jeśli nie docierają żadne zdarzenia, uruchom ponownie konfiguracyjny skrypt SQL, a potem sprawdź, czy rozszerzenie pgcrypto jest zainstalowane, a sekret w Vault pasuje do sekretu w Brew.
- Po zdarzeniu auth.user.email_changed Brew tworzy lub aktualizuje kontakt z nowym adresem. Kontakt ze starym adresem pozostaje bez zmian.
- Zdarzenie auth.user.deleted ustawia pole supabase_account_status na deleted. Nie usuwa kontaktu z Brew.
- Sprawdź zgody i cel każdego e-maila. Synchronizacja użytkowników Supabase nie upoważnia do wysyłek promocyjnych.

## Źródła i instrukcje konfiguracji

- [Porównaj narzędzia e-mailowe dla Supabase](/pl/blog/best-email-tools-for-supabase-auth-emails-product-events-and-lifecycle-campaigns)
- [Instrukcja konfiguracji Supabase](https://docs.brew.new/integrations/import/supabase)
- [Zbuduj automatyzację](https://docs.brew.new/create-emails/build-an-automation)
- [Tagi personalizacji](https://docs.brew.new/create-emails/merge-tags)
- [Co możesz wysyłać przez Brew](https://docs.brew.new/get-started/what-you-can-send)
- [Webhooki bazy danych w Supabase](https://supabase.com/docs/guides/database/webhooks)
- [Pola użytkownika w Supabase](https://supabase.com/docs/guides/auth/users)
- [Własny serwer SMTP w Supabase](https://supabase.com/docs/guides/auth/auth-smtp)

## Powiązane

- [Wszystkie integracje](https://brew.new/pl/browse/integrations.md)
- [Rejestracja](https://brew.new/pl/sign-up.md)
- Strona internetowa: https://brew.new
