O que é
O widget de chat web é mais um canal da MINDO (assim como WhatsApp, Instagram ou ManyChat): um balão de chat que você incorpora no seu site com um<script> e que
conecta seus visitantes à sua caixa de entrada da MINDO. As mensagens que escreverem
chegam na mesma Caixa de entrada onde você já atende o WhatsApp, e sua equipe (ou seu
agente de IA) responde de lá — a resposta chega ao visitante em tempo real, sem que
ele precise recarregar a página.
Ele suporta dois tipos de visitante:
- Anônimo — não exige nada do seu backend. O widget gera um identificador de
visitante próprio (guardado no
localStoragedo navegador) para reconhecê-lo entre as mensagens. - Identificado — se o visitante já está logado no seu site, seu backend pode assinar a identidade dele para que a MINDO o reconheça. Isso une, sob um mesmo contato, todos os chats que esse usuário abrir em dispositivos diferentes, e deixa a conversa disponível quando ele voltar.
Antes de começar
Tenha à mão o seguinte:- Acesso a Configurações → Canais na MINDO com perfil de administrador.
- Acesso ao código do seu site (para colar um
<script>). - Se for identificar usuários logados: acesso ao backend do seu site, para assinar a identidade. A assinatura é calculada sempre no servidor, nunca no navegador.
Passo a passo
Criar o canal Web

Seção Widget de chat web em Configurações → Canais
- Nome da sessão — identifica o canal dentro da MINDO e, além disso, é o título que o visitante vê no cabeçalho do chat (por exemplo, “Chat da loja”).
- Cor primária — a cor do cabeçalho do painel, dos balões do visitante e do botão Enviar.
- Mensagem de boas-vindas — a primeira mensagem que o visitante vê enquanto não houver conversa. Não é salva como mensagem nem aciona o agente.
- Agente (opcional) — se você quiser que um agente de IA responda automaticamente neste canal.

Formulário de criação de um canal Web
Copiar o snippet

Snippet e Secret HMAC do canal recém-criado
Colar o snippet no seu site
<script> antes do fechamento de </body> nas páginas onde você quer que o
chat apareça. Não é preciso build step nem dependência — é um script vanilla,
autocontido.Ao carregar a página você verá um balão de chat no canto inferior direito. Ao clicar,
abre um painel com o chat (é um <iframe> para a MINDO, então seu site não precisa
implementar nenhuma interface de chat).
Painel do widget aberto sobre um site de exemplo
data-mindo-token vazio ou incorreto.
Chat do widget na Caixa de entrada, com o indicador de presença
(Opcional) Identificar visitantes logados
data-mindo-identity.O JWT é assinado com o algoritmo HS256 usando o Secret HMAC do canal, e seu
payload aceita estes campos:<script> a partir de um template do lado do servidor:
O mesmo chat, já identificado como o contato real
exp esteja em segundos (não
milissegundos) e a menos de 7 dias, que a claim se chame sub, e que o algoritmo
seja HS256.Método anterior: os três atributos com assinatura HMAC
Método anterior: os três atributos com assinatura HMAC
userId:expires usando : como separador, então não permite acrescentar o nome
ou o e-mail sem ficar ambíguo. O JWT assina os dados exatos e permite enviar
name, email e phone — que é o que faz o contato ter nome real e se unificar
com o chat de WhatsApp dele.(Opcional) Identificar o visitante depois que ele fez login
window.Mindo:async, então pode ser que window.Mindo ainda não exista
quando o seu código rodar. Para isso existe uma fila de comandos: enfileire as
chamadas e o widget as processa ao terminar de carregar.localStorage sob a chave mindo_identity, o widget o pega
sozinho. Serve para o caso do login em uma aba nova ou com um redirect de OAuth,
porque o widget escuta as mudanças dessa chave. O mesmo valor pode ser difundido por
um BroadcastChannel chamado mindo-identity.setUser e clearUser, window.Mindo expõe open(), close() e
toggle() para controlar o painel a partir da sua própria interface (por exemplo,
um botão “Precisa de ajuda?”), e on(evento, callback) / off(evento, callback)
para escutar open, close, unread, identity, identity:cleared,
auth:login e auth:register.(Opcional) Convidar a fazer login pelo chat

Botões de login e cadastro dentro do painel do widget

Seção Botões de login ao editar o canal
false no
handler cancela a abertura.O que acontece depois?
- Cada mensagem que um visitante escreve cria (ou continua) um chat na sua Caixa de
entrada da MINDO, com
Canal: Web. - Se você identificou o visitante e essa mesma pessoa escreve de outro dispositivo com o
mesmo
sub, a MINDO unifica o histórico sob um único contato. - Se o JWT inclui
phonee esse telefone já existe como contato de WhatsApp, a MINDO os unifica: fica um contato com suas duas conversas (a do widget e a do WhatsApp), em vez de duas pessoas diferentes. - Se você tem um agente de IA atribuído ao canal, ele pode responder automaticamente; se não, o chat aguarda resposta humana como qualquer outro canal.
Perguntas frequentes
Preciso instalar algo no meu site além do script?
Preciso instalar algo no meu site além do script?
<script> é autocontido: cria seu próprio balão e seu próprio painel de chat
(um iframe). Não exige CSS, dependências nem build step.Posso ter o widget em várias páginas do meu site?
Posso ter o widget em várias páginas do meu site?
O que acontece se o visitante recarregar a página no meio da conversa?
O que acontece se o visitante recarregar a página no meio da conversa?
O visitante percebe se respondermos com o chat fechado?
O visitante percebe se respondermos com o chat fechado?

Contador de mensagens não lidas sobre o balão
phone / email): com esses dados você pode
retomar a conversa por outro canal.O visitante pode mandar fotos ou áudios?
O visitante pode mandar fotos ou áudios?
Há limites de uso nos endpoints públicos?
Há limites de uso nos endpoints públicos?
O que acontece se eu não configurar a identificação?
O que acontece se eu não configurar a identificação?
Preciso migrar do método de três atributos para o JWT?
Preciso migrar do método de três atributos para o JWT?
Posso restringir em quais sites meu token pode ser usado?
Posso restringir em quais sites meu token pode ser usado?
allowed_origins): com a lista
vazia —o valor padrão— não há restrição; com origens cadastradas, o header Origin da
página tem que coincidir exatamente com alguma delas ou a API responde 403.Ainda não está exposta no formulário de Configurações: carrega-se por API
(PATCH /web-widget/channels/<id>/ com allowed_origins) ou pelo admin. Se você
ativar, inclua todos os domínios e subdomínios de onde o seu site é servido: um
que falte deixa o chat sem funcionar nessas páginas.Posso pedir telefone ou e-mail ao visitante antes que ele escreva?
Posso pedir telefone ou e-mail ao visitante antes que ele escreva?
config.prechat, com níveis
off / optional / required para phone e email) mas o widget ainda não
mostra esse formulário, então nunca envia esses dados.Tem custo adicional?
Tem custo adicional?

