Linking Apollo 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 Apollo connector syncs your Apollo CRM data to PostHog. The following objects are supported:
| Object | Sync mode | Description |
|---|---|---|
| Contacts | Incremental | People in your Apollo CRM |
| Accounts | Incremental | Companies and organizations |
| Opportunities | Full refresh | Sales opportunities and deals |
Contacts and accounts support incremental sync using the updated_at field, so only new or changed records are fetched after the first sync. Opportunities always perform a full refresh because Apollo doesn't support sorting on this endpoint.
The Apollo source is in alpha. It has been tested against Apollo's API documentation but not yet validated with live credentials. If you run into issues, please report them.
How to link Apollo
Go to the sources tab of the data pipeline section in PostHog.
Click + New source and then click Link next to Apollo.
You need an API key from Apollo. In Apollo, go to Settings > Integrations > API and create a new API key. API access requires a paid Apollo plan.
Back in PostHog, paste your API key in the API key field and click Next.
On the next page, set up the schemas you want to sync and modify the method and frequency as needed. Once done, click Import.
Once the syncs are complete, you can start using Apollo data in PostHog.
50,000 record limit
Apollo caps search results at 50,000 records per stream (100 records × 500 pages). If a synced object has more than 50,000 records, older records beyond this limit aren't retrieved.
For contacts and accounts using incremental sync, this cap is unlikely to cause issues because only new or changed records are fetched on subsequent syncs. It's most relevant on the very first full sync of a large dataset.
If the cap is reached during a sync, PostHog logs an error so the truncation is never silent.
Configuration
| Option | Type | Required |
|---|---|---|
API key | password | Yes |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
contacts | A person saved in your Apollo account — a lead or prospect with contact details and enrichment data. | Incremental, Full refresh | updated_at | — |
accounts | A company saved in your Apollo account, with firmographic and enrichment data. | Incremental, Full refresh | updated_at | — |
opportunities | A sales deal tracked in Apollo's CRM, with its stage, value, and associated account. | Full refresh | — | — |
emailer_messages | An outreach email your team drafted, scheduled, or sent from an Apollo sequence, with its delivery and engagement status. | Full refresh | — | — |
phone_calls | A call your team placed or received through the Apollo dialer, linked to the contact and account it involved. | Full refresh | — | — |
tasks | A follow-up action assigned to a rep in Apollo — a call, an email, or a LinkedIn step — with its due date and completion state. | Full refresh | — | — |
emailer_campaigns | A sequence — a planned series of outreach steps. Resolves the emailer_campaign_id carried on synced emails and tasks, and carries the sequence's own send and reply stats. | Full refresh | — | — |
users | A user of your Apollo team — the reps whose IDs appear as the owner of contacts, accounts, and deals. | Full refresh | — | — |
contact_stages | A stage in your contact pipeline. Resolves the contact_stage_id carried on synced contacts. | Full refresh | — | — |
account_stages | A stage in your account pipeline. Resolves the account_stage_id carried on synced accounts. | Full refresh | — | — |
opportunity_stages | A stage in your deal pipeline. Resolves the opportunity_stage_id carried on synced opportunities. | Full refresh | — | — |