I need a Make.com contractor to build a scenario that pulls lead records from a persistent API based Lead Database on a scheduled interval of 24 hours or less, then uses the Make.com HTTP module and the GoHighLevel app to create or update contacts in a GHL subaccount, including both standard fields and custom fields, and to create or update an associated opportunity in a designated pipeline. The solution should provide clean upsert logic with no duplicates, complete field mapping, and reliable automation with proper error handling.
Hello @Gary_Gilkison , welcome to make.com community, I have worked and have experience with Make.com and l will love to collaborate with you on this you can schedule a call Here and you can checkout my upwork profile Here, for my pastworks and certifications
@Gary_Gilkison Hi Gary! You want a Make scenario that pulls leads from your persistent API based Lead Database on a recurring schedule and keeps a GoHighLevel subaccount in sync.
Each lead should become or update a contact with both standard and custom fields, and there should be an associated opportunity in a defined pipeline, with clean upsert logic and no duplicates.
My approach to this is to keep Make as the orchestration layer and treat both your Lead Database and GoHighLevel as systems of record.
I would design a scheduled scenario that fetches leads from your API, normalizes the payload, and then uses GoHighLevel modules and direct API calls where needed to upsert contacts and opportunities, with clear mapping, logging, and error handling so failures are visible and recoverable.
-
What does your Lead Database API look like today? In particular, do you have documentation and an endpoint that supports filtering by updated date or status, and roughly how many leads do you expect per sync run on average and at peak?
-
What should we treat as the primary unique key for a lead when matching into GoHighLevel? For example, do you have a stable external lead id, or should we use email, phone, or a combination, and how should we handle cases where email or phone changes over time?
-
Which standard and custom fields in GoHighLevel must always be populated from the Lead Database for both contacts and opportunities? If you have an example payload and a sample contact or opportunity in GoHighLevel, can you share those so we can lock in a field mapping table?
-
Which GoHighLevel pipeline and default stage should we use for new opportunities, and how should upstream lead statuses or flags map into GoHighLevel stages or status changes over time? For example, should certain statuses close an opportunity or move it to a specific stage?
-
Can you confirm this is a one way sync from the Lead Database into GoHighLevel, and what sync interval do you prefer within your “24 hours or less” window (for example every 1 hour, 6 hours, or 24 hours)? Also, how should we handle leads that are deleted or marked inactive in the Lead Database, if at all, inside GoHighLevel?
-
How do you prefer to see issues and logs for this flow? For example, are you comfortable with a log inside Make and a Google Sheet or similar for failed records, and do you want notifications for systemic failures through email or a channel like Slack?
I’ll wait for your reply. Thank you!
Hi @Gary_Gilkison! I believe our automation expert can help you with this. I’ve sent you a DM, so check it out for more information ![]()
Hi @Gary_Gilkison
I have accomplished such integration earlier for client.
Please connect further to discuss in details here
Looking forward to your availability to schedule e-meet
Regards
Deep
Hi Gary,
I work with Make regularly and understand whats needed for a clean setup like this
Happy to discuss if you are looking to move forward with someone who can handle the build end to end.
You can reach out to me on my email here
Colin
Hi Gary, I have extensive experience building Make.com scenarios integrating APIs with GoHighLevel. I can set up an automated workflow to pull leads from your database, upsert contacts and opportunities in GHL, handle both standard and custom fields, prevent duplicates, and ensure reliable error handling.
Check my profile: https://www.upwork.com/freelancers/farhana401
Book a quick call:Calendly - Automaxion
Hi Gary — this exact pattern (external lead DB → GHL upsert with contact + opportunity in one shot) has a few specific landmines:
-
GHL contact upsert is not atomic with opportunity create. GHL’s API treats “find or create contact” and “create opportunity for that contact” as two separate calls. If the second fails, you have a contact with no opportunity attached — easy to miss. Make scenario needs explicit transaction-style cleanup OR a reconciliation pass.
-
Persistent dedup: if your source lead DB doesn’t have stable IDs, you need a hash-based dedup (email + phone + source) stored in a side table (Airtable, Supabase, or even a Make Data Store) to avoid creating duplicate GHL contacts on every sync run.
-
Custom field mapping: GHL custom fields by ID, not by name. Map once, store the ID-to-name dictionary somewhere stable so a rename in GHL doesn’t silently break the sync.
-
Opportunity pipeline + stage: GHL opportunities require pipeline ID + stage ID; both are GHL-internal IDs, not names. Same dictionary problem.
Architecture I’d suggest:
- Source API → Make scheduled scenario (every 5-15 min)
- Pull deltas (last sync timestamp stored in Data Store)
- For each lead: dedup hash check → upsert contact in GHL → upsert opportunity → write back GHL contact ID + opportunity ID to source for future updates
- Dead-letter queue for failed records → alerts to Slack / email
Quick qs:
- What’s the source DB (Postgres / Airtable / Notion / custom REST API)?
- Volume — leads / day, peak burst?
- One subaccount target, or are you fanning out to multiple GHL subaccounts based on lead attributes?
- Real-time required, or 5-15 min polling acceptable?
Background: built custom workflow automation engines (intake → extraction → multi-system dispatch + tracking). API-to-CRM upsert with state management is the same shape of problem.
Email me at priyanshukumarmaurya2224@gmail.com and I’ll send a 1-pager scope + timeline. Builds in this shape typically land at 1.5-2 weeks for v1.
— Priyanshu
linkedin.com/in/priyanshu-axiom