Linking HighLevel 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 HighLevel connector syncs your CRM, sales, marketing, and payment data – contacts, opportunities, conversations, messages, forms, surveys, payments, and more – from a HighLevel sub-account into PostHog.
To link HighLevel:
Go to the sources tab of the data pipeline section in PostHog.
Click + New source and then click Link next to HighLevel.
You need a private integration token from HighLevel. In your HighLevel sub-account, go to Settings → Private Integrations. Create a new private integration and grant it the read scopes for the tables you want to sync. Copy the token (it starts with
pit-).You also need your Location ID. Find it under Settings → Business Profile, or in the sub-account URL after
/location/.Back in PostHog, paste the private integration token and Location ID in the respective fields and click Next.
Select the tables you want to sync, set the sync method and frequency, then click Import.
Once the syncs are complete, you can start using HighLevel data in PostHog.
Available tables
| Table | Description | Sync method |
|---|---|---|
contacts | People and businesses in the CRM | Incremental |
opportunities | Deals in the sales pipelines | Full refresh |
pipelines | Sales pipelines and their stages | Full refresh |
calendars | Booking calendars | Full refresh |
calendar_groups | Groups that organize calendars | Full refresh |
conversations | Conversation threads across channels | Full refresh |
messages | Messages for all channels except email | Incremental |
email_messages | Email messages in conversations | Incremental |
custom_fields | Custom fields defined in the sub-account | Full refresh |
tags | Tags defined in the sub-account | Full refresh |
forms | Forms built in the sub-account | Full refresh |
form_submissions | Submissions of forms | Incremental |
surveys | Surveys built in the sub-account | Full refresh |
survey_submissions | Submissions of surveys | Incremental |
invoices | Invoices sent from the sub-account | Full refresh |
transactions | Payment transactions | Full refresh |
orders | Orders from funnels, websites, and stores | Full refresh |
subscriptions | Recurring payment subscriptions | Full refresh |
products | Products sold in the sub-account | Full refresh |
workflows | Automation workflows | Full refresh |
campaigns | Campaigns | Full refresh |
Incremental tables sync only new or updated records on each run. Full refresh tables reload all data on each sync.
The contacts table uses a 10-minute lookback window to account for HighLevel's indexing delay. The messages and email_messages tables track creation time only – delivery status changes after the initial sync aren't picked up by incremental syncs.
Required scopes
The private integration token needs the following read scopes for the tables you want to sync:
calendars.readonlycalendars/groups.readonlycampaigns.readonlycontacts.readonlyconversations.readonlyconversations/message.readonlyforms.readonlyinvoices.readonlylocations/customFields.readonlylocations/tags.readonlyopportunities.readonlypayments/orders.readonlypayments/subscriptions.readonlypayments/transactions.readonlyproducts.readonlysurveys.readonlyworkflows.readonly
You only need to enable the scopes for the tables you plan to sync.
Configuration
| Option | Description |
|---|---|
Private integration tokenType: password Required: True | |
Location IDType: text Required: True | The ID of the sub-account the token belongs to. Find it under Settings > Business Profile, or in the sub-account URL after |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
contacts | People and businesses in the HighLevel sub-account's CRM. | Incremental, Full refresh | dateUpdated | — |
opportunities | Deals in the sales pipelines of the sub-account. | Full refresh | — | — |
pipelines | Sales pipelines and their stages. | Full refresh | — | — |
calendars | Booking calendars in the sub-account. | Full refresh | — | — |
calendar_groups | Groups that organize calendars. | Full refresh | — | — |
conversations | Conversation threads with contacts across channels such as SMS, email and chat. | Full refresh | — | — |
messages | Messages in the sub-account's conversations, for every channel except email. | Incremental, Full refresh | dateAdded | — |
email_messages | Email messages in the sub-account's conversations. | Incremental, Full refresh | dateAdded | — |
custom_fields | Custom fields defined in the sub-account. | Full refresh | — | — |
tags | Tags defined in the sub-account. | Full refresh | — | — |
forms | Forms built in the sub-account. | Full refresh | — | — |
form_submissions | Submissions of the sub-account's forms. | Incremental, Full refresh | createdAt | — |
surveys | Surveys built in the sub-account. | Full refresh | — | — |
survey_submissions | Submissions of the sub-account's surveys. | Incremental, Full refresh | createdAt | — |
invoices | Invoices sent from the sub-account. | Full refresh | — | — |
transactions | Payment transactions in the sub-account. | Full refresh | — | — |
orders | Orders placed in the sub-account's funnels, websites and stores. | Full refresh | — | — |
subscriptions | Recurring payment subscriptions in the sub-account. | Full refresh | — | — |
products | Products sold in the sub-account. | Full refresh | — | — |
workflows | Automation workflows in the sub-account. | Full refresh | — | — |
campaigns | Campaigns in the sub-account. | Full refresh | — | — |





