Início rápido
Primeiro lead em menos de 10 minutos
O exemplo usa Bearer por ser o caminho mais simples para a primeira homologação. Em produção, prefira HMAC-SHA256 quando a ferramenta emissora conseguir assinar o corpo bruto.
- 1
Crie o endpoint na conexão correta
No Muda, abra Configurações → Conexões → canal → Webhooks. Crie o endpoint, escolha a autenticação e defina o funil e a etapa de destino antes de ativá-lo. Copie a URL completa e a credencial exibida. - 2
Salve um payload de homologação
Crie um arquivolead.jsoncom dados sintéticos. Use um telefone controlado e exclusivo para o teste.lead.json
json
{ "id": "form_lead_12345_created_1784574000", "type": "lead.added", "version": "2026-07-01", "occurred_at": "2026-07-20T14:30:00.000Z", "source": "lead_form", "data": { "external_id": "form_lead_12345", "name": "Contato de homologacao", "email": "contato@example.invalid", "phone": "<telefone_internacional_exemplo_+55...>", "description": "Cargo: Gestor\nUnidades: 2\nPrazo: Nos proximos 30 dias\nOrganizacao atual: Planilhas e mensagens", "custom_fields": { "cargo": "Gestor", "unidades": 2, "prazo": "Nos proximos 30 dias", "organizacao_atual": "Planilhas e mensagens" } }, "previous": null, "metadata": { "form_id": "form_synthetic", "campaign_id": "campaign_synthetic" } } - 3
Envie o evento
Substitua a URL e a credencial pelos valores copiados do Muda.curl --request POST 'https://web.muda.chat/api/v1/webhooks/inbound/<endpoint_publico>' \ --header 'Authorization: Bearer <credencial>' \ --header 'Content-Type: application/json' \ --data-binary '@lead.json' Valide o recibo e o processamento
O HTTP202confirma que o evento foi autenticado e persistido. Depois, confira a aba Histórico do webhook para verificar se ele foi processado, deduplicado ou rejeitado.Resposta HTTP 202
json
{ "received": true, "accepted": 1, "duplicates": 0, "request_id": "00000000-0000-4000-8000-000000000000" }
Formulários
Mapeie perguntas sem perder contexto
Campos principais ficam em propriedades canônicas. Perguntas comerciais ficam em custom_fields e podem preencher campos existentes do funil por meio do mapeamento do endpoint.
| Campo do formulário | Destino no JSON | Uso |
|---|---|---|
| Nome completo | data.name | Nome exibido no contato e no negócio |
data.email | E-mail do contato | |
| Telefone | data.phone | Chave de localização do chat dentro da conexão |
| Cargo | data.custom_fields.cargo | Resposta original do formulário |
| Unidades | data.custom_fields.unidades | Quantidade informada |
| Prazo | data.custom_fields.prazo | Momento pretendido para começar |
| Organização atual | data.custom_fields.organizacao_atual | Como a operação funciona hoje |
Modelo para mapear variáveis da automação
json com placeholders
{
"id": "{{event_id_unico}}",
"type": "lead.added",
"version": "2026-07-01",
"occurred_at": "{{data_hora_iso_8601}}",
"source": "lead_form",
"data": {
"external_id": "{{lead_id_externo}}",
"name": "{{nome_completo}}",
"email": "{{email}}",
"phone": "{{telefone}}",
"description": "Cargo: {{cargo}}\nUnidades: {{unidades}}\nPrazo: {{prazo}}\nOrganizacao atual: {{organizacao_atual}}",
"custom_fields": {
"cargo": "{{cargo}}",
"unidades": "{{unidades}}",
"prazo": "{{prazo}}",
"organizacao_atual": "{{organizacao_atual}}"
}
},
"metadata": {
"form_id": "{{form_id}}",
"campaign_id": "{{campaign_id}}"
}
}Contrato 2026-07-01
Envelope JSON estrito
Envie um objeto ou um lote de até 100 eventos. Campos específicos da integração devem ficar dentro de data ou metadata.
Exemplo canônico de lead.added
json
{
"id": "partner_lead_12345_created_1784574000",
"type": "lead.added",
"version": "2026-07-01",
"occurred_at": "2026-07-20T14:30:00.000Z",
"source": "partner_system",
"data": {
"external_id": "lead_12345",
"name": "Contato de homologacao",
"phone": "<telefone_internacional_exemplo_+55...>",
"email": "contato@example.invalid",
"stage_external_id": "stage_new",
"custom_fields": {
"campaign_name": "Campanha de homologacao",
"form_name": "Formulario principal"
}
},
"previous": null,
"metadata": {
"campaign_id": "campaign_synthetic",
"correlation_id": "correlation_synthetic"
}
}idIdentificador idempotente do evento. Reutilize o mesmo valor nos retries.
typeTipo canônico do catálogo, por exemplo lead.added.
versionVersão do envelope. Nesta documentação: 2026-07-01.
occurred_atData e hora ISO 8601 do acontecimento na origem.
sourceNome técnico genérico da origem. O Muda registra a origem segura do endpoint.
dataCampos da entidade e custom_fields específicos da integração.
previousValores anteriores quando fizer sentido para o evento.
metadataCorrelação, campanha, formulário e contexto semântico não sensível.
Segurança
Bearer para simplicidade, HMAC para integridade
Bearer
Envie Authorization: Bearer <credencial>. É adequado para plataformas que suportam cabeçalhos, mas não conseguem calcular HMAC.
HMAC-SHA256
Assine timestamp + "." + corpo_bruto_exato e envie emX-Muda-Signature. A tolerância atual é de 300 segundos.
Confiabilidade
Retries seguros e sem duplicação
Gere um id estável
Use o identificador do lead e o acontecimento na origem.
Mantenha o corpo
Em cada retry, envie exatamente o mesmo id e o mesmo payload.
Trate o recibo
Se duplicates for maior que zero, o evento já havia sido recebido.
Referência
Catálogo pesquisável de eventos
25 tipos têm aplicação local. Os demais continuam autenticados, idempotentes e registrados para auditoria.
Leads
lead.addedLead adicionado
lead.updatedLead editado
lead.deletedLead excluido
lead.restoredLead restaurado
lead.stage_changedEtapa do lead alterada
lead.responsible_changedResponsavel do lead alterado
Contatos
contact.addedContato adicionado
contact.updatedContato editado
contact.deletedContato excluido
contact.restoredContato restaurado
contact.responsible_changedResponsavel do contato alterado
Empresas
company.addedEmpresa adicionada
company.updatedEmpresa editada
company.deletedEmpresa excluida
company.restoredEmpresa restaurada
company.responsible_changedResponsavel da empresa alterado
Tarefas
task.addedTarefa adicionada
task.updatedTarefa editada
task.deletedTarefa excluida
task.responsible_changedResponsavel da tarefa alterado
Leads de entrada
incoming_lead.addedLead de entrada adicionado
incoming_lead.updatedLead de entrada editado
incoming_lead.deletedLead de entrada excluido
Mensagens
message.incomingMensagem recebida
Conversas
talk.addedConversa adicionada
talk.updatedConversa editada
Notas
note.lead_addedNota adicionada ao lead
note.contact_addedNota adicionada ao contato
note.company_addedNota adicionada a empresa
Produtos
product.addedProduto adicionado
product.updatedProduto editado
product.deletedProduto excluido
Tipos somente para histórico nesta versão: company.responsible_changed, message.incoming, talk.added, talk.updated, note.lead_added, note.contact_added, note.company_added.
Operação
Respostas, retries e backoff
Faça retry apenas em falhas temporárias. Para erros de contrato ou autenticação, corrija a requisição antes de tentar novamente.
| HTTP | Significado | Ação recomendada |
|---|---|---|
202 | Evento autenticado, validado e persistido | Não reenviar; consulte o histórico |
400 | JSON malformado | Corrigir o corpo |
401 | Assinatura ou token inválido | Revisar credencial, corpo bruto e relógio |
404 | Endpoint inexistente, pausado ou revogado | Revisar URL e ativação |
408 | Corpo não chegou no prazo | Reenviar com backoff e jitter |
409 | Mesmo id com payload diferente | Investigar a origem; não gerar novo efeito |
413 | Corpo acima do limite | Reduzir o payload |
415 | Content-Type incompatível | Enviar application/json |
422 | Envelope, campos ou evento inválido | Corrigir sem retry automático |
429 | Limite por minuto atingido | Respeitar Retry-After |
503 | Persistência temporariamente indisponível | Reenviar com o mesmo id |
Downloads
Teste e gere código a partir do mesmo contrato
Checklist
Antes de ativar em produção
- Use somente HTTPS e mantenha a URL opaca em um cofre de segredos.
- Nunca registre credenciais, payloads completos ou telefones sem máscara.
- Prefira HMAC e sincronize o relógio do servidor emissor.
- Implemente timeout, backoff exponencial com jitter e teto de tentativas.
- Use dados sintéticos na homologação e confirme o endpoint da conexão correta.
- Rotacione a credencial imediatamente se houver qualquer suspeita de exposição.