Como criar seu primeiro webhook no n8n que funciona de verdade (com teste e o erro mais comum)

Configuração do nó Webhook no n8n com método POST, path e URL de teste visíveis na interface
Resposta rápida

Um webhook no n8n é a porta de entrada que deixa um sistema externo avisar o seu fluxo na hora que algo acontece, sem ficar consultando toda hora. Neste tutorial tu monta o primeiro webhook funcionando de ponta a ponta: adiciona o nó Webhook (POST, path /, sem auth por padrão), entende as duas URLs (Test /webhook-test/ e Production /webhook/), escuta o evento de teste por 120 segundos, mapeia o payload na tela, define o modo de resposta e ativa o workflow. E ainda mata o 404 mais comum: ‘The requested webhook is not registered’

Bora?

O webhook é a porta de entrada de quase toda automação séria no n8n

Sem ele, teu fluxo fica cego esperando alguém apertar um botão

Com ele, o sistema de fora avisa o teu workflow na hora exata que a coisa acontece

O problema é que a maioria trava logo no começo: ou toma um 404 misterioso, ou clica em testar e não volta nada na tela, aí desiste achando que webhook é bicho de sete cabeças

Não é! 🙂 Aqui tu sai com um webhook no n8n funcionando de ponta a ponta: payload chegando, teste retornando dado de verdade, e o erro clássico já resolvido antes de te pegar

O que você precisa antes de começar

Nada de PC da Nasa aqui, só o básico organizado

  • Uma instância do n8n rodando e acessível (Cloud ou self-hosted, tanto faz pra este tutorial)
  • Alguma forma de disparar a requisição pra testar: pode ser o próprio navegador, o Postman ou um curl no terminal
  • Noção mínima de método HTTP, principalmente GET e POST, que é o que a maioria dos webhooks usa na prática

Se tu já sabe abrir o editor de workflow e arrastar um node, tá pronto pra seguir 😀

Passo a passo: montando seu primeiro webhook no n8n

Formação Agentes de IA
Formação Recomendada

Formação Agentes de IA

Domine a criação de Agentes de IA e Venda para Empresas

  • 402 aulas
  • 32 projetos
  • 38h 19min

A ideia é sempre a mesma: montar o fluxo começando pelo gatilho, testar com a URL de teste e só depois publicar

Bora montar?

  1. Adiciona o nó Webhook e entende o padrão

Cria um workflow novo e adiciona o node Webhook como gatilho

Assim que ele entra, já vem com uma configuração padrão: método POST, caminho raiz (/) e sem autenticação

Guarda isso, porque cada um desses três vira um ponto de erro mais pra frente

O erro comum deste passo: achar que o node já está pronto pra receber de qualquer serviço. Ele está no padrão POST, então se o teu sistema dispara em GET, não vai bater

  1. Escolhe o método HTTP conforme o serviço externo

No parâmetro de método tu tem GET, POST ou Both

A regra é simples: o método aqui tem que ser o MESMO que o sistema lá de fora vai usar pra te chamar. Se não sabe qual é, olha a documentação de quem dispara

Na dúvida entre um ou outro que aparecem alternados, o Both aceita os dois

O erro comum deste passo: URL certa, mas verbo errado. Se o sistema dispara pra URL correta com o método diferente do configurado, o webhook simplesmente não executa, e tu fica olhando pra tela sem entender o silêncio

  1. Entende as duas URLs (Test x Production)

O nó Webhook gera DUAS URLs pra cada node, mostradas no topo do painel: uma Test URL e uma Production URL

A diferença entre elas é só um trecho do caminho:

  • Teste usa /webhook-test/
  • Produção usa /webhook/

O path final (a parte que tu define) é idêntico nas duas

A de teste serve pra depurar dentro do editor, a de produção é a que vai pro mundo real

O erro comum deste passo: copiar a URL de teste e sair colando ela no sistema de produção. São contextos diferentes, e a de teste só responde na janela de escuta (já já explico)

  1. Clica em ‘Listen for test event’ e envia o payload

Pra testar, clica no botão Listen for test event

Isso registra o webhook e deixa ele escutando por 120 segundos. Dentro dessa janela, tu dispara a requisição pela Test URL

Um jeito rápido de mandar um POST de teste com curl:

curl -X POST \
  'https://SEU-N8N/webhook-test/meu-path' \
  -H 'Content-Type: application/json' \
  -d '{"nome":"Matheus","evento":"teste"}'

