Hi @RobMCraig ,
From what I’ve seen, the 3CX > HubSpot integration does not preload all HubSpot contacts into the 3CX phonebook.
Instead, contacts get added dynamically when calls are placed or received if you have the “Add to phonebook” option enabled. That’s expected behavior and matches 3CX’s own setup guidee
If you want all HubSpot contacts to be in 3CX upfront, you’d need to either export from HubSpot and import via the 3CX XML phonebook, or build a small middleware process using the HubSpot Contacts API
(Accounts Dashboard | HubSpot)
That’s the only way to bypass waiting for call-based creation.
On duplicates: 3CX does basic matching by number. If your HubSpot records have consistent phone formatting, they should map cleanly.
But it’s true duplicates can happen if numbers are inconsistent or if a manual import is layered on top of auto-creation. HubSpot has guidance on data sync deduplication rules here:
(Deduplicate records in HubSpot)
For many teams, the limitation becomes managing ongoing consistency between HubSpot and 3CX. That’s exactly where purpose-built two-way sync tools come in. Instead of XML imports or custom middleware
You can automate a continuous, real-time sync between HubSpot and 3CX contacts and handle deduplication rules natively. Stacksync was built for this kind of case: preventing duplicate creation, syncing all HubSpot contacts into 3CX from day one, and then keeping both systems updated whenever changes happen.
This removes the manual import step and the “wait until first call” problem, while saving your team from maintaining scripts or XML feeds.
Hope this helps clear things up.