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. To find your connection details, click Connect in the top bar of your Supabase dashboard, open the Direct tab, and pick Session pooler or Direct connection — the URL is shown at the bottom:
    • Host: The Session pooler hostname from Supabase, e.g. aws-0-us-east-1.pooler.supabase.com. Don't use the Project URL (<ref>.supabase.co) from your Supabase dashboard — that's the REST API endpoint, not a database host. Also avoid the direct database host (db.<ref>.supabase.co) which is 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

To get your connection string, click Connect in the top bar of your Supabase dashboard, open the Direct tab, and pick Session pooler or Direct connection — the URL is shown at the bottom. For standard syncs use the Session pooler host, 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 Direct connection 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
52.4.194.12218.197.246.42
44.208.188.1733.120.223.253

Note: PostHog connects over IPv4. Don't paste the Project URL (<ref>.supabase.co) — that's the REST API endpoint, not a database host. Supabase's direct database host (db.<ref>.supabase.co) is also IPv6-only, so you must use the Session pooler host instead. To find it, click Connect in the top bar of your Supabase dashboard, open the Direct tab, and select Session pooler — the URL is shown at the bottom.

Community questions

Was this page useful?

Questions about this page? or post a community question.