# Supabase + Brew

Picu otomatisasi Brew dari webhook database auth.users Supabase, termasuk peristiwa turunan untuk konfirmasi email, perubahan kata sandi, peralihan dari akun anonim ke akun sungguhan, serta pemblokiran atau pembukaan blokir.

URL kanonis: https://brew.new/id/browse/integrations/supabase

- Arah: Data masuk
- Koneksi: Kunci rahasia webhook
- Pemicu peristiwa autentikasi

## Kemampuan yang aktif

- **Pemicu peristiwa**: Picu otomatisasi Brew dari webhook database auth.users Supabase, termasuk peristiwa turunan untuk konfirmasi email, perubahan kata sandi, dan masuk ke akun.

## Ubah peristiwa autentikasi menjadi email yang bermanfaat

Hubungkan Supabase untuk memulai email bermerek saat seseorang mendaftar, mengonfirmasi emailnya, mengubah kata sandi, atau diblokir. Skrip penyiapan menambahkan trigger database ke tabel auth.users Anda, dan Brew mengubah setiap perubahan menjadi salah satu dari 12 pemicu otomatisasi.

Supabase Auth tetap bertanggung jawab atas proses masuk, tautan konfirmasi, magic link, dan reset kata sandi. Brew membuat dan mengirim email yang menindaklanjuti perubahan tersebut.


## Yang bisa Anda buat

- Email sambutan: mulai dari auth.user.email_confirmed agar email pertama hanya sampai ke alamat yang sudah terverifikasi. Brew hanya menghasilkan peristiwa itu dari pembaruan yang mengisi email_confirmed_at, sehingga pengguna yang barisnya dibuat dalam keadaan sudah terkonfirmasi hanya menghasilkan auth.user.created. Periksa kasus mana yang berlaku untuk proyek Anda, lalu pilih salah satu pemicu agar email sambutan tidak terkirim ganda.
- Sambutan untuk tamu yang membuat akun: auth.user.upgraded_from_anonymous dipicu saat is_anonymous berubah dari true menjadi false, yaitu saat pengguna anonim beralih menjadi akun permanen.
- Pemberitahuan perubahan kata sandi: auth.user.password_changed dipicu pada setiap perubahan encrypted_password. Payload-nya tidak membawa data kata sandi apa pun. Tautkan ke halaman pemulihan akun Anda sendiri untuk berjaga-jaga jika perubahan itu tidak dilakukan oleh pengguna.
- Pemberitahuan perubahan email: auth.user.email_changed membawa alamat lama di previousValue dan alamat baru di newValue. Brew mengirim ke alamat yang baru.
- Tindak lanjut undangan: auth.user.invited dipicu saat sebuah pembaruan mengisi invited_at. Supabase Auth mengirim sendiri tautan undangannya, dan email Brew dapat menambahkan konteks onboarding. Kirim undangan uji sungguhan dari proyek Anda sebelum mengandalkan pemicu ini.
- Pemberitahuan penangguhan akun: auth.user.banned dipicu saat banned_until diisi dan membawa nilainya di newValue. auth.user.unbanned dipicu saat banned_until dikosongkan.
- Konfirmasi penghapusan akun: auth.user.deleted dipicu saat baris dihapus dan tetap menyertakan alamat email dari baris tersebut.

## Peristiwa masuk akun bukan tanda pengguna kembali

auth.user.signed_in dipicu saat last_sign_in_at berubah. Pembaruan token Supabase juga mengubah kolom itu, sehingga peristiwa ini bisa dipicu berulang kali selama sesi pengguna masih aktif. Peristiwa ini tidak menunjukkan bahwa seseorang kembali setelah lama tidak aktif.

Peristiwa ini juga merupakan peristiwa turunan dengan prioritas terendah. Jika pembaruan yang sama mengonfirmasi email atau mengubah pengguna anonim menjadi akun permanen, Brew menghasilkan peristiwa tersebut, bukan auth.user.signed_in.

