Burning through tokens on one issue

Describe the problem/error/question

workflow will not send collected data to GoHighLevel

What is the error message (if any)?

Please share your workflow

date:Wed, 13 May 2026 15:20:17 GMT
content-type:application/json; charset=utf-8
content-length:135
connection:close
cf-ray:9fb2a5733d929874-FRA
cf-cache-status:DYNAMIC
access-control-allow-origin:*
etag:W/"87-xaS8dZxdx/mn3i20TzmgTaBRUGI"
server:cloudflare
strict-transport-security:max-age=31536000
vary:Accept-Encoding
access-control-max-age:31536000
timing-allow-origin:*
x-envoy-upstream-service-time:7
x-powered-by:Express
x-ratelimit-daily-remaining:199993
x-ratelimit-daily-reset:32562000
x-ratelimit-interval-milliseconds:10000
x-ratelimit-limit-daily:200000
x-ratelimit-max:100
x-ratelimit-remaining:99
set-cookie
0:__cf_bm=dvz1DlV6m2XGv9TlMFsoDlk7CJssG9HtPoXoresrWk4-1778685617.1563067-1.0.1.1-BQCFZh_rmaWK7kRZ5DBdmNTFh6nJxMffroWqUMyaYuljatwRPEajw12Wp8MxOlea3zLYea5LOlSmZVyvaWL9Dhb6XvEM.6hhO8lEz6hDoYhFFt2N6VoB_Fj4R2Fz1dpv; HttpOnly; SameSite=None; Secure; Path=/; Domain=leadconnectorhq.com; Expires=Wed, 13 May 2026 15:50:17 GMT

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

the headers show a 200 so GHL actually received your request fine, the issue is in what you’re sending it.

first thing i’d do is open the HTTP Request node output in n8n and look at the actual response body not just the headers. GHL sometimes returns 200 but hides an error message in the body like a missing required field or contact not found.

also check your field names, GHL is strict about casing. firstName not first_name, phonePhone not phone, stuff like that. if one key is wrong it just silently ignores it and moves on which is super annoying to debug.

then go into GHL itself and check if the contact actually got created or updated. if it’s there but fields are empty it’s a mapping issue, if it’s not there at all you might be hitting the wrong endpoint or missing a required field like email or phone number.

share the body you’re sending and the actual response body and i can tell you exactly what’s wrong.

welcome to the n8n community @wathoo
Without the request payload and the actual response body, there is not enough evidence to determine whether this is an internal n8n issue or an API payload/mapping problem.

exactly, that’s why i asked for the response body and the payload in my last message. once they share that we’ll know for sure which side the issue is on.

Hey @wathoo, welcome to the community! I’m Jay, an n8n verified creator.

A 200 status with an empty body from GHL usually means the request hit the server but the data wasn’t processed - this is a payload issue, not a connection one. A few things to check while you share the full body/response:

1. Response body is the key - In n8n, after the HTTP Request runs, click on the output. Look at the body field in the response. GHL often returns {"succeded":true} or an error message even on 200s.

2. Check your Authorization header - GHL requires Bearer YOUR_ACCESS_TOKEN in the header. Also confirm you’re using the right location token (not the agency token) for contact creation.

3. Field naming is strict - GHL API for contacts uses exact camelCase: firstName, lastName, email, phone. Any variation and the field gets silently dropped.

4. Make sure you’re hitting the right endpoint - For creating/updating a contact it should be:

  • POST https://services.leadconnectorhq.com/contacts/ with the contact payload

Could you share a screenshot of your HTTP Request node body settings and the full response output? That’ll help pinpoint exactly where the data is getting lost.

@wathoo
From the screenshot, the request is not actually authenticated yet. The HTTP Request node is set to Authentication: None, so even though you added header rows for Authorization, Version, and Content-Type, the values appear to be empty. I’d fix that first by sending the required GHL headers with real values, especially the Bearer token, for example Authorization: Bearer <access_token>, the correct API Version, and Content-Type: application/json. After that, test with a minimal body first, such as locationId, firstName, email, and phone, then add the remaining fields back once the contact is created successfully.