--- id: postgres-changes title: Postgres Changes description: Getting started with Realtime's Postgres Changes feature --- Supabase Postgres Changes enable clients to listen Postgres database events, specifically INSERT, UPDATE, and DELETE events. Clients can elect to get changes for all tables in the public schema, a specific table, or a specific column's value. The postgres changes functionality is supported by supabase-js v2 release candidate. To listen to all events on all tables in the public schema: ```js const { createClient } = require('@supabase/supabase-js') const supabase = createClient( process.env.SUPABASE_URL, process.env.SUPABASE_KEY ) /* The name of the channel can be set to any string. Event can be either INSERT, UPDATE, DELETE, or * for all events. */ const channel = supabase .channel('db-changes') .on('postgres_changes', { event: '*', schema: '*' }, (payload) => console.log(payload) ) .subscribe() ``` To listen to INSERT events on the messages table in the public schema: ```js // Setup const channel = supabase .channel('db-changes') .on( 'postgres_changes', { event: 'INSERT', schema: 'public', table: 'messages' }, (payload) => console.log(payload) ) .subscribe() ``` To listen to UPDATE events only when a specific column matches a value: ```js // Setup const channel = supabase .channel('db-changes') .on( 'postgres_changes', { event: 'UPDATE', schema: 'public', table: 'messages', filter: 'id=eq.1' }, (payload) => console.log(payload) ) .subscribe() ``` Clients can also mix and match and listen to different events and schema/tables/filters: ```js // Setup const channel = supabase .channel('db-changes') .on( 'postgres_changes', { event: '*', schema: 'public', table: 'messages', filter: 'id=eq.23' }, (payload) => console.log(payload) ) .on( 'postgres_changes', { event: 'INSERT', schema: 'public', table: 'users' }, (payload) => console.log(payload) ) .subscribe() ```