Question from Reddit user:
Hey all
New to this group.
I am have been on GHL for several years.
Love it..
I started using Monday.com as a KPI status board..
When I get a new client I use a Zap to send to Monday.com board.
That works fine.
NEED: When I move a opportunity, i want it to update a STATUS on the Monday board.
I have tried zapier, make, and several others with no success..
The issue seems to be that the “zap” wants a ID.
When creating the zap I HAVE to assign a ID which is a client name.
Well that doesnt work, because each time it populates Monday with the same ID..
I know this is convoluted.
I thought was I was asking for was simple, but Im stuck.
Any ideas?
Example: John Smith is already in Monday with a status of New Client.
When I move him to the next stage in GHL, I want to change John Smith Status in Monday to In Progress.
Thanks for any ideas.
Answer from Nabil:
The short answer is:
You are correct that the core issue is the Monday.com Item ID.
Your Zap is getting confused because when you try to update an item, you are mapping a non-unique field like a person’s name, which the Zapier action treats as a static value, causing it to update the wrong item or fail.
The solution is to use a three-step Zapier (or Make) workflow that first uses a unique identifier, like the client’s email address or GoHighLevel Contact ID, to specifically Find the Item on your Monday.com board, and then uses the unique Monday Item ID that is returned from that search step to perform the Update Item action.
The long answer is:
The reason your current setup fails when you try to update the status is because the final action step in Zapier – the one that performs the “Update Item” action in Monday.com – requires the Item ID of the row you want to change.
Since you’re giving it the client’s name, which is not the Item ID, it either fails or, worse, updates the same arbitrary item every time if the name is used incorrectly in the setup.
To fix this using Zapier or Make, you need a workflow with three distinct steps.
First, the trigger in GoHighLevel should be Opportunity Status Changed
which passes the client’s contact information.
Second, you must add a search step using the Monday.com integration called Find Item by Column Value
or similar, and you must use a guaranteed unique field for the search, such as the client’s Email Address or the GoHighLevel Contact ID (if you ensure you pass this ID into a custom column on your Monday board when the client is first created).
This search step will dynamically pull the unique Item ID from the Monday board for that specific client.
Third, you then use the Update Item
action in Monday.com, but this time, instead of manually typing a client name or ID, you will dynamically map the Item ID field from the output of your second (search) step.
This ensures the update is tied to the correct client row.
For a more robust, long-term, and code-based solution that avoids the limitations of the integrators and scales better, the ultimate answer is to use the HighLevel API and the monday.com Platform API directly.
You would set up a webhook in your GoHighLevel workflow that fires when the opportunity stage changes.
This webhook would trigger a custom script hosted on a server-side environment like Stape or Google Cloud Platform.
This script would receive the GHL data, use the client’s email or Contact ID to query the monday.com Platform API to find the correct item’s unique ID, and then use that unique ID to send a second API call back to monday.com to update the status column value directly.
This API-driven approach gives you full control over the logic, guarantees unique ID mapping, and creates a more reliable connection that won’t break with small changes to the third-party integrators.
You could even use Google Tag Manager to manage the firing of this webhook URL should you ever change your hosting setup.