Pular para o conteúdo principal

Integrar a HubSpot com o n8n: OAuth, escopos e webhooks sem disparo duplicado

Integrar HubSpot com n8n

O n8n virou o queridinho de quem quer automatizar a HubSpot sem escrever uma integração inteira na mão, e por bons motivos. Ele é visual, flexível, roda na sua própria infraestrutura se você quiser, e tem um node nativo da HubSpot além de um node HTTP que alcança qualquer endpoint. Em poucos minutos você conecta a HubSpot a quase qualquer ferramenta.

Mas essa facilidade esconde algumas armadilhas que aparecem na primeira integração séria: a credencial que não funciona com o node que você escolheu, o erro de escopo que trava um passo, o webhook que só dispara com o editor aberto, o fluxo que roda duas vezes e cria duplicatas. Nenhuma delas é difícil de resolver depois que você entende o que está acontecendo. Neste guia, vou levar você do zero a uma integração do n8n com a HubSpot que conecta direito, autentica com segurança e trata webhooks sem disparo duplicado.

Onde a credencial mora, e qual escolher

A primeira regra, e ela é de segurança, é onde a credencial mora. No n8n, a credencial da HubSpot fica guardada no gerenciador de credenciais da ferramenta, nunca dentro do fluxo. Essa separação importa: a lógica do fluxo pode ser exportada, compartilhada e versionada sem nunca expor o token, porque ele vive num cofre à parte.

A segunda regra é escolher a credencial certa, e é aqui que a maioria tropeça, porque não existe um caminho, existem três, e eles não são intercambiáveis. Para o node HubSpot, aquele que lê e escreve registros, o n8n hoje recomenda a service key, que você gera na HubSpot na área de chaves de desenvolvimento, escolhendo os escopos na criação. Você a cola no campo de app token do n8n. O OAuth2 é a outra opção suportada para esse mesmo node, e é o que você quer quando a integração vai servir mais de um portal.

A terceira existe para um propósito só: o node HubSpot Trigger exige a credencial de developer API key, e nada mais funciona ali. Essa credencial não é apenas uma chave. Ela pede client id, client secret, app id e a própria chave de API do desenvolvedor, todos vindos de um app público criado numa conta de desenvolvedor da HubSpot. Então, se o seu plano era reaproveitar o token que você já tem para fazer o gatilho funcionar, não vai funcionar, e isso é por desenho, não é bug.

Dois avisos que vale carregar. A autenticação por API key simples foi descontinuada pela HubSpot e, embora a opção ainda apareça na tela do n8n, ela não deve ser usada. E os apps privados criados pela interface passaram a status legado, com a HubSpot apontando a service key como sucessora. A própria service key está em beta público, então vale ficar de olho em mudanças.

Escopos: a causa número um dos erros

Se um node da HubSpot no n8n retorna erro de permissão, a aposta mais segura é que falta um escopo na credencial. A lógica é a mesma da API direta: cada operação exige um escopo, e ler é diferente de escrever. O caminho é listar quais endpoints o seu fluxo realmente usa e conferir se a credencial tem o escopo de cada um, separando com cuidado leitura de escrita.

O n8n facilita isso mais do que parece, porque publica uma lista inicial de escopos recomendados, e são duas listas diferentes: uma para o node HubSpot, que inclui leitura e escrita em contatos, empresas e negócios, mais os escopos de schema, e uma mais enxuta para o node Trigger, que só precisa de leitura. Partir da lista certa e ajustar dali resolve a maioria dos erros de permissão antes de eles acontecerem.

E aqui vem a parte que muitos tutoriais erram. Numa credencial estática, adicionar um escopo não exige gerar uma chave nova nem atualizar nada no n8n. Você edita os escopos na HubSpot, salva, e a mesma credencial passa a carregar a nova permissão. Quem exige uma volta a mais é o OAuth: ali, mudar os escopos significa que o app precisa ser autorizado de novo, com o fluxo de consentimento repetido, porque o token já emitido nasceu com o conjunto antigo. Saber em qual dos dois você está evita rotacionar chave à toa.

Trigger contra Action: dois papéis diferentes

Os nodes da HubSpot no n8n se dividem em dois papéis, e entender a diferença evita confusão. O node Trigger faz o fluxo começar quando algo acontece na HubSpot. Ele funciona sobre a API de webhooks da HubSpot e registra a assinatura do evento sozinho, que é justamente o motivo de exigir a credencial de app de desenvolvedor descrita acima. Use o Trigger quando quiser reagir a mudanças, como um contato novo ou um negócio que mudou de estágio.