Se o teu método for GET, tem um truque massa: como o navegador acessa página em GET, dá pra clicar em Execute Workflow, colar a Test URL na barra do navegador e a própria requisição da página já dispara o webhook. Testa sem depender de sistema terceiro nenhum 😀

O erro comum deste passo: demorar demais. A janela de 120 segundos expira, tu manda a requisição depois e não chega nada. Se der ruim, clica de novo em Listen for test event e refaz

  1. Vê os dados recebidos na UI pra mapear os campos

Assim que a requisição chega, a Test URL exibe o payload recebido ali na interface do editor

E olha, chega bastante coisa: host, cookies, o modo de execução (teste ou produção) e os dados de verdade, que podem vir em query, params ou body

Não precisa carregar tudo pra frente. Arrasta só os campos que tu vai usar de fato no resto do workflow

O erro comum deste passo: usar a Production URL esperando ver o dado aqui. A URL de produção NÃO mostra o payload no editor, só a de teste faz isso. Pra depurar e mapear campo, é sempre a Test URL

  1. Define o modo de resposta

O Webhook tem três modos de resposta:

  • Immediately: responde na hora com 200 e a mensagem Workflow got started
  • When Last Node Finishes: espera o fluxo rodar e retorna a saída do último node
  • Using Respond to Webhook node: a resposta é montada por um node específico, o Respond to Webhook

Escolhe conforme quem chama precisa de resposta. Se o sistema só precisa saber que recebeu, Immediately resolve. Se precisa de um retorno tratado, os outros dois entram

O erro comum deste passo: colocar um node Respond to Webhook no fluxo mas deixar o modo em Immediately. Nesse modo ele devolve o 200 na hora e o Respond to Webhook downstream NUNCA executa. Pra esse node funcionar, o modo tem que ser Using Respond to Webhook node

  1. Ativa o workflow no toggle Active

Pra valer, no mundo real, é a Production URL que roda

E ela só responde com o workflow ativo. Liga o toggle Active no canto superior direito do editor e pronto: a URL de produção passa a aceitar chamada

curl -X POST \
  'https://SEU-N8N/webhook/meu-path' \
  -H 'Content-Type: application/json' \
  -d '{"nome":"Matheus","evento":"producao"}'

O erro comum deste passo: esquecer de ativar. Workflow desligado + Production URL = o 404 mais famoso do n8n, que a gente ataca agora

O erro mais comum: 404 ‘webhook is not registered’

Se tu chamou a URL e recebeu isto, se liga:

404 - The requested webhook is not registered

Esse é o campeão de dor de cabeça, e quase sempre a causa é uma dessas duas:

  • Production URL com workflow inativo: tu está usando a URL de produção mas o toggle Active está desligado
  • Test URL com a janela expirada: tu está na URL de teste, mas passaram os 120 segundos e a escuta já fechou

A solução casa direto com a causa:

  • Se é produção, ativa o workflow pelo toggle Active no canto superior direito. A própria mensagem de erro no n8n dá essa dica
  • Se é teste, clica de novo em Listen for test event e dispara a requisição dentro da janela

Pra prevenir, a regra de ouro é: URL certa pra cada contexto. Teste enquanto tu monta e depura, produção quando for pra valer e com o workflow ligado

E tem a armadilha que já citei lá em cima, que também gera confusão: o node Respond to Webhook que não roda. Se o modo de resposta estiver em Immediately, o 200 sai na hora e esse node é ignorado. Troca pro modo Using Respond to Webhook node e ele volta a funcionar

Se mesmo assim o erro insistir, vale investigar outras causas do erro de webhook no n8n, porque nem todo 404 é só toggle desligado

O que aprendi montando webhooks no n8n na prática

Com o fluxo já rodando, vale voltar um passo e entender o PORQUÊ do webhook existir

Pensa numa API: o TEU sistema fica lá, consultando um sistema terceiro toda hora pra saber se algo já ficou pronto. Isso gasta recurso do servidor com verificação repetida, que às vezes nem retorna nada de novo

Já o webhook inverte a lógica: quem avisa é o sistema terceiro. Quando a informação fica pronta, ELE chama o teu workflow. Um fluxo bem mais linear e econômico

No vídeo abaixo eu mostro essa diferença na prática, o sistema que fica perguntando toda hora contra o que só reage quando é avisado. Sem ficar no "chegou? chegou? chegou?" o tempo todo

Do que eu vivi montando isso, três coisas confundem MUITO no começo:

Primeiro, a confusão entre Test URL e Production URL. Parece detalhe, mas trocar uma pela outra é metade dos 404 que aparecem

Segundo, a janela de 120 segundos que expira. Tu clica em escutar, vai fazer outra coisa, volta, dispara e não chega nada. Não é bug, é a escuta que fechou

Terceiro, mapear os campos pela UI. Quando o webhook executa, chega uma estrutura bem completa (host, cookies, modo de execução, e os dados em query, params ou body). O segredo é arrastar só o que interessa pra frente, em vez de carregar tudo

E tem um detalhe de segurança que eu bato na tecla: quando tu publica com a Production URL, QUALQUER pessoa pode mandar informação pra ela

Por isso vale configurar autenticação como uma barreira, filtrando requisição errada antes de chegar no teu fluxo. Se tu roda o n8n em VPS, dá pra ir além e proteger o n8n com Cloudflare na frente, com SSL e WAF

Uma coisa importante: normalmente NÃO é tu que decide como o dado chega (se por query, path ou body). Quem define isso é o sistema que tu está integrando, via documentação dele. Tu só configura o n8n pra receber igual

Para que serve um webhook no n8n na prática

Teoria é legal, mas onde isso vira automação de verdade? 😀

  • Receber dados de um formulário: alguém preenche um form, o serviço dispara pro teu webhook e o fluxo já começa a tratar a resposta
  • Integrar com ferramenta que dispara eventos: pagamento aprovado, ticket aberto, mensagem recebida. A ferramenta avisa por webhook e tu reage na hora
  • Iniciar um fluxo a partir de um serviço externo: em vez do teu n8n ficar consultando toda hora, o serviço de fora é quem puxa o gatilho quando tem novidade

O fio comum de tudo isso é o mesmo: tu precisa receber uma informação sem saber QUANDO ela vai chegar. É exatamente pra isso que o webhook existe

Conclusão

Com o webhook ativo e testado, o mais difícil já passou 🙂

Recapitulando o caminho: adiciona o node Webhook, escolhe o método certo, testa sempre pela Test URL dentro dos 120 segundos, mapeia o payload pela tela, define o modo de resposta e SÓ então ativa o workflow pra liberar a Production URL

O próximo passo natural é encadear os nodes seguintes pra tratar o payload que chegou e devolver uma resposta caprichada

E não esquece do combo que evita a maior parte da dor de cabeça: workflow ativo no toggle + URL de produção quando for pra valer

Monta o teu, faz o teste e me conta como foi… até o próximo post!

Perguntas frequentes

O n8n para de receber dados depois de um tempo quando estou testando?

Sim, quando tu clica em ‘Listen for test event’, a janela de escuta dura exatamente 120 segundos. Depois disso a Test URL para de responder e tu precisa clicar de novo pra abrir a próxima janela. É suficiente pra qualquer teste rápido, só não vai buscar café no meio haha 😀

Por que o nó Respond to Webhook não executa mesmo estando conectado no fluxo?

O motivo quase sempre é o modo de resposta configurado no nó Webhook. Se ele está em ‘Immediately’, o 200 vai na hora e o fluxo para por aí: o Respond to Webhook nunca chega a rodar. Pra ele funcionar, o modo tem que ser exatamente ‘Using Respond to Webhook node’, lá no painel do nó 🙂

Meu sistema dispara com GET mas o webhook no n8n não responde: o que verificar primeiro?

Verifica o método configurado no painel do nó Webhook, porque o padrão é POST. Se o sistema lá de fora usa GET e tu deixou como estava, o webhook simplesmente ignora a chamada sem dar erro visível. Troca pra GET ou pra Both (que aceita os dois) e testa de novo

Qual URL eu entrego pro sistema externo depois de montar o webhook no n8n?

A Production URL, sempre: é a que tem /webhook/ no caminho. A Test URL (com /webhook-test/) é só pra depurar dentro do editor e não é feita pra receber chamada de sistema externo em produção. Só lembra de ativar o workflow pelo toggle Active antes, senão ela devolve 404

Como ver os campos que chegaram no webhook antes de montar o restante do fluxo?

É exatamente pra isso que a Test URL existe: assim que o payload bate, o editor mostra tudo ali na tela, headers, query params, body e o que mais vier. Tu mapeia os campos que precisa antes de arrastar o próximo node, sem chute. A Production URL não faz isso, só a de teste exibe o payload no editor




Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Claude Code

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

Blog | Mais populares