Untuk menyapa pengguna yang tidak aktif, tentukan ketidakaktifan di aplikasi Anda berdasarkan data aktivitasnya sendiri. Kirim peristiwa kustom Brew terpisah hanya untuk pengguna yang memenuhi syarat, lalu biarkan otomatisasi berstatus Aktif mengirim email sapaan dari peristiwa tersebut.

Uji kedua jalur: pengguna yang tidak aktif menerima email sapaan; pengguna yang aktif sebelum pemeriksaan tidak menerimanya.


## Siapkan Supabase di Brew

- Buka Integrasi, pilih Supabase, lalu pilih Buat URL webhook. Brew sudah mengisikan URL tersebut di SQL penyiapan.
- Buat kunci rahasia dengan openssl rand -hex 32. Brew dan Supabase tidak menerbitkannya, dan Brew mensyaratkan minimal 16 karakter.
- Di Supabase, buka SQL Editor dan tempelkan SQL penyiapan. Ganti placeholder kunci rahasia dengan kunci rahasia Anda, lalu jalankan. SQL ini mengaktifkan pgcrypto dan pg_net, menyimpan kunci rahasia di Supabase Vault, dan menambahkan trigger database ke auth.users untuk penambahan, pembaruan, dan penghapusan baris.
- Tempelkan kunci rahasia yang sama ke Brew, lalu pilih Hubungkan. Brew pun membuat 12 pemicu, satu untuk setiap peristiwa. Tidak ada tombol untuk mengaktifkan atau menonaktifkan peristiwa.
- Setelah terhubung, buat pengguna uji di Supabase pada Authentication > Users. Status di Brew berubah dari “Menunggu peristiwa uji” menjadi “Terhubung”, dan Peristiwa terbaru menampilkan pengiriman tersebut dengan label “tanda tangan valid”.
- Buat otomatisasi, pilih peristiwa Supabase yang memicunya, lalu jalankan uji selagi otomatisasi masih berstatus Draf. Hanya otomatisasi berstatus Aktif yang dijalankan saat peristiwa yang cocok masuk.
- Anda memerlukan izin untuk menjalankan SQL pada skema auth, memasang ekstensi, dan menulis ke Supabase Vault. Menjalankan ulang SQL setelah merotasi kunci rahasia aman dilakukan.

## Peristiwa Supabase yang didukung

auth.user.created, auth.user.updated, dan auth.user.deleted berasal dari penambahan, pembaruan, dan penghapusan baris di auth.users. Brew menghasilkan peristiwa lainnya dari pembaruan dengan membandingkan baris lama dan baris baru.

Satu pembaruan menghasilkan satu peristiwa. Jika beberapa kolom berubah bersamaan, kecocokan pertama yang berlaku, dengan urutan berikut: email_confirmed, phone_confirmed, upgraded_from_anonymous, email_changed, password_changed, banned, unbanned, invited, signed_in. Pembaruan yang tidak cocok dengan satu pun di antaranya masuk sebagai auth.user.updated.

Brew mendukung 12 jenis peristiwa berikut:

- 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

## Sinkronisasi kontak dan personalisasi

Setiap peristiwa terverifikasi yang memiliki alamat email sungguhan akan membuat atau memperbarui kontak Brew, yang dicocokkan berdasarkan email, baik peristiwa itu dipakai otomatisasi maupun tidak. Jika datanya tersedia, Brew mengisi nama depan, nama belakang, supabase_user_id, supabase_phone, supabase_role, supabase_full_name, supabase_avatar_url, dan supabase_provider.

Beberapa peristiwa juga mengisi field siklus hidup. supabase_account_status berubah menjadi active, invited, banned, atau deleted. supabase_email_verified_at, supabase_phone_verified_at, dan supabase_last_sign_in_at berasal dari peristiwa konfirmasi dan masuk akun yang sesuai.

Gunakan skema payload yang dideklarasikan untuk peristiwa terpilih sebagai acuan merge tag. Setiap peristiwa menyertakan email dan, jika tersedia, firstName, lastName, fullName, displayName, avatarUrl, phone, role, provider, createdAt, lastSignInAt, dan emailConfirmedAt. Nama dan avatar diambil dari raw_user_meta_data, dengan sumber cadangan untuk pendaftaran lewat OAuth. Ketiga stempel waktu tersebut dinyatakan dalam detik Unix.

