Replicate Supabase PostgreSQL tables with continuous CDC on Postgres 17+, with batch fallback for older projects.
When Supabase OAuth is available, Embrasure detects the project's Postgres version during onboarding. Projects on Postgres 17 or newer default to an initial full load followed by continuous change data capture through Embrasure Flow. Older projects keep cursor-based or xmin batch ingestion until they are upgraded and reconnected.
Connect with Supabase OAuth. Embrasure keeps catalog discovery on its existing pooled read-only role and provisions a separate direct role with REPLICATION, BYPASSRLS, database CONNECT, schema USAGE, and table SELECT for CDC. This lets replication copy complete rows while application users keep their existing row-level security policies.
Embrasure uses the authorized Supabase management connection to create a publication for the selected tables for each sync generation, including full resyncs. The replication login does not need table ownership or database CREATE. Re-checking setup repairs older Embrasure replication logins automatically while the Supabase authorization remains valid.
The CDC path requires:
Preflight verifies the direct endpoint, logical replication settings, role privileges, replication capacity, table keys, and supported column types before Flow starts.
Projects below Postgres 17 use scheduled batch ingestion:
updated_at-style cursor that changes whenever the row changes.xmin only when no reliable cursor is available. It can increase source load because a run may need to scan the table.Cursor and xmin ingestion do not detect hard deletes. Represent deletion state in a source column when downstream users need it.
When OAuth is not available, Ember asks for a read-only Supabase Session pooler connection. In Supabase, open Connect, choose Session pooler, and copy the exact URI. The username must include the project reference, the port should be 5432, and SSL must be required.
Manual Session pooler connections use scheduled batch ingestion rather than continuous CDC. Use a dedicated read-only role with database CONNECT, schema USAGE, and table SELECT only. Do not use the project owner or service role.
Create a Supabase source and follow the connection method shown in Ember. After verification, select the schemas and tables and choose a destination database. OAuth-connected Postgres 17+ projects default to full load and continuous CDC. Older projects and manual Session pooler connections use batch sync.