Pular para o conteúdo
Integrações Webhooks

Chegou uma resposta,
seu sistema entra em ação.

Cada resposta concluída chega ao seu app, à sua automação ou à sua API como JSON assinado. Você configura uma vez, valida cada requisição e acompanha todos os envios no histórico.

Incluído nos planos Free, Pro e Business.

Uma resposta concluída do formulário Feedback de clientes no trulyform e a requisição POST assinada, com as mesmas respostas, que chega ao seu endpoint.

Leva cerca de um minuto

Um endpoint para quantos formulários você quiser.

Um endpoint de webhook na página Integrações do trulyform, com a URL e um segredo de assinatura oculto que você pode mostrar ou copiar. O painel Adicionar Webhooks de um formulário, com o endpoint Studio North CRM selecionado. Uma integração de Webhooks conectada, com o menu aberto em Testar conexão.

O que vem em cada evento

Um payload fácil de integrar.

Todo evento segue o mesmo formato documentado, com IDs estáveis para guardar e rótulos legíveis para mostrar.

ID do evento
Continua o mesmo em todas as novas tentativas, então dá para ignorar repetições com segurança.
01K65Y3X4R8N2D7T…
Tipo e versão do evento
response.completed nas respostas reais, integration.test nos testes, além de um schema_version.
response.completed
Formulário e resposta
IDs do formulário, da versão publicada e da resposta, o horário de conclusão e um link para a resposta no trulyform.
2026-09-27T17:45:23+00:00
Respostas
Um item por pergunta: o ID estável do campo, o tipo, o texto da pergunta, o valor bruto e o valor para exibição.
"kind": "email"
Números e cálculos
Vêm como strings decimais, sem perda de precisão. Cada cálculo vem com o próprio nome.
"value": "42.50"
Campos ocultos
Campos ocultos e parâmetros UTM salvos com a resposta, dentro de metadata.
"utm_source": "newsletter"
Arquivos
Nome, tipo, tamanho e um link que abre o arquivo para membros logados da sua organização.
"name": "brief.pdf"

Vale saber

Pensado para quem recebe.

Planos
Incluído nos planos Free, Pro e Business. Adicione quantos endpoints precisar.
Assinado com Standard Webhooks
Toda requisição traz os cabeçalhos webhook-id, webhook-timestamp e webhook-signature.
Reenvio na medida certa
Em caso de timeout, limite de requisições ou erro de servidor, são até cinco novas tentativas, com intervalos de um minuto a doze horas. O Retry-After é respeitado.
O que o seu endpoint precisa
HTTPS público na porta 443, POST com JSON e resposta 2xx em até 10 segundos. Redirecionamentos não são seguidos.
Só respostas concluídas
Um evento por resposta concluída. Nada é enviado a cada pergunta respondida.
Histórico de envios
Cada tentativa aparece com o status e o código HTTP. Se um envio falhar, você reenvia manualmente quando quiser.

Verifique uma requisição em Node

// npm install standardwebhooks
import { Webhook } from "standardwebhooks";

const wh = new Webhook(process.env.TRULYFORM_WEBHOOK_SECRET);
const event = wh.verify(rawBody, {
  "webhook-id": req.headers["webhook-id"],
  "webhook-timestamp": req.headers["webhook-timestamp"],
  "webhook-signature": req.headers["webhook-signature"],
}); // throws if the signature or timestamp is invalid

Ou sem biblioteca, em PHP

$key = base64_decode(substr($secret, strlen("whsec_")));
$expected = "v1," . base64_encode(hash_hmac("sha256", "$id.$timestamp.$rawBody", $key, true));
$valid = abs(time() - (int) $timestamp) < 300
    && in_array($expected, explode(" ", $signatureHeader), true);
Há bibliotecas oficiais do Standard Webhooks para Node, Python, PHP, Go, Ruby, Java e outras linguagens.

Ideias para começar

Dispare o processo que você montou.

Perguntas frequentes

O que costumam nos perguntar.

Ainda tem dúvidas? Mande uma mensagem ou escreva para support@trulyform.com.

Posso conectar o Make, o Zapier ou o meu próprio app?

Sim. Use a URL de webhook de entrada da sua automação ou um endpoint criado por você. Os serviços de automação têm contas e preços próprios. O endpoint precisa usar HTTPS público na porta 443, aceitar requisições POST com JSON e responder com status 2xx em até 10 segundos. Redirecionamentos não são seguidos.

O que vem em cada evento?

Cada evento traz um ID de evento estável, a versão do schema, os identificadores da sua organização, do formulário e da versão publicada, o horário de conclusão, um link para a resposta no trulyform, as respostas com IDs de campo estáveis e rótulos legíveis, os campos ocultos e os valores calculados com seus nomes. Respostas numéricas vêm como strings decimais, sem perda de precisão. Respostas de arquivo trazem nome, tipo, tamanho e um link que abre o arquivo para membros logados da sua organização; o conteúdo dos arquivos e as credenciais de armazenamento nunca são enviados.

Como verifico a assinatura?

O trulyform assina cada requisição no formato aberto Standard Webhooks, então as bibliotecas oficiais para Node, Python, PHP, Go, Ruby, Java e outras linguagens fazem a verificação por você. Cada requisição traz os cabeçalhos webhook-id, webhook-timestamp e webhook-signature. A assinatura é v1, seguida de um HMAC-SHA256 em base64 de id.timestamp.body, com o segredo do seu endpoint como chave (a parte em base64 depois de whsec_). Rejeite timestamps com mais de cinco minutos e ignore IDs de evento que você já processou.

O que acontece se o envio falhar?

Falhas de conexão, timeouts, limites de requisição (408, 425, 429) e erros de servidor geram novas tentativas depois de cerca de um minuto, cinco minutos, trinta minutos, duas horas e doze horas. O cabeçalho Retry-After é respeitado. Outras respostas 4xx e redirecionamentos falham na hora. Cada tentativa aparece no histórico de envios do formulário, um envio com falha pode ser reenviado manualmente, e quem criou a integração e o proprietário da sua organização recebem um único e-mail quando ela começa a falhar. As novas tentativas reaproveitam o payload e o ID de evento originais, então um receptor que descarta duplicatas pelo webhook-id processa cada resposta uma única vez.

Um formulário pode enviar para vários endpoints?

Sim. Os endpoints são adicionados uma vez na página Integrações da sua organização, cada um com o próprio segredo de assinatura, e qualquer formulário pode enviar para um ou mais deles. Desativar uma integração cancela o que ainda estiver na fila para ela; remover um endpoint interrompe os envios de todos os formulários que o usam.

Os webhooks enviam respostas incompletas?

Não. O evento é enviado quando a resposta é concluída; responder perguntas isoladas não envia nada. Eventos de teste têm o rótulo integration.test, trazem dados de exemplo e nunca contam como respostas.

Cada resposta,
direto no seu sistema.

Formulários bonitos com webhooks assinados, reenvio automático e boa documentação. Incluído em todos os planos.

Comece grátis