O node Action, por outro lado, faz o fluxo ler ou escrever na HubSpot como um passo no meio do processo. Ele cria, atualiza ou busca registros quando o fluxo já está rodando por outro motivo. A regra mental é simples: Trigger é o que inicia o fluxo a partir da HubSpot, Action é o que o fluxo faz com a HubSpot pelo caminho. Misturar os dois papéis na cabeça é o que gera fluxos confusos e difíceis de manter.

Existe um terceiro caminho que o Trigger nativo não cobre, e vale conhecer: o node Webhook genérico. Ele te dá uma URL simples que qualquer sistema pode chamar, incluindo um webhook que você configura na mão num app da HubSpot ou uma ação de webhook dentro de um workflow. É a saída de emergência para quando você quer ouvir um evento que o Trigger não expõe, e é também onde mora a armadilha da próxima seção.

Webhooks de teste contra webhooks de produção

Aqui está um dos tropeços mais comuns de quem começa no n8n, e ele consome horas de quem não conhece a diferença. O n8n trabalha com dois endereços de webhook para cada fluxo: um de teste e um de produção. O endereço de teste só escuta enquanto o editor está aberto e você clicou em executar, porque ele existe para você experimentar o fluxo enquanto constrói.

O erro clássico é ligar o webhook do lado da HubSpot, ou deixar o fluxo inativo, e depois não entender por que nada acontece em produção. A regra é direta: para produção, ative o fluxo no n8n e garanta que o endereço de produção é o que está em jogo. Se a sua automação só funciona quando você está com o editor aberto, você quase certamente ainda está no caminho de teste.

Evite disparos duplicados

Webhooks podem entregar o mesmo evento mais de uma vez, e fluxos mal configurados podem disparar em laço, o que vira problema rápido. Como o n8n facilita criar automações, ele também facilita criar automações que mordem o próprio rabo, por exemplo um fluxo que atualiza um registro, o que dispara um webhook, que aciona o mesmo fluxo de novo.

A defesa é a mesma da automação por API: tratar idempotência. Use o identificador do evento ou do registro para reconhecer e ignorar repetições. E coloque filtros logo no início do fluxo para descartar, o mais cedo possível, os eventos que não importam. Um esclarecimento aqui, porque isso costuma ser dito errado: filtrar cedo não economiza execução, já que o n8n conta a execução no momento em que o fluxo começa. O que você economiza é processamento, chamadas externas e efeito colateral, o que já é motivo suficiente para fazer.

O node HTTP para o que o node nativo não cobre

O node nativo da HubSpot no n8n cobre as operações mais comuns, criar e atualizar contatos, negócios e atividades, mas ele não alcança tudo. Quando você precisa de um endpoint que o node nativo não traz, como criar um workflow pela Automation v4, que está em beta, ou mexer em associações específicas, o caminho é o node HTTP Request. Ele faz qualquer chamada à API da HubSpot e pode reaproveitar a mesma credencial guardada no cofre do n8n, o que mantém a segurança intacta.

Na prática, a maioria das integrações combina os dois: o node nativo para o trivial, que fica mais legível, e o node HTTP para o que foge do comum. Saber alternar entre eles é o que destrava os casos mais avançados sem que você precise abandonar o n8n e ir para código do zero. O truque é montar o node HTTP com o mesmo cuidado da API direta: o corpo no formato esperado, os escopos que o endpoint exige e o tratamento de paginação por cursor quando a resposta vem em páginas.

Por que isso importa para a sua operação

O n8n democratiza a automação: pessoas que não programam conseguem conectar a HubSpot a dezenas de ferramentas e tirar processos manuais das costas do time. Isso é um ganho enorme de produtividade quando bem feito. Mas a mesma facilidade que empodera também permite criar automações frágeis, que disparam duplicado, vazam credencial no fluxo ou falham em silêncio.

Por isso os cuidados de credencial no cofre, tipo de credencial certo para o node certo, escopo correto, endereço de produção e idempotência não são detalhes técnicos chatos, eles são o que faz a diferença entre uma automação em que o time confia e uma que vira fonte de retrabalho e reclamação de cliente. A facilidade do n8n é uma faca de dois gumes, e a disciplina é o que faz o gume certo cortar a seu favor.

