XQuiz

HTTP Request

Nó de integração (webhook) que chama um sistema externo quando o visitante passa por ele no fluxo, com método, URL, headers e corpo definidos por você — e pode salvar a resposta em variáveis

HTTP Request

HTTP Request (também chamado de webhook) é uma integração: um nó do fluxo que chama um sistema externo em um ponto da jornada. Você o arrasta da paleta, do grupo Integrações — ao lado de ActiveCampaign, RD Station, Google Sheets e Zapier — e o liga a um passo anterior, normalmente um Botão. Ele tem uma entrada e uma única saída, sem ramo de sucesso ou de erro: depois de disparar, o fluxo segue para o nó conectado ali. No canvas aparece o Nome definido na aba Configurações (identificação interna) ou o rótulo "HTTP Request". Não há credencial a cadastrar: tudo fica no próprio nó.

O que você configura

Na aba Conteúdo:

  • Método — GET, POST, PUT, PATCH, DELETE ou HEAD.
  • URL — obrigatória; o destino precisa ser um endereço público na internet (endereços privados e internos são bloqueados).
  • Query params e Headers — pares de chave e valor; linhas com chave vazia são ignoradas. Não existe campo de token: a autenticação é um header seu (Authorization: Bearer {{token}}).
  • Body — com o toggle Body Customizado ligado, o corpo é exatamente o JSON que você escreve no editor.
  • Salvar resposta em variáveis — o bloco no fim da aba, que guarda pedaços da resposta em variáveis do funil; veja a seção abaixo.

Na URL, nos valores de header e query param e no body customizado você pode usar {{variavel}} — inclusive as capturadas por um campo Texto; veja Variável. A substituição ignora maiúsculas e minúsculas e, se a variável não existir, o literal vai junto.

Com Body Customizado desligado, o corpo é montado por três toggles: Enviar Variáveis monta a chave variables com todas as variáveis da sessão (não há seleção); Enviar Sessão monta session com referenciador, user agent e IP, lidos no servidor; Enviar Parâmetros monta search_params com os UTMs e src/sck presentes na URL do funil. Com ele ligado, os três são ignorados. Em GET e HEAD nenhum corpo é enviado.

Salvar resposta em variáveis

A seção Salvar resposta em variáveis fica no fim da aba Conteúdo, logo acima do botão de teste, e vem fechada enquanto não houver nenhum mapeamento; o número entre parênteses no título é a quantidade de linhas. Cada linha guarda um pedaço da resposta do sistema de destino em uma variável do funil: Adicionar mapeamento cria a linha com dois campos — à esquerda o dado a ler, à direita a variável que recebe o valor — e um botão de lixeira para removê-la. A lista da direita traz as variáveis do funil e também cria uma nova, se você digitar um nome que ainda não existe.

O campo da esquerda não tem rótulo visível, só o placeholder data.campo (expressão JS). O que você escreve nele é uma expressão JavaScript, avaliada sobre dois nomes e só esses dois: statusCode, o código HTTP da resposta, e data, o corpo já interpretado — JSON válido vira objeto, lista ou valor simples; qualquer outra coisa chega como texto. Headers e duração da chamada não estão disponíveis. É uma expressão, não um script: comandos como if e for não valem. Valem, por exemplo, data.id, data.user.details.age, data.items[0].name, data.user['full name'], data.items.flatMap(item => item.name) e statusCode. O campo também aceita {{variavel}}, substituída pelo valor da sessão antes de a expressão ser avaliada; se a variável não existir, o literal fica na expressão, ela deixa de ser válida e aquela linha não grava nada.

  • Texto vira texto; número e true/false são gravados como texto; uma lista de valores simples vira lista; um objeto vira o JSON dele em texto.
  • Quando a expressão não encontra nada ou dá erro — inválida, ou apontando para um caminho que não existe na resposta —, aquela linha simplesmente não grava: a variável fica com o valor que já tinha, sem aviso para você nem para o visitante. Erro numa linha não derruba as outras.
  • São avaliados os 20 primeiros mapeamentos, na ordem da lista; do 21º em diante nada é avaliado, também sem aviso. Linhas sem expressão ou sem variável são descartadas antes dessa contagem.
  • O mapeamento roda mesmo quando a chamada falha: no estouro dos 10 segundos, statusCode recebe 408 e data vira {"message": "..."} com o motivo; em erro de rede, statusCode recebe 500, do mesmo jeito. Em resposta de sucesso sem corpo, data vem vazio e só o que usa statusCode grava.
  • O corpo é lido até 512 KB. Acima disso a leitura é cortada e, se o JSON ficar pela metade, data chega como texto puro.
  • O corpo cru nunca chega ao navegador do visitante: só os valores mapeados saem do servidor.

Ler a resposta não trava a navegação: o funil segue na hora e a variável é gravada quando a resposta chegar. Textos que usam {{variavel}} se atualizam sozinhos, mas um nó de Condições que já passou não roda de novo — não conte com o valor pronto no passo seguinte. No modo Testar a chamada não acontece e a variável fica vazia: um nó de Condições que depende dela segue outro caminho no teste.

O botão Testar requisição não avalia os mapeamentos: ele nunca grava variável. O que ele faz por esta seção é mostrar, em Detalhes da resposta, o statusCode e o data que voltaram — exatamente o formato que a expressão recebe — e alimentar o seletor Sugestões da última resposta, que lista os caminhos encontrados nesse corpo; escolher uma sugestão já cria a linha preenchida. Sem um teste que tenha trazido corpo, o seletor não aparece.

No funil publicado

A chamada parte do servidor, não do navegador, e é disparada sem espera: a navegação nunca trava. O limite é de 10 segundos, não há reenvio e a falha é silenciosa — nada aparece para o visitante. Com Salvar resposta em variáveis configurado, o corpo da resposta é lido no servidor e as variáveis são gravadas quando ela chegar — o funil não espera por isso. O nó só funciona com o funil publicado; no modo Testar ele não executa. Alterações no nó só valem depois de publicar o funil.

Onde conferir o resultado

Não há histórico de disparos em Leads nem em Analytics — mas as variáveis preenchidas por Salvar resposta em variáveis ganham coluna própria na tabela de Leads, com o valor final, como qualquer outra variável do funil. Use o botão Testar requisição, no próprio nó: ele envia de verdade, com valores de exemplo no lugar das variáveis, e mostra o status, a duração e os Detalhes da resposta. A confirmação real é no sistema de destino.

Nesta página