Připoj Supabase a spouštěj e-maily v duchu značky, když se někdo zaregistruje, potvrdí svůj e-mail, změní heslo nebo je zablokován. Instalační skript přidá do tvé tabulky auth.users databázový trigger a Brew každou změnu převede na jeden z celkem 12 spouštěčů automatizací.
Přihlašování, potvrzovací odkazy, magic linky a obnovu hesla má dál na starosti Supabase Auth. Brew vytváří a posílá e-maily, které na tyto změny navazují.
Událost auth.user.signed_in nastane, když se změní last_sign_in_at. Tento sloupec ale mění i obnova tokenů v Supabase, takže událost může nastávat opakovaně, zatímco uživatel zůstává přihlášený. Neukazuje tedy, že se někdo vrátil po dlouhé nepřítomnosti.
Je to navíc odvozená událost s nejnižší prioritou. Když stejná aktualizace potvrdí e-mail nebo převede anonymního uživatele na trvalý účet, Brew vyšle tuto událost místo auth.user.signed_in.
Pokud chceš poslat e-mail neaktivním uživatelům, o neaktivitě rozhoduj ve své aplikaci podle jejích vlastních dat o aktivitě. Samostatnou vlastní událost Brew spusť jen pro uživatele, kteří podmínky splňují, a e-mail z této události nech poslat aktivní automatizaci.
Otestuj obě cesty: neaktivní uživatel e-mail dostane; uživatel, který byl před kontrolou aktivní, ho nedostane.
Události auth.user.created, auth.user.updated a auth.user.deleted vznikají z vložení, aktualizací a smazání v tabulce auth.users. Ostatní události Brew odvozuje z aktualizace tak, že porovná starý a nový řádek.
Jedna aktualizace vyvolá jednu událost. Když se změní několik sloupců najednou, vyhraje první shoda v tomto pořadí: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Aktualizace, která neodpovídá žádné z nich, dorazí jako auth.user.updated.
Brew podporuje těchto 12 typů událostí:
Každá ověřená událost se skutečnou e-mailovou adresou vytvoří nebo aktualizuje kontakt v Brew s touto adresou, a to bez ohledu na to, jestli událost používá nějaká automatizace. Pokud jsou data k dispozici, Brew nastaví jméno, příjmení, supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url a supabase_provider.
Některé události nastaví i pole životního cyklu. Pole supabase_account_status získá hodnotu active, invited, banned nebo deleted. Pole supabase_email_verified_at, supabase_phone_verified_at a supabase_last_sign_in_at pocházejí z odpovídajících událostí potvrzení a přihlášení.
Pro proměnné vycházej z deklarovaného schématu payloadu vybrané události. Každá událost obsahuje pole email a, pokud jsou k dispozici, i firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt a emailConfirmedAt. Jména a avatary pocházejí z raw_user_meta_data se záložními hodnotami pro registrace přes OAuth. Všechna tři časová razítka jsou unixový čas v sekundách.
Odvozené události přidávají previousValue, newValue nebo obojí, tedy starou a novou hodnotu sloupce jako text. Událost auth.user.password_changed nemá ani jedno. Pole provider obsahuje způsob registrace, například email, google nebo github, takže můžeš uvítací sekvence větvit podle toho, jak se kdo zaregistroval.
ID uživatele v Supabase není proměnná. Brew ho u kontaktu ukládá jako supabase_user_id pro filtrování a segmentaci.
Účet v Supabase neznamená souhlas s marketingovými e-maily. Souhlas zaznamenej už při registraci a před propagačními rozesílkami ho ověř.
Ne. Potvrzovací odkazy, magic linky, pozvánky a obnovení hesla dál posílá Supabase Auth přes vlastní nastavení e-mailů, například vlastní SMTP. Brew spouští automatizace až poté, co se tyto změny propíšou do auth.users. Supabase doporučuje pro autentizační a marketingové e-maily oddělené odesílací domény.
Přijetí události a odeslání e-mailu jsou samostatné kroky. Ověř, že odpovídající automatizace je aktivní, a pak projdi její filtry a historii běhů a zkontroluj, jestli má příjemce na e-mail nárok a jak je na tom odesílací doména. Událost uživatele bez e-mailové adresy, například anonymního uživatele, který si ji zatím nepřidal, nevytvoří žádný kontakt a nespustí žádnou automatizaci.