A single server job that runs every ten minutes per connected builder. It takes only the opportunities sitting in that builder's mapped new-lead stage and mints the ones not already held. Every lead gets one of five verdicts: suppressed (on the durable delete list), already a lead row, already linked to an opportunity, same person under a different id, or genuinely new.
Also called: gohighlevel sync · GHL leads · CRM sync duplicates · leads syncing twice
- 1Runs per builder, gated on a per-org switch that defaults on and means 'this org receives GHL leads'
- 2Only the mapped new-lead stage is read; nothing else about a lead is driven by the CRM
- 3Same-person detection matches on email, phone or name even when no id matches
- 4Unique indexes on the org plus CRM contact id and opportunity id prevent a future third write path recreating duplicates
Two engines pulled leads from the connected CRM at once — one running inside every open browser tab, one running on a schedule — and they created records differently, so a lead arriving down both paths became two rows neither engine recognised as the other's. The browser one could not see leads that arrived while nobody had a tab open, ran once per tab instead of once, and deduplicated against a list filtered by what that rep was allowed to see, so a rep who could not see a colleague's leads could not deduplicate against them either and minted a copy. One scheduled job now does it, and from the moment a card exists this platform owns its stage.
- Two engines racing and minting duplicate rows
- Leads arriving while nobody had a browser tab open
- Per-rep visibility scoping breaking deduplication
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →