One GoHighLevel Lead Engine

One scheduled job pulls new leads out of a connected GoHighLevel pipeline, and from the moment a card exists this platform owns its stage.

What it is

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

See it
One GoHighLevel Lead Engine
Apr
May
Jun
Jul
Ronan Petsch — Equipment Storage
Framing
Sutter Kline — 30×40 Garage
Concrete
Gideon Alt — 30×40 Garage
Trim
Delia Yoder — Hobby Shop
Framing
Gideon Alt — 40×64 Shop
Concrete
Framing crewConcrete crewTrim crew
A diagram of the single engine with its five verdict branches, beside the New Lead column showing freshly minted cards. Sample data — no customer information appears here.
How it works
  1. 1Runs per builder, gated on a per-org switch that defaults on and means 'this org receives GHL leads'
  2. 2Only the mapped new-lead stage is read; nothing else about a lead is driven by the CRM
  3. 3Same-person detection matches on email, phone or name even when no id matches
  4. 4Unique indexes on the org plus CRM contact id and opportunity id prevent a future third write path recreating duplicates
Why we built it

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.

The problem
  • Two engines racing and minting duplicate rows
  • Leads arriving while nobody had a browser tab open
  • Per-rep visibility scoping breaking deduplication
Sound familiar?
What you get
Leads arrive whether or not anyone is logged in
One row per lead, enforced at the database level
A clear verdict per lead you can point at
What's inside

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 →