Dica de quem já apanhou: antes de depurar um node que não autentica, confira qual tipo de credencial ele aceita de fato. Metade da frustração com a HubSpot no n8n vem de tentar rodar o Trigger com uma chave que nunca foi feita para ele. A mensagem de erro fala em permissão, mas o problema real é o tipo de credencial.

Na prática: o fluxo que criava contatos em duplicata

Uma operação montou um fluxo no n8n que criava um contato na HubSpot a partir de um formulário externo, e de vez em quando o contato nascia duplicado. A causa era dupla: o webhook às vezes chegava duas vezes, e o fluxo criava o contato sem antes verificar se ele já existia, tratando cada entrega como nova.

A correção teve duas partes. Primeiro, parar de criar às cegas: casar o contato pelo identificador único e atualizá-lo se já existisse, em vez de criar de novo. Segundo, usar o identificador do evento para ignorar entregas repetidas do webhook. As duplicatas pararam, e o fluxo ficou robusto o bastante para aguentar as repetições que fazem parte da vida de qualquer webhook.

Reflexão para quem lidera a operação: a ferramenta que permite qualquer um montar uma automação numa tarde é a mesma que permite qualquer um montar uma automação frágil numa tarde. O n8n não cria disciplina, ele apenas remove a desculpa de não ter um desenvolvedor disponível. Os times que mais extraem dele são os que tratam um fluxo com a mesma seriedade com que tratariam código: revisado, versionado e idempotente.

Checklist de uma integração confiável no n8n

  1. A credencial da HubSpot está no gerenciador do n8n, nunca dentro do fluxo?
  2. Você está usando o tipo de credencial que o node de fato aceita, com a credencial de app de desenvolvedor para o Trigger?
  3. A credencial tem os escopos de cada endpoint que o fluxo usa, partindo da lista recomendada?
  4. Você usa Trigger para iniciar a partir da HubSpot e Action para ler ou escrever pelo caminho?
  5. O fluxo está ativado e rodando no endereço de produção, não no de teste?
  6. O fluxo trata idempotência, ignorando entregas repetidas pelo id do evento?
  7. Existem filtros no início do fluxo para descartar cedo os eventos irrelevantes?

Perguntas frequentes

Onde guardo o token da HubSpot no n8n?

No gerenciador de credenciais do n8n, nunca dentro do fluxo. Assim a lógica pode ser exportada e versionada sem expor o token, que fica num cofre à parte.

Qual credencial devo usar com cada node?

Para o node HubSpot, o n8n recomenda a service key, com o OAuth2 como alternativa quando a integração serve mais de um portal. Para o node HubSpot Trigger, só funciona a credencial de developer API key, e ela exige um app público criado numa conta de desenvolvedor da HubSpot, com client id, client secret e app id.

Adicionei um escopo e o erro continua. Preciso de um token novo?

Numa credencial estática, não. Você edita os escopos na HubSpot, salva, e a mesma credencial passa a carregar a nova permissão. No OAuth, sim: o app precisa ser autorizado de novo, porque o token já emitido nasceu com o conjunto antigo de escopos.

Por que meu webhook só funciona com o editor aberto?

Você está no endereço de teste do n8n, que só escuta enquanto o editor está aberto. Ative o fluxo para que o endereço de produção assuma.

Qual a diferença entre Trigger e Action no n8n?

O Trigger faz o fluxo começar quando algo acontece na HubSpot, funcionando sobre a API de webhooks e registrando a assinatura sozinho. O Action faz o fluxo ler ou escrever na HubSpot como um passo pelo caminho. Trigger inicia, Action executa.

Posso usar o n8n para qualquer endpoint da HubSpot?

Sim. Além do node nativo, que cobre as operações comuns, o node HTTP Request alcança qualquer endpoint da API, inclusive os que o node nativo não cobre, reaproveitando a credencial guardada no cofre.

Quer automatizar processos entre a HubSpot e as suas ferramentas com o n8n, sem disparo duplicado nem erro de credencial? Na Insight Sales construímos e mantemos esses fluxos com segurança. Fale com a gente e descubra como. como podemos ajudar.

Pronto para levar sua operação ao próximo nível.

Fale com um especialista e descubra como podemos ajudar.

paper-plane