Linking Convex as a source
Let AI connect your sources for you
Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog.

Contents
The Convex connector can sync your Convex database tables to PostHog.
Note: Convex streaming exports require the Convex Professional plan. See the Convex pricing page for details.
Prerequisites
You need two things from your Convex project:
- Deploy URL – must be in the format
<something>.convex.cloud. Find it in the Convex Dashboard under Settings > URL & Deploy Key. - Deploy key – found in the same location: Settings > URL & Deploy Key.
Linking Convex to PostHog
- Go to the Data pipeline page and the sources tab in PostHog
- Click New source and select Convex
- Enter your Deploy URL and Deploy key
- Click Next, select the tables you want to sync, and then press Import
Once the syncs are complete, you can start using Convex data in PostHog.
Configuration
| Option | Type | Required |
|---|---|---|
Deployment URL | text | Yes |
Deploy key | password | Yes |
Supported tables
The tables available from this source are discovered from your account when you connect it, so the exact list depends on your data. Once connected, you can pick which tables to sync from the sources tab.
Component tables
Convex lets you install components — self-contained packages (like betterAuth) that bring their own tables outside the default app component. PostHog can sync tables from both your root component and any installed components:
- Root component tables appear with their original name (e.g.,
users,messages) - Component tables appear with a component prefix using dot notation (e.g.,
betterAuth.users,betterAuth.sessions)
To sync components in older Convex sources, you currently need to delete the source and re-add it for PostHog to pick up component tables.
How syncing works
Convex uses its streaming export API to sync data:
- Initial sync – paginates through a full table snapshot using Convex's
/api/list_snapshotendpoint. - Incremental sync – fetches only changed documents using Convex's
/api/document_deltasendpoint. All tables support incremental sync via the_tsfield, which is a nanosecond mutation timestamp. - Partitioning – data is datetime-partitioned on the
_creationTimefield.
Note: If the sync cursor is older than approximately 30 days (Convex's retention window), a full resync is required.
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:
| US | EU |
|---|---|
| 44.205.89.55 | 3.75.65.221 |
| 52.4.194.122 | 18.197.246.42 |
| 44.208.188.173 | 3.120.223.253 |