Linking Supabase as a source

The Supabase connector can link your Supabase database tables to PostHog. Supabase is built on top of Postgres, so this connector uses the same underlying integration as the Postgres source.

To link Supabase:

  1. Go to the Data pipeline page and the sources tab in PostHog
  2. Click New source and select Supabase
  3. Enter your Supabase connection details. You can find the pooler host and credentials in your Supabase project under Project SettingsDatabaseConnection pooling (Session mode):
    • Host: The Session pooler hostname from Supabase, e.g. aws-0-us-east-1.pooler.supabase.com. Don't use the direct database host (db.<ref>.supabase.co) — it's IPv6-only and not reachable from PostHog.
    • Port: The port your database is listening on. The default is 5432.
    • Database: The name of the database. Supabase defaults this to postgres.
    • User: The pooler username in the format postgres.<project-ref> (e.g. postgres.abcdefghijklmno), or another database user with read access to the schemas and tables you want to sync.
    • Password: The password for the user.
    • Schema: (Optional) The schema where your tables are located. Leave blank to browse and sync tables from all schemas, or specify one to limit the selection. Supabase defaults this to public.
  4. If you need to connect through an SSH tunnel, enable and configure it (optional):
    • Tunnel host: The hostname of your SSH server.
    • Tunnel port: The port your SSH server is listening on.
    • Authentication type:
      • For password authentication, enter your SSH username and password.
      • For key-based authentication, enter your SSH username, private key, and optional passphrase.
    • Require TLS through tunnel? - Whether to require TLS encryption through the SSH tunnel. Enabled by default. Disable if your database does not support TLS.
  5. Click Link

The data warehouse then starts syncing your Supabase data. You can see details and progress in the sources tab.

Configuration

OptionDescription
Connection string (optional)
Type: text
Required: False
Host
Type: text
Required: True

For standard syncs, use the Session pooler host (Project settings → Database → Connection pooling), e.g. aws-0-<region>.pooler.supabase.com, with username postgres.<project-ref> — the direct host db.<ref>.supabase.co is IPv6-only. For change data capture (CDC) you must use the direct host instead and enable Supabase's IPv4 add-on, because logical replication doesn't work through the pooler.

Port
Type: number
Required: True
Database
Type: text
Required: True
User
Type: text
Required: True
Password
Type: password
Required: True
Schema
Type: text
Required: False
Use SSH tunnel?
Type: ssh-tunnel
Required: False

Selecting columns

By default, PostHog syncs all columns from each table. To sync only specific columns:

  1. During source setup, click Columns next to any table in the table picker.
  2. Uncheck columns you don't want to sync.
  3. Primary key columns and the incremental sync field (if configured) are always synced and cannot be disabled.

You can also change column selection after setup:

  1. Go to the sources tab and click your Supabase source.
  2. Click Configure next to any schema.
  3. Under Columns, select which columns to sync.

See the Postgres source documentation for details on resync behavior when adding columns.

SSL/TLS required for new sources

Supabase sources created after February 18, 2026 require SSL/TLS encryption for database connections. Supabase enforces SSL/TLS by default, so this is typically already in place. If you're connecting through an SSH tunnel, you can optionally disable TLS using the Require TLS through tunnel? toggle since the tunnel already encrypts the connection.

Permissions The Supabase source only requires read permissions on the schemas and tables you intend to sync. We recommend creating a dedicated read-only role in Supabase rather than using the default postgres superuser.

Inbound IP addresses

We use a set of IP addresses to access your instance. To ensure this connector works, add these IPs to your inbound security rules:

USEU
44.205.89.553.75.65.221
44.208.188.17318.197.246.42
52.4.194.1223.120.223.253

Note: PostHog connects over IPv4. Supabase's direct database host (db.<ref>.supabase.co) is IPv6-only, so you must use the Session pooler host instead. Find it in your Supabase project under Project SettingsDatabaseConnection pooling.

Community questions

Was this page useful?

Questions about this page? or post a community question.