Sources

Supabase warehouse sync

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 use an initial full load followed by continuous change data capture through AWS DMS. Older projects keep cursor-based or xmin batch ingestion until they are upgraded and reconnected.

Continuous CDC requirements

Connect with Supabase OAuth. Embrasure keeps catalog discovery on its existing pooled read-only role and provisions a separate direct role with REPLICATION, database CONNECT, schema USAGE, and table SELECT for CDC.

The CDC path requires:

  • Supabase Postgres 17 or newer.
  • The Supabase IPv4 add-on so AWS DMS can reach the direct database endpoint.
  • A stable primary key on every selected table.
  • An available logical replication slot and WAL sender.

Preflight verifies the direct endpoint, logical replication settings, role privileges, replication capacity, table keys, and supported column types before AWS resources are created. AWS DMS uses Supabase's required test-decoding plugin.

Batch fallback

Projects below Postgres 17 use scheduled batch ingestion:

  • Prefer a stable updated_at-style cursor that changes whenever the row changes.
  • Use xmin only when no reliable cursor is available. It can increase source load because a run may need to scan the table.
  • Keep a stable primary key on every selected table.

Cursor and xmin ingestion do not detect hard deletes. Represent deletion state in a source column when downstream users need it.

Manual Session pooler connection

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.

Connect Embrasure

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.