Peristiwa turunan menambahkan previousValue, newValue, atau keduanya, yang berisi nilai kolom lama dan baru dalam bentuk teks. auth.user.password_changed tidak memiliki keduanya. Field provider berisi metode pendaftaran, seperti email, google, atau github, sehingga Anda dapat mengarahkan alur sambutan berdasarkan cara seseorang mendaftar.

ID pengguna Supabase tidak tersedia sebagai merge tag. Brew menyimpannya di kontak sebagai supabase_user_id untuk keperluan filter dan segmentasi.

Akun Supabase tidak membuktikan adanya persetujuan untuk email pemasaran. Catat persetujuan saat pendaftaran dan periksa sebelum pengiriman promosi.


## Apakah Brew menggantikan email autentikasi Supabase?

Tidak. Supabase Auth tetap mengirim tautan konfirmasi, magic link, undangan, dan reset kata sandi melalui penyiapan email miliknya sendiri, seperti SMTP kustom. Brew memulai otomatisasi setelah perubahan tersebut tercatat di auth.users. Supabase menyarankan domain pengirim yang terpisah untuk email autentikasi dan email pemasaran.


## Mengapa peristiwa muncul tetapi email tidak terkirim?

Menerima peristiwa dan mengirim email adalah dua langkah terpisah. Pastikan otomatisasi yang cocok berstatus Aktif, lalu periksa filter dan riwayat eksekusinya, kelayakan penerima, serta domain pengirim. Peristiwa untuk pengguna tanpa alamat email, seperti pengguna anonim yang belum menambahkan email, tidak membuat kontak dan tidak memulai otomatisasi.


## Batasan dan pemecahan masalah

- Brew hanya membaca auth.users. Untuk peristiwa dari tabel lain, buat pemicu kustom di Brew, lalu picu lewat API Brew dari aplikasi Anda atau dari Supabase Edge Function.
- Brew tidak dapat membuat, memblokir, atau menghapus pengguna Supabase, dan tidak mengirim email Supabase Auth.
- Jika pengiriman webhook gagal dalam pemeriksaan tanda tangan, kunci rahasia di Supabase Vault tidak cocok dengan yang ada di Brew. Buat kunci rahasia baru, jalankan ulang SQL penyiapan dengan kunci tersebut, lalu hubungkan ulang Supabase di Brew dengan nilai yang sama.
- Jika tidak ada pengiriman yang masuk, jalankan ulang SQL penyiapan, lalu pastikan pgcrypto sudah terpasang dan kunci rahasia di Vault cocok dengan yang ada di Brew.
- Setelah auth.user.email_changed, Brew membuat atau memperbarui kontak dengan alamat baru. Kontak dengan alamat lama dibiarkan tanpa perubahan.
- auth.user.deleted mengisi supabase_account_status dengan deleted. Peristiwa ini tidak menghapus kontak dari Brew.
- Tinjau persetujuan dan tujuan setiap email. Menyinkronkan pengguna Supabase tidak memberi izin untuk pengiriman promosi.

## Sumber dan panduan penyiapan

- [Perbandingan alat email untuk Supabase](/id/blog/best-email-tools-for-supabase-auth-emails-product-events-and-lifecycle-campaigns)
- [Panduan penyiapan Supabase](https://docs.brew.new/integrations/import/supabase)
- [Membuat otomatisasi](https://docs.brew.new/create-emails/build-an-automation)
- [Merge tag](https://docs.brew.new/create-emails/merge-tags)
- [Yang bisa Anda kirim dengan Brew](https://docs.brew.new/get-started/what-you-can-send)
- [Webhook database Supabase](https://supabase.com/docs/guides/database/webhooks)
- [Field pengguna Supabase](https://supabase.com/docs/guides/auth/users)
- [SMTP kustom Supabase](https://supabase.com/docs/guides/auth/auth-smtp)

## Terkait

- [Semua integrasi](https://brew.new/id/browse/integrations.md)
- [Daftar](https://brew.new/id/sign-up.md)
- Situs web: https://brew.new
