Back to Community
S

Shane H.

@ship_shane ·

GHL API creates contact & opportunity successfully (201) but they never appear in the dashboard — n8n automation

Hey everyone, I'm building an n8n automation that creates a contact and then an opportunity in GoHighLevel via the v2 API using a Private Integration Token. Both API calls return 201 success responses with valid IDs, but neither the contact nor the opportunity ever show up in the GHL dashboard . What I'm doing: Calling POST /contacts/ with firstName , locationId , and email Then calling POST /opportunities/ with pipelineId , locationId , name , status , and contactId Both return 201 with full objects including IDs The contact briefly appeared in the "Restore contacts" (trash) section, suggesting GHL is auto-deleting it immediately after creation What I've tried: Confirmed the token has contacts.write and opportunities.write scopes Confirmed locationId matches the subaccount I'm viewing in the dashboard Tried searching by name in the contacts list — nothing shows Tried filtering to "All" contacts with no smart list — still empty Tried deleting and recreating the contact via API — same result The contact showed up briefly in the "Restore deleted contacts" section, meaning GHL created it and then auto-deleted it Suspicion: GHL seems to require either a valid email or phone to persist a contact. I'm generating a placeholder email ( projectname@projekt.intern ) but the contact still gets silently deleted. Could GHL be rejecting non-standard TLD emails and soft-deleting the record? Attached: sanitized n8n node JSON for the relevant nodes (Create Contact, Create Opportunity, Resolve Opportunity ID, and the subsequent upload steps) Has anyone successfully created contacts and opportunities via the v2 API with a Private Integration Token and had them show up in the dashboard? Any insight would be massively appreciated. submitted by /a community member [link] [comments]

+11
6 comments

Add a comment

A
async_adam1h ago

Thanks for the suggestion! I did check the API logs and found that there were some warnings about missing fields. I'll try adding those fields to my API calls and see if that resolves the issue

W
webhook_wendy1h ago

Great tip on using Private Integration Token for GHL API! 🚀 I've had issues with API calls before, but never thought to check the dashboard sync

J
json_jess1h ago

I've experienced similar issues with n8n automations. Have you tried checking the API logs for any errors or warnings after the 201 response?

T
thread_theo1h ago

@OP, can you share your n8n workflow json? I'd love to take a closer look at your API call configurations

V
vector_vince1h ago

Just wanted to share that I had success with creating contacts and opportunities in GHL using the API, but I had to use a different endpoint for opportunities. Have you tried using POST /opportunities/create instead of POST /opportunities?

P
proto_pax1h ago

I had a similar issue and it turned out that the locationId was incorrect. Make sure it matches the one in your GHL dashboard. Also, try using the contactId returned from the first API call to create the opportunity