Pular para o conteúdo
Acessar conta

Segurança, testes e novas tentativas

Como proteger o link do webhook de entrada, o endereço de saída e a requisição externa, como testar sem sistema pronto, tratar repetições e achar os erros.

Referência8 min
Atualizado em 26/10/2026

Cada forma de troca de dados tem um ponto que precisa de cuidado: o link do webhook de entrada, o endereço que recebe o webhook de saída, o endpoint da requisição externa e a chave da API. Esta página reúne o que fazer em cada caso, como testar antes de ter o sistema pronto, como tratar o mesmo evento chegando duas vezes e onde ver os erros.

O que proteger

RecursoO que dá acessoO que fazer
Webhook de entradaO link copiado em Obter LinkGuardar fora do código e longe do navegador. Se vazar, trocar.
Webhook de saídaO endereço em Notificar este URLUsar https:// e um caminho difícil de adivinhar.
Requisição externaO endereço em Request URLMandar um segredo seu num cabeçalho e conferir no servidor.
APIA chave de API da contaGuardar em variável de ambiente e chamar só do servidor. Veja Autenticação com a chave de API.

O link não pede chave: quem tem o link cria contatos com qualquer telefone ou e-mail e inicia o fluxo do webhook. Se o fluxo manda mensagens, o link nas mãos erradas faz a sua conta mandar mensagens para quem não pediu.

  • Não ponha o link no HTML nem no JavaScript do site: quem abre a página vê o código. Mande os dados do formulário para o seu servidor, e o servidor manda para a NexTags. Veja o exemplo em Exemplos: Hotmart, Kiwify, Shopify e formulários.
  • Guarde o link numa variável de ambiente, como NEXTAGS_WEBHOOK_URL, e não em repositórios, prints ou chamados abertos.
  • A tela do webhook de entrada não tem campo para conferir a assinatura ou o token de quem envia, como o cabeçalho X-HOTMART-HOTTOK da Hotmart ou o parâmetro signature da Kiwify. Quem precisa dessa conferência recebe o webhook num servidor próprio, confere a assinatura e repassa os dados para a NexTags.

O menu do webhook de entrada tem só Obter Link, Renomear e Excluir: não há um botão para gerar outro link para o mesmo webhook. Para trocar:

  1. Em Ferramentas › Webhooks de entrada, clique em Adicionar Novo e crie outro webhook. Ele vem com um link novo.
  2. Refaça a configuração: Sample JSON, os caminhos, os campos e o fluxo.
  3. Troque o link no sistema que envia os dados e faça um envio de teste.
  4. No webhook antigo, desligue o interruptor Ativo e depois clique em Excluir.

Webhook de saída

  • O endereço em Notificar este URL precisa começar com https://. Com http://, a tela mostra "The URL must start with https". Sem nada no começo, o app completa com https:// ao salvar.
  • O formato do aviso (método, corpo, cabeçalhos e se há assinatura) não aparece na tela. Antes de escrever o código, aponte o webhook para um endereço de teste e veja o que chega (veja Como testar).
  • Use no endereço um caminho difícil de adivinhar, como https://seusistema.exemplo.com.br/webhooks/nextags/c8f2e1d94b7a, e recuse no seu servidor os outros caminhos.
  • Trate o aviso como um sinal. Se a decisão depende de dados confiáveis, como liberar um acesso, consulte o contato pela API antes de agir. Veja Consultar contato.

Requisição externa

  • Crie na aba Cabeçalhos um cabeçalho com um segredo seu, como X-Segredo, e confira o valor no servidor. Sem o segredo certo, responda 401. Para não espalhar o segredo pelos fluxos, guarde num campo do bot: veja Campos do bot.
  • A NexTags manda o cabeçalho X-USER-ID, com o ID do contato, em toda requisição. Use para saber de que contato é a chamada, mas não como prova de origem: qualquer um consegue mandar esse cabeçalho. A prova é o seu segredo.
  • Use um endereço https://, para o segredo e os dados do contato não viajarem abertos.
  • O campo do sistema {{page_api_key}} traz a chave de API da conta. Mande essa chave só para a API da NexTags ou para sistemas seus, nunca para sistemas de terceiros. Veja Campos do sistema.

