Skip to main content
Ação personalizada é um botão no lead que chama um endereço HTTP seu quando um humano clica. Serve para levar o lead para outro sistema com um clique: “Criar pedido no ERP”, “Enviar para o financeiro”, “Gerar contrato”. Quem decide é a pessoa no CRM, não o agente.

Onde fica no painel

  • Configurar: Automações → Ações personalizadas. Admin e editor.
  • Usar: os botões aparecem na seção Ações do painel do lead no chat e no modal do lead no Kanban. Qualquer usuário com acesso ao projeto pode clicar.
Só aparecem as ações ligadas, na ordem da lista (as setas mudam a ordem).

Como configurar

Variáveis

Use o botão { } no campo para inserir. Valem na URL, nos parâmetros na URL e nos parâmetros no corpo. Variável que não existe, ou propriedade sem valor, vira texto vazio, nunca o {{…}} literal.

Como funciona por trás

A chamada

  • Sai dos servidores da Zatten, não do navegador. A URL e os headers nunca chegam ao navegador de quem clica.
  • Com corpo (POST, PUT, PATCH): Content-Type: application/json.
  • Tempo limite: 10 segundos. Sem nova tentativa.
  • Não há assinatura. Para autenticar, use um header (por exemplo Authorization).

O corpo

Com parâmetros no corpo, o JSON tem só essas chaves, e todos os valores são texto:
Sem parâmetros no corpo, vai o payload padrão:
triggered_by diz quem clicou. attendant_id é o id do projeto. lead.kanban é null se o lead não tem coluna.

Como o endpoint deve responder

O retorno vira um aviso na tela de quem clicou: A mensagem é lida, nesta ordem, dos campos message, msg, error ou detail do JSON. Se a resposta for texto puro, aparecem os primeiros 200 caracteres. Responda com uma frase curta, em português, que diga o que aconteceu.
Se o seu processo demora mais de 10 segundos (gerar um PDF, chamar várias APIs), responda logo {"message": "Pedido recebido, em processamento"} e continue em segundo plano.

Pelo MCP

Bloco custom_actions.
  • Identificado por name. O estado é is_active (boolean), não status.
  • Sem webhook_url, a ação nasce pendente: sem endereço, desligada e com o selo Pendente na lista. Só liga com endereço. Importar um JSON ou duplicar um projeto leva o endereço e os headers preenchidos, como vieram da origem: confira se eles servem ao projeto novo.
  • webhook_url, headers, query_params e body_params vazios não gravam por cima dos atuais.
  • get_template traz URL e headers preenchidos, inclusive tokens. Nunca mostre esses valores ao cliente.

Armadilhas

  • Variável no header não funciona. Bearer {{lead.id}} vai literalmente para o header. Coloque dados do lead na URL ou no corpo.
  • Tudo vira texto. Com parâmetros no corpo, "valor": "450" chega como texto, não número. Converta no endpoint.
  • Definir um parâmetro no corpo troca o payload inteiro. Quem dependia do payload padrão para de receber lead, triggered_by e o resto.
  • GET e DELETE não levam corpo. Use parâmetros na URL.
  • URL com http:// é recusada no painel.
  • 10 segundos e acabou. Processo lento aparece como erro para quem clicou, mesmo que tenha dado certo depois. Responda rápido.
  • Clique duplo, chamada dupla. Não há proteção contra dois cliques seguidos em momentos diferentes. Para ações que não podem se repetir (cobrança), ligue Pedir confirmação e trate repetição no endpoint (por exemplo, pelo lead.id e pela action.id).

Perguntas frequentes

Não. Ações personalizadas são só para humanos. Para o agente chamar um sistema externo, use uma tool HTTP.
Não pela ação personalizada. Use um fluxo do Trigger Flow com o gatilho “Movido no Kanban” e a ação de requisição HTTP.
Admin e editor criam e editam. Qualquer usuário com acesso ao projeto vê os botões ligados e pode clicar.

Para saber mais