Two sync entry points
| Flow | What it does |
|---|---|
| Initial import | pulls all matching contacts from HighLevel and builds the first set of sync mappings |
| Incremental sync | pulls contacts again, checks what changed since the last sync timestamp, and updates only what needs work |
How contact import works
During import, Consuelo:- paginates through HighLevel contacts in batches of 100
- optionally filters to contacts with specific HighLevel tags
- maps each HighLevel contact into CRM field names
- checks for an existing sync mapping first
- falls back to dedupe by normalized phone number, then email address
- creates a new person or updates an existing one
- stores or updates the sync mapping and last sync timestamp
Default dedupe behavior
The current implementation checks duplicates in this order:- existing HighLevel sync mapping
- normalized phone number
- email address
Contact webhook events
The integration accepts and processes these HighLevel contact events:- ContactCreate
- ContactUpdate
- ContactDelete
- ContactDndUpdate
Conflict handling
The sync engine supports three conflict strategies:- use HighLevel data
- keep the CRM data
- merge the non-null values from both sides
What the sync log tracks
Every import and incremental sync creates a log entry with:- total contacts processed
- imported count
- updated count
- skipped count
- conflict count
- error details