A conferência do segredo, com comparação em tempo constante:

Conferir o segredo do cabeçalho
import { timingSafeEqual } from 'node:crypto';

// true quando o cabeçalho X-Segredo tem o valor da variável NEXTAGS_SEGREDO
export function segredoConfere(req) {
  const esperado = Buffer.from(process.env.NEXTAGS_SEGREDO ?? '');
  const recebido = Buffer.from(String(req.headers['x-segredo'] ?? ''));
  return esperado.length > 0 && esperado.length === recebido.length && timingSafeEqual(esperado, recebido);
}

O servidor completo está em Requisição externa: o fluxo chama o seu sistema.

Responda rápido e trate repetições

SituaçãoO que fazer
O seu servidor demora para responderResponda logo e deixe o trabalho pesado para depois, numa fila. O contato espera a resposta para seguir no fluxo, e o tempo limite da requisição externa não está publicado.
O mesmo evento chega duas vezes no seu sistemaGuarde um identificador de cada evento processado e ignore o que já viu. Não está documentado se a NexTags manda de novo um aviso que falhou: deixe o código pronto para receber o mesmo aviso mais de uma vez.
A plataforma manda o mesmo pedido duas vezes para o webhook de entradaO contato não se repete (ele é achado pelo telefone ou pelo e-mail), mas o fluxo pode rodar de novo. No fluxo, aplique uma etiqueta, como "Boas-vindas enviadas", e confira com uma condição antes de mandar a mensagem. Veja Etapa Condição.
A outra plataforma desativa o webhook depois de errosA Hotmart desativa a configuração e a Shopify apaga o webhook quando o endereço responde com erro; a Kiwify tenta de novo algumas vezes. Confira se o webhook de entrada está Ativo antes de reativar ou recriar do lado de lá.

Como testar sem um sistema pronto

O que você quer verComo testar
O que a NexTags manda no webhook de saída ou na requisição externaAponte para o Test URL de um nó Webhook do n8n e clique em Listen for test event: o n8n mostra o que chegou. O Test URL só recebe enquanto espera o teste; depois, use o Production URL, com o workflow publicado. Outro serviço que mostra as requisições recebidas também serve.
A requisição externa, do envio à respostaO Testar Agora da ação mostra o Código do estado, o Corpo da resposta, os Cabeçalhos da resposta, os Cabeçalhos da solicitação e o Corpo da solicitação.
O conteúdo dinâmico, sem servidorA ferramenta Devolver o JSON enviado (eco) devolve o JSON que recebe; o contrato da API diz que ela serve para gerar mensagens dinâmicas. Na requisição, use POST para https://app.nextagsai.com.br/api/tools/echo, o cabeçalho X-ACCESS-TOKEN com a chave e, no Corpo em JSON, o conteúdo dinâmico que você quer testar. Confira no teste se as mensagens chegam.
O webhook de entradaEnvie um JSON de teste com o cURL, como em Webhook de entrada, e confira o Result: de cada caminho depois de Load sample JSON.
O seu servidor, sem a NexTagsSimule a chamada com o cURL, com os cabeçalhos X-Segredo e X-USER-ID, como em Requisição externa.

Documentação do nó Webhook do n8n: Webhook node.

Onde ver os erros

OndeO que mostra
Fluxos › aba Registro de ErrosAs falhas da conta, com Tipo, Descrição, Contato e Data. A lupa pesquisa na lista. Veja Registro de Erros: ler e resolver.
Testar Agora, na requisição externaO código e o corpo da resposta, e o que a NexTags mandou.
Os campos http_status_code e http_response_bodyO código e a resposta de cada chamada de verdade, guardados no contato pelo Mapeamento de resposta.
O editor do webhook de entradaO Result: de cada caminho, sobre o Sample JSON.
O histórico da plataforma que enviaOs envios feitos para o link do webhook de entrada, como o Histórico da Hotmart e o Ver logs da Kiwify.

Os erros comuns de requisição externa e de webhooks, com o que fazer, estão em Erros de requisição externa, webhook e planilha.

Relacionados

Este conteúdo ajudou?

Obrigado! Sua resposta ajuda a melhorar a central.