Introduction
HighLevel (internallygoHighLevel) is a CRM and marketing-automation platform for agencies. The connector imports HighLevel objects — contacts, opportunities, invoices, forms, calendar events, email campaigns, and phone numbers — over OAuth2 and stores them as rows in a per-data-source table.
HighLevel imports one object type per data source. To bring several object types from the same HighLevel location into a workspace, create one data source per type from the same authorized location. Because the connector imports raw objects rather than a fixed performance-metric set, the available columns are discovered from each object type and from the location’s own fields, and the set can grow over time as HighLevel returns new fields.
To connect this data source, see How to connect HighLevel to Adriel.
Data refresh strategy
HighLevel is a simple file-cache connector. Each object type is cached as rows in its own table, and each scheduled run refreshes that cache in place (insert new rows, update existing rows by their unique key). There is no separate architecture-versus-reports split — a single cache holds the imported objects. Refresh schedule. The cache refreshes every 2 hours at minute 0 (UTC) (cron0 */2 * * *). The refresh type is decided at runtime:
- Full refresh when the hour is 00, 06, 12, or 18 UTC (four of the twelve daily runs), when the cache table does not yet exist, or in development mode. A full refresh re-imports all available records for the object type.
- Partial refresh on every other run. Each object type uses a date cursor (see Architecture levels) to fetch only records changed since the last saved record, then upserts them into the cache.
Architecture levels
HighLevel does not expose an ad-style account hierarchy. Each data source resolves to a single location and a single object type: Location → Object type (one of: Contacts, Opportunities, Invoices, Forms, Calendar events, Email campaigns, Phone numbers) Each object type is imported from its own HighLevel endpoint and uses its own partial-refresh cursor:Metrics
How to read the columns
Data type uses this vocabulary: Number, Currency, Percentage, Ratio, Duration, Date, Text, URL, Array, Boolean.
API Key in code style like
dateUpdated is the HighLevel object field name. Nested fields are flattened with an underscore delimiter (for example contact.name becomes contact_name). Italic text describes how a value is produced when it does not map cleanly to a single field.HighLevel imports raw objects, so the columns below are representative of each object type. The exact column set is discovered per object type and per location and can grow as HighLevel returns new fields; a location’s custom fields appear as additional columns resolved by name.Contacts & audience
Imported from the Contacts object type.Opportunities & pipeline
Imported from the Opportunities object type. Records are flattened; the nestednotes, tasks, calendarEvents, customFields, and followers fields are omitted, and contact.tags is joined into a comma-separated string.
Campaigns & sends
Imported from the Email campaigns (schedules) object type. Theemails alias resolves to the same import. The __v, child, _id, sendDays, and resendInfo fields are stripped before storage.
Appointments & activities
This category covers three object types — calendar events, form submissions, and phone numbers — each imported into its own data source. Calendar events. Fetched per calendar over a fixed window (now − 3 days to now + 50 days); drafted calendars are skipped.
Form submissions. Fetched from form submissions; full sync starts at
2000-01-01. Records are flattened.
Phone numbers. Fetched per location; the unique key is
sid.
Revenue
Imported from the Invoices object type, using thealtId / altType=location request parameters.
Breakdowns
Because HighLevel imports raw object rows into a generic table, any imported column can be used to group rows — there is no fixed breakdown allowlist. The columns available for grouping depend on the object type and on the location’s own fields, and can grow over time as HighLevel returns new fields.
Object attributes
Group rows by any categorical column on the imported object. Common examples per object type:Date grouping
Date groupings are Adriel-side aggregations applied to an object’s date field (for example
dateUpdated, updatedAt, or createdAt); they are not returned by HighLevel.Limitations
- One object type per data source — each HighLevel data source imports exactly one object type. To combine object types, create one data source per type from the same location.
- Per-run row cap — each object type imports up to 100 pages of 100 records (10,000 rows) per run; locations with more records may not be fully represented in a single run.
- Calendar events use a fixed window — calendar events are always fetched for now − 3 days to now + 50 days and the full window is re-fetched every run. Events outside that window are not retained, and the partial-refresh cursor is ignored.
- Server region restriction — only HighLevel accounts hosted in the EU or KR server regions are supported.
- Single-use refresh tokens — each token refresh issues a new refresh token that supersedes the prior one; a HighLevel-side revocation is only detected on the next scheduled sync.
- Dynamic schema — the column set is discovered at import time and is not static; new fields returned by HighLevel appear as new columns on subsequent syncs.
API references
- HighLevel (LeadConnector) API documentation
- Contacts API
- Opportunities API
- Invoices API
- Calendars API
- Forms API
See also
- How to connect HighLevel to Adriel (paired how-to)
- HubSpot Deals data reference — for deal pipeline and revenue reporting
- Active Campaign data reference — for another CRM / marketing-automation source
