Enviar à integração
Um botão na conversa que manda os dados para o seu sistema.
Nesta página
Com o Enviar à integração, a equipe manda dados de uma conversa para o sistema da empresa: um pedido para o delivery, um cadastro no ERP, um chamado no suporte. O NextChat faz um POST com JSON no endereço cadastrado e mostra na hora a resposta do seu sistema.
Diferente dos webhooks, que avisam a cada evento, aqui quem decide é a pessoa: o envio só acontece quando ela clica.
Como a empresa configura
Em Configurações → Integrações → Enviar à integração, o administrador cadastra cada destino com:
- Endereço
httpsque recebe oPOST. Aceita variáveis (veja abaixo); - Autenticação, se o seu sistema pede (veja abaixo);
- O que vai no JSON: mensagens, contato, número, quem enviou e arquivos;
- Campos fixos que entram em todo envio, como
"origem": "nextchat". Também aceitam variáveis; - Botão na conversa: o nome e o ícone que aparecem no botão de ações (raio) de cada conversa.
Na conversa, cada destino vira um botão:
| “Mensagens” no JSON | O que acontece ao clicar |
|---|---|
| Ligado (padrão) | A pessoa escolhe as mensagens e confere o JSON antes de enviar |
| Desligado | Envia na hora só os dados da conversa (contato, número, empresa…), sem selecionar nada |
Autenticação no destino
| Forma | O que vai em cada envio |
|---|---|
| Nenhuma | Só a assinatura (X-NextChat-Signature) |
| Token (Bearer) | Authorization: Bearer <token> |
| Cabeçalho próprio | <nome>: <valor>, por exemplo X-Api-Key: … |
O token fica guardado no NextChat e nunca volta para a tela (só o fim dele, para reconhecer). A assinatura vai sempre, com ou sem token: com ela, o seu sistema confere que o corpo veio do NextChat e não foi alterado.
O que chega
{
"type": "messages.shared",
"version": 1,
"id": "1c9e…",
"created_at": "2026-10-18T19:03:00Z",
"integration": { "id": "…", "name": "Pedidos do ERP" },
"company": { "id": "…", "name": "Pizzaria Bella" },
"shared_by": { "id": "…", "name": "Amanda", "email": "amanda@…" },
"channel": { "id": "…", "name": "Delivery", "phone": "5511999990000" },
"contact": { "id": "…", "name": "Maria Souza", "phone": "5511988887777", "group": false },
"conversation_id": "…",
"note": "Mesa 4",
"messages": [
{ "position": 1, "id": "…", "whatsapp_id": "3EB0…", "direction": "in", "from": "contact", "author": "Maria Souza",
"type": "text", "text": "Quero 2 pizzas grandes", "sent_at": "2026-10-18T19:02:11Z", "media": null }
],
"origem": "nextchat"
}messagesvai na ordem em que as mensagens foram enviadas, com até 200 por envio. Cada item tem sempre os mesmos campos.mediatrazmime_type,file_name,size_bytes,urleexpires_at: o link vale 24 horas.- Com “Mensagens” desligado,
messageschega como[]. shared_by,channel,contacte os arquivos saem do JSON quando a empresa desliga cada um.accountaparece nas integrações prontas que pedem um código da conta (por exemplo, o CNPJ da loja).- Os campos fixos ficam na raiz do JSON.
- O botão Testar manda o mesmo formato com dados de exemplo e
"test": true.
Variáveis
O endereço e os campos fixos aceitam variáveis com os nomes do JSON, em até dois níveis. Elas são trocadas em cada envio pelos dados da conversa.
https://erp.exemplo.com.br/clientes/{contact.phone}/pedidos?conversa={conversation_id}| Variável | Valor |
|---|---|
{contact.phone}, {contact.name}, {contact.id} | O contato da conversa |
{conversation_id} | A conversa |
{channel.phone}, {channel.name}, {channel.id} | O número do WhatsApp da conversa |
{company.id}, {company.name} | A empresa |
{shared_by.name}, {shared_by.email}, {shared_by.id} | Quem enviou |
{integration.name}, {integration.id} | O destino |
{account} | O código da conta (integrações prontas) |
{id} | O envio |
- No endereço, os valores vão codificados para URL (um espaço vira
%20). Nos campos fixos, vão como texto. - Variáveis só valem no caminho e na consulta do endereço, nunca no domínio: o envio nunca é desviado para outro servidor.
- Uma variável desconhecida é recusada ao salvar. A tela mostra a prévia do endereço e o JSON completo de exemplo enquanto a pessoa configura.
Cabeçalhos e assinatura
| Cabeçalho | Valor |
|---|---|
Content-Type | application/json |
X-NextChat-Event | messages.shared |
X-NextChat-Delivery | O id do envio (igual ao id do corpo) |
X-NextChat-Timestamp | Segundos Unix do envio |
X-NextChat-Signature | sha256= + HMAC-SHA256(segredo, timestamp + "." + corpo) em hex |
| A autenticação | Authorization: Bearer … ou o cabeçalho próprio, quando configurados |
A assinatura é a mesma dos webhooks: veja como conferir em Webhooks. O segredo whsec_… aparece uma vez, ao cadastrar o destino ou ao redefinir.
A resposta do seu sistema
- Um
2xxconta como enviado. Qualquer outro status aparece para a pessoa como falha, com o motivo. - O corpo da resposta (até 4 KB) aparece na tela, por exemplo
{"pedido":"P-77"}: use para devolver o número do pedido ou do chamado. - Responda em até 15 segundos. Não há nova tentativa automática: a pessoa vê o erro e pode enviar de novo.
Só https. Endereços de rede interna, loopback e de metadados de nuvem são recusados, e redirecionamentos não são seguidos. Só sai o que a pessoa escolheu, e só quando ela clica. Quem pode enviar fica em Perfis de acesso (“Enviar dados à integração”).