Webhook é o gatilho que faz o n8n receber dados em vez de ficar perguntando. Você cria o node, ele gera uma URL, e todo sistema que enviar dados para esse endereço dispara o fluxo na hora. É a diferença entre verificar uma caixa a cada minuto e ser avisado quando algo chega — e no custo de execuções, essa diferença é gigante.

Adicione ao Google Notícias
Neste artigo
  1. Como funciona
  2. Onde os dados chegam
  3. Escolhendo o método
  4. Testando
  5. Protegendo o endereço
  6. O que responder a quem chamou
  7. Perguntas frequentes

Como funciona

Ao adicionar um node Webhook, o n8n gera duas URLs para ele: uma de teste e uma de produção. Quem envia dados para essa URL aciona o fluxo, e o conteúdo enviado vira o item que trafega pelos nodes seguintes.

É o inverso do HTTP Request: lá você chama alguém; aqui alguém chama você.

Onde os dados chegam

Este é o ponto que mais gera dúvida. O conteúdo não chega solto — vem organizado em seções:

{
  "headers": { "host": "...", ... },
  "params": {},
  "query": {},
  "body": {
    "name": "Jim",
    "age": 30,
    "city": "New York"
  }
}

O que foi enviado fica no body. Então o caminho para pegar um campo é:

{{ $json.body.name }}

Escrever {{ $json.name }} num fluxo de webhook devolve vazio, e é o erro número um de quem está começando. O campo existe — está um nível abaixo. As outras seções também são úteis: headers traz autenticação e identificação de quem chamou, e query traz o que veio na URL depois do ponto de interrogação.

Escolhendo o método

O node aceita os métodos HTTP padrão — GET, POST, PUT, PATCH, DELETE, HEAD. Por padrão ele aceita um método por vez.

Se você precisa aceitar mais de um, existe a opção Allow Multiple HTTP Methods nas configurações do node. Com ela ligada, o node passa a aceitar vários e ganha uma saída para cada método — o que permite fazer coisas diferentes conforme o verbo recebido.

Na prática: quem envia formulário e sistema que notifica evento usam POST. GET aparece em verificação de endereço e em integrações mais simples.

Ilustração de um pacote dividido em seções

Testando

Duas formas diretas, ambas na documentação:

Com outro fluxo. Monte um segundo fluxo com um node HTTP Request apontando para a URL do webhook, usando o mesmo método. Útil quando você quer simular o envio repetidas vezes.

Com curl, do seu terminal:

curl --request POST https://seu-n8n.url/webhook/caminho --data 'chave=valor'

Para enviar cabeçalho junto:

curl --request GET https://seu-n8n.url/webhook/caminho --header 'chave: valor'

Protegendo o endereço

Uma URL de webhook é pública: quem souber o endereço consegue disparar o fluxo. Em fluxo que grava dado ou envia mensagem, isso importa.

As proteções disponíveis:

  • Autenticação no node — exigir usuário e senha ou um valor de cabeçalho específico. Quem não enviar é recusado.

  • Caminho difícil de adivinhar — o n8n gera um identificador aleatório; não troque por algo como /webhook/pedidos.

  • Validar o conteúdo — antes de gravar qualquer coisa, confirme que os campos esperados existem e fazem sentido.

O que responder a quem chamou

Por padrão, o n8n responde imediatamente confirmando o recebimento, e o fluxo segue por conta própria. É o comportamento certo na maioria dos casos: quem enviou não fica esperando.

Quando o sistema que chama precisa de uma resposta com conteúdo — um formulário que mostra resultado na tela, por exemplo —, dá para configurar o node para responder ao final do fluxo, devolvendo os dados processados.

Crie o node, pegue a URL, lembre que os dados chegam em $json.body, proteja com autenticação e valide o conteúdo antes de gravar.

Perguntas frequentes

O que é um webhook no n8n?

É um gatilho que gera uma URL própria e dispara o fluxo quando alguém envia dados para esse endereço. Ao contrário do gatilho agendado, que verifica periodicamente, o webhook só roda quando existe fato novo — o que economiza execuções.

Onde ficam os dados enviados para o webhook?

Dentro de body. O item recebido é dividido em headers, params, query e body, e o conteúdo enviado fica na última seção — por isso o caminho correto é {{ $json.body.campo }}.

Como testar um webhook do n8n?

Enviando uma requisição para a URL, seja por curl no terminal, seja com um node HTTP Request em outro fluxo apontando para o endereço. Em ambos os casos, o método precisa ser o mesmo configurado no node.

O webhook aceita mais de um método HTTP?

Por padrão aceita apenas um. Ativando a opção de permitir múltiplos métodos nas configurações do node, ele passa a aceitar vários e ganha uma saída separada para cada um, permitindo tratamentos diferentes conforme o verbo recebido.

Como proteger a URL do webhook?

Ativando autenticação no node, para exigir usuário e senha ou um cabeçalho específico; mantendo o caminho aleatório gerado pelo n8n em vez de um nome previsível; e validando o conteúdo recebido antes de gravar qualquer coisa.

Este tutorial faz parte do guia Curso de n8n do zero ao avançado: o guia completo em português. Veja também: Node, trigger e workflow: o vocabulário do n8n em 10 minutos · A estrutura de dados do n8n: por que tudo é um array com json · Item linking no n8n: como ele decide qual item vai pra saída · Execuções passo a passo: como achar onde o fluxo do n8n quebrou · A Canvas UI do n8n 2.0: o que mudou e como se orientar · n8n Cloud ou self-hosted: a decisão que define seu custo e sua liberdade