GHL e N8N - Falha na conexão HTTP no workflow

Descreva o problema/erro/pergunta

Não consigo descobrir por que continuo recebendo um erro JWT no nó HTTP ao conectar no Go High Level. Fiz troubleshooting usando o Go High Level - o PIT funciona bem, e a configuração está correta pelo que consigo ver.

Qual é a mensagem de erro (se houver)?

O erro mostrado é ‘Authorization failed - please check your credentials’ e depois aparece um erro JWT.

Authorization failed - please check your credentials

Invalid JWT

Informações sobre sua configuração n8n

  • **Versão do n8n: **
  • Banco de dados (padrão: SQLite):
  • Configuração n8n EXECUTIONS_PROCESS (padrão: own, main):
  • Executando n8n via (Docker, npm, n8n cloud, desktop app):
  • Sistema operacional:

@Just_Stay como você está enviando o PIT — está no header Authorization como “Bearer ”? e qual endpoint da API GHL você está acessando (v1 ou v2)? Invalid JWT geralmente significa que o formato do token não está sendo reconhecido, ou você está acessando um endpoint v1 que não aceita PITs.

Oi @Just_Stay

Acho que há dois problemas no seu nó HTTP Request:

  1. Falta Bearer no header Authorization. Mude o valor de pit-b7e4542a-... para Bearer pit-b7e4542a-… Por isso você está recebendo “Invalid JWT”.

  2. Formatação do parâmetro Body. Seus nomes de campo e valores têm aspas extras que vão quebrar a requisição. Por exemplo, "firstname" deveria ser apenas firstName (sem aspas extras), e os valores devem ser {{ $json.body.first_name }} sem o envolvimento ="..." .

  • Mude “Body Content Type” para JSON e cole o body como um objeto JSON limpo em vez de usar campos individuais:
{
  "firstName": "{{ $json.body.first_name }}",
  "lastName": "{{ $json.body.last_name }}",
  "email": "{{ $json.body.email }}",
  "phone": "{{ $json.body.phone }}",
  "locationId": "Wyba2v9gnxaXgpUCNypq",
  "tags": ["business-guest", "source-suiteop", "stayed-0-3m"]
}           

Me avisa se ajuda :crossed_fingers:

Oi,
coloquei o PIT diretamente abaixo do meu cabeçalho de autorização. Não coloquei Bearer em nenhuma seção de cabeçalho.

O endpoint do GHL é V2

Olá,

O primeiro passo fez uma diferença, agora estou recebendo a seguinte mensagem.

Também alterei o corpo e incluí tudo sob um único título - não tenho certeza se fiz isso corretamente

Obrigado pela ajuda -

Olá Just_stay,

O Bearer-Fix estava correto. O novo erro “Authentication failed” indica que um dos seguintes problemas pode estar ocorrendo:

  1. O PIT-Token não tem os escopos corretos. No GHL em Settings, Private Integrations, verifique se o token tem acesso ao endpoint que você está chamando

  2. O próprio endpoint espera um tipo de token diferente, alguns endpoints GHL v2 precisam de um Location Token, não do Agency PIT

Qual endpoint você está chamando e em qual nível (Agency ou Location)?

Estou chamando em um nível de subconta no GHL.

Os escopos que tenho ativos são:

oi @Just_Stay , bem vindo à comunidade n8n.

veja se esse node te ajuda

{
“nodes”: [
{
“parameters”: {
“httpMethod”: “POST”,
“path”: “leadconnector-contact”,
“options”: {}
},
“id”: “5b465b87-8c97-4b13-8db4-bcd869615e13”,
“name”: “Webhook”,
“type”: “n8n-nodes-base.webhook”,
“typeVersion”: 2.1,
“position”: [
240,
304
],
“webhookId”: “51fb3116-005f-424e-924a-e004dab7f3b8”
},
{
“parameters”: {
“method”: “POST”,
“url”: “https://services.leadconnectorhq.com/contacts/”,
“authentication”: “genericCredentialType”,
“genericAuthType”: “httpHeaderAuth”,
“sendHeaders”: true,
“headerParameters”: {
“parameters”: [
{
“name”: “Version”,
“value”: “2021-07-28”
}
]
},
“sendBody”: true,
“bodyParameters”: {
“parameters”: [
{
“name”: “firstName”,
“value”: “={{ $json.body.first_name }}”
},
{
“name”: “lastName”,
“value”: “={{ $json.body.last_name }}”
},
{
“name”: “email”,
“value”: “={{ $json.body.email }}”
},
{
“name”: “phone”,
“value”: “={{ $json.body.phone }}”
},
{
“name”: “locationId”,
“value”: “Wyba2v9gnxaXgpUCNypq”
},
{
“name”: “tags”,
“value”: “={{ [‘business-guest’, ‘source-suiteop’, ‘stayed-0-3m’] }}”
}
]
},
“options”: {}
},
“id”: “6748cc42-2ad7-46b2-a2e5-5b41f25f3c67”,
“name”: “Create LeadConnector Contact”,
“type”: “n8n-nodes-base.httpRequest”,
“typeVersion”: 4.4,
“position”: [
464,
304
]
}
],
“connections”: {
“Webhook”: {
“main”: [
[
{
“node”: “Create LeadConnector Contact”,
“type”: “main”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“instanceId”: “ea0c2eec4b76caa69b4b4c5710d93f227ef34fb351dbfc568d1671e154e38c4a”
}
}

No seu cabeçalho Authorization, seu valor está definido apenas como o token, assim:
pit-b7e4542a-00c5-4843-8f75-504d9da5b3ab

Você precisa adicionar a palavra Bearer e um espaço antes dele, assim:
Bearer pit-b7e4542a-00c5-4843-8f75-504d9da5b3ab
GoHighLevel espera a palavra “Bearer” antes do token. Sem ela, o servidor não reconhece o token como válido, e é exatamente por isso que você está recebendo o erro “Invalid JWT” mesmo com seu token correto.
Como corrigir:

  1. Abra seu nó HTTP
  2. Role até a seção Headers
  3. Encontre a linha Authorization
  4. Altere o Value para: Bearer seguido de um espaço e depois seu token

Isso deve corrigir imediatamente.

Se o problema do Bearer for resolvido mas o Location Token ainda der problemas, sinta-se à vontade para me contactar!