Transformador de webhook
O e-mail que está em data.customer.email vai para correo e o valor 8500 para importe, enquanto um caminho que não existe simplesmente fica de fora: descreva o formato que o sistema receptor espera e receba a mensagem reconstruída sob medida. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
o payload certo para cada sistema
Por que dois sistemas quase nunca concordam no formato
Dois sistemas que se dizem integrados raramente concordam nos nomes, no aninhamento ou até no formato das datas. Um processador de pagamentos envia o valor em centavos como número inteiro, enquanto o seu sistema de cobrança espera um texto decimal aninhado três níveis abaixo. Um CRM dispara um evento de novo lead como um objeto plano, e a sua ferramenta de marketing quer uma lista de contatos mesmo quando só há um. Não são erros: são duas equipes tomando decisões diferentes e razoáveis por conta própria, e esse desencontro é exatamente o que quebra integrações que pareciam funcionar numa demonstração. Esta ferramenta fica entre os dois e reconstrói o que um envia na estrutura que o outro espera, sem que nenhum mude o próprio código.
Um mapeamento no lugar de código feito à mão
O formato de destino é descrito por um mapeamento. Cada nome do resultado aponta para o caminho com pontos onde o valor está na mensagem de entrada: no exemplo, correo aponta para data.customer.email e importe para data.amount, então o valor 8500 fica em importe. Um caminho que não existe, como data.no.existe, fica de fora em vez de receber um valor inventado. Manter esse mapeamento fora da sua aplicação faz diferença: transformações escritas à mão são esquecidas e quebram em silêncio quando a origem muda um nome meses depois, enquanto um mapeamento separado pode ser revisado e conferido sozinho. Um serviço com dezenas de parceiros pode manter um mapeamento por parceiro e incluir um novo sem mexer no código compartilhado.
Como funciona a transformação
A transformação é um mapeamento declarado: você diz que o campo customer.email da origem vira email no destino, que o valor em centavos vira um decimal, que três campos soltos viram um objeto address. Depois de acertar o mapeamento na tela, é ele que você leva para a automação — testou visualmente, automatizou com segurança.
Quando usar isso em vez de programar
Se a integração é só “o campo X vira Y”, escrever e hospedar código próprio é matar mosca com canhão: você ganha um repositório, um deploy e uma manutenção para sempre. A transformação declarada resolve o mesmo problema sem infraestrutura. Programar continua fazendo sentido quando há regra de negócio de verdade no meio — consulta a banco, decisão condicional complexa, chamada a outros serviços.
Perguntas frequentes
É grátis mesmo? Qual é a pegadinha?
No navegador, é grátis sem pegadinha: sem limite de uso, sem cadastro, sem marca d’água. A ferramenta roda inteira na página.
Preciso saber programar para usar?
Para o mapeamento simples, não: é dizer qual campo vira qual.
Funciona no celular?
Para trabalhar com mapeamentos grandes, a tela do computador é mais confortável.
O que acontece se um caminho do mapeamento não existir?
Essa entrada simplesmente não aparece no resultado, em vez de ser preenchida com um valor inventado. No exemplo, falta aponta para data.no.existe, que não está na origem, e o resultado traz só correo e importe.
Como descrevo o formato que quero receber?
Com um mapeamento: para cada nome do resultado, informe o caminho com pontos onde o valor está na mensagem de entrada. No exemplo, importe aponta para data.amount, então o 8500 que está ali aparece em importe.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/webhook-transform \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"payload":{"user":{"name":"Ada"}},"mapping":{"nombre":"user.name"}}'const res = await fetch("https://api.kit.forhosting.com/dev/webhook-transform", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"payload": {
"user": {
"name": "Ada"
}
},
"mapping": {
"nombre": "user.name"
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/webhook-transform",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"payload": {
"user": {
"name": "Ada"
}
},
"mapping": {
"nombre": "user.name"
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/webhook-transform", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"payload":{"user":{"name":"Ada"}},"mapping":{"nombre":"user.name"}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"payload":{"user":{"name":"Ada"}},"mapping":{"nombre":"user.name"}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/webhook-transform", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"payload": {
"user": {
"name": "Ada"
}
},
"mapping": {
"nombre": "user.name"
}
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.webhook_transform",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Um sistema envia o webhook num formato; o sistema de destino espera outro. Esta ferramenta transforma o payload — renomeia campos, reestrutura o JSON, ajusta valores — direto no navegador, grátis e sem cadastro. Para automatizar de vez, a mesma transformação roda via API por US$ 0,002 por evento.
Grátis no navegador, sem mandar nada para fora
Sem cadastro, sem limite de uso, sem marca d’água escondida: a versão do navegador é grátis de verdade. Cole o payload de origem, defina o mapeamento de campos e veja o resultado na hora. Tudo acontece dentro da página: o JSON não é enviado a servidor nenhum, o que significa que dá para testar com payloads reais — inclusive os que carregam dados de cliente — sem abrir discussão de segurança.
Como funciona a transformação
O resultado é um JSON novo, no formato exato que o sistema de destino espera.
Automatize via API
Quando o mapeamento estiver redondo, aponte seus webhooks para a API: cada evento que chega é transformado e devolvido no formato de destino, a US$ 0,002 por evento — US$ 2 a cada mil eventos, em dólares americanos, preço publicado. É a ponte entre dois sistemas que não se entendem, sem subir servidor nem manter função serverless só para reescrever JSON.
Casos de integração
Gateway de pagamento → ERP
A loja virtual recebe do gateway um webhook de venda aprovada, mas o ERP importa pedidos em outro formato. A transformação converte cada evento na estrutura que o ERP entende — a integração que estava travada há meses sai do papel numa tarde.
Nota de serviço para o financeiro
O sistema da prefeitura envia a confirmação da NFS-e num JSON próprio; a automação do financeiro espera campos simples. O payload transformado alimenta o fluxo que preenche o controle sem digitação manual.
CRM e ferramenta de e-mail
O formulário do site dispara um webhook com os dados do lead, mas a ferramenta de e-mail marketing espera outro nome para cada campo. Mapeou uma vez, todo lead novo entra na lista certa, com nome e cidade no lugar.
Testar antes de subir
Antes de colocar a integração em produção, Márcia Regina Oliveira cola exemplos reais de payload no navegador e confere o resultado campo a campo. Só depois de validar o mapeamento visualmente ela ativa o fluxo via API.
Perguntas técnicas
Meus payloads têm dados de clientes. É seguro colar aqui?
Na versão do navegador, o payload não sai da sua tela: nenhum dado é enviado a servidor. Para a LGPD, isso simplifica tudo — o dado não muda de mãos. Já no uso via API, os eventos passam pelo serviço para serem transformados; avalie o que trafega, como em qualquer integração.
Só aceita JSON?
O foco é JSON, o formato universal dos webhooks modernos. Se o seu sistema legado fala outra língua, resolva na ponta: a maioria das plataformas consegue exportar JSON em alguma versão do webhook.
Qual o limite de eventos via API?
Não há limite publicado de volume. O preço é linear — US$ 0,002 por evento —, então mil ou cem mil eventos custam proporcionalmente o mesmo, sem degrau de plano.