Qué es
El widget de chat web es un canal más de MINDO (igual que WhatsApp, Instagram o ManyChat): una burbuja de chat que embebés en tu sitio con un<script> y que
conecta a tus visitantes con tu bandeja de MINDO. Los mensajes que te escriban
aparecen en el mismo Inbox donde ya atendés WhatsApp, y tu equipo (o tu agente IA)
responde desde ahí — la respuesta le llega al visitante en tiempo real, sin que
tenga que recargar la página.
Soporta dos tipos de visitante:
- Anónimo — no requiere nada de tu backend. El widget genera un identificador
de visitante propio (guardado en
localStoragedel navegador) para reconocerlo entre mensajes. - Identificado — si el visitante ya está logueado en tu sitio, tu backend puede firmarle la identidad para que MINDO la reconozca. Esto une, bajo un mismo contacto, todos los chats que ese usuario abra desde distintos dispositivos, y le deja la conversación disponible cuando vuelve.
Antes de empezar
Asegurate de tener a mano lo siguiente:- Acceso a Configuración → Canales en MINDO con rol de administrador.
- Acceso al código de tu sitio (para pegar un
<script>). - Si vas a identificar usuarios logueados: acceso al backend de tu sitio, para firmar la identidad. La firma se calcula siempre en el servidor, nunca en el navegador.
Paso a paso
Crear el canal Web

Sección Widget de chat web en Configuración → Canales
- Nombre de la sesión — identifica el canal dentro de MINDO y, además, es el título que ve el visitante en el header del chat (por ejemplo, “Chat de la tienda”).
- Color primario — el color del header del panel, de las burbujas del visitante y del botón Enviar.
- Mensaje de bienvenida — el primer mensaje que ve el visitante mientras no haya conversación. No se guarda como mensaje ni dispara al agente.
- Agente (opcional) — si querés que un agente de IA responda automáticamente en este canal.

Formulario de creación de un canal Web
Copiar el snippet

Snippet y Secret HMAC del canal recién creado
Pegar el snippet en tu sitio
<script> antes del cierre de </body> en las páginas donde querés
que aparezca el chat. No hace falta ningún build step ni dependencia — es un
script vanilla, autocontenido.Al cargar la página vas a ver una burbuja de chat abajo a la derecha. Al hacer
clic, se abre un panel con el chat (es un <iframe> a MINDO, así que tu sitio
no necesita implementar ninguna UI de chat).
Panel del widget abierto sobre un sitio de ejemplo
data-mindo-token vacío o incorrecto.
Chat del widget en el Inbox, con el indicador de presencia
(Opcional) Identificar visitantes logueados
data-mindo-identity.El JWT se firma con algoritmo HS256 usando el Secret HMAC del canal, y
su payload admite estos campos:<script> desde una plantilla del lado del servidor:
El mismo chat, ya identificado como el contacto real
exp esté en segundos (no
milisegundos) y a menos de 7 días, que el claim se llame sub, y que el
algoritmo sea HS256.Método anterior: los tres atributos con firma HMAC
Método anterior: los tres atributos con firma HMAC
userId:expires usando : como separador, así que no admite
sumarle el nombre o el email sin volverse ambiguo. El JWT firma los datos
exactos y te deja mandar name, email y phone — que es lo que permite
que el contacto tenga nombre real y se unifique con su chat de WhatsApp.(Opcional) Identificar al visitante después de que inició sesión
window.Mindo:async, así que puede que window.Mindo todavía no
exista cuando tu código corre. Para eso hay una cola de comandos: encolá las
llamadas y el widget las procesa al terminar de cargar.localStorage bajo la clave mindo_identity, el widget lo
toma solo. Sirve para el caso del login en una pestaña nueva o con un redirect
de OAuth, porque el widget escucha los cambios de esa clave. El mismo valor se
puede difundir por un BroadcastChannel llamado mindo-identity.setUser y clearUser, window.Mindo expone open(), close() y
toggle() para manejar el panel desde tu propia UI (por ejemplo, un botón
“¿Necesitás ayuda?”), y on(evento, callback) / off(evento, callback) para
escuchar open, close, unread, identity, identity:cleared,
auth:login y auth:register.(Opcional) Invitar a iniciar sesión desde el chat

Botones de login y registro dentro del panel del widget

Sección Botones de inicio de sesión al editar el canal
false en el handler cancela la apertura.¿Qué pasa después?
- Cada mensaje que un visitante te escribe crea (o continúa) un chat en tu Inbox de
MINDO, con
Canal: Web. - Si identificaste al visitante y esa misma persona te escribe desde otro
dispositivo con el mismo
sub, MINDO unifica el historial bajo un solo contacto. - Si el JWT incluye
phoney ese teléfono ya existe como contacto de WhatsApp, MINDO los unifica: queda un contacto con sus dos conversaciones (la del widget y la de WhatsApp), en vez de dos personas distintas. - Si tenés un agente de IA asignado al canal, puede responder automáticamente; si no, el chat espera respuesta humana como cualquier otro canal.
Preguntas frecuentes
¿Necesito instalar algo en mi sitio además del script?
¿Necesito instalar algo en mi sitio además del script?
<script> es autocontenido: crea su propia burbuja y su propio panel de
chat (un iframe). No requiere CSS, dependencias ni build step.¿Puedo tener el widget en varias páginas de mi sitio?
¿Puedo tener el widget en varias páginas de mi sitio?
¿Qué pasa si el visitante recarga la página en medio de una conversación?
¿Qué pasa si el visitante recarga la página en medio de una conversación?
¿El visitante se entera si le respondemos con el chat cerrado?
¿El visitante se entera si le respondemos con el chat cerrado?

Contador de mensajes sin leer sobre la burbuja
phone / email): con esos datos podés retomar la conversación por
otro canal.¿El visitante puede mandar fotos o audios?
¿El visitante puede mandar fotos o audios?
¿Hay límites de uso en los endpoints públicos?
¿Hay límites de uso en los endpoints públicos?
¿Qué pasa si no configuro la identificación?
¿Qué pasa si no configuro la identificación?
¿Tengo que migrar del método de tres atributos al JWT?
¿Tengo que migrar del método de tres atributos al JWT?
¿Puedo restringir en qué sitios se puede usar mi token?
¿Puedo restringir en qué sitios se puede usar mi token?
allowed_origins): con la
lista vacía —el valor por defecto— no hay restricción; con orígenes cargados, el
header Origin de la página tiene que coincidir exacto con alguno o la API
responde 403.Todavía no está expuesta en el formulario de Configuración: se carga por API
(PATCH /web-widget/channels/<id>/ con allowed_origins) o desde el admin. Si la
activás, incluí todos los dominios y subdominios desde los que se sirve tu
sitio: uno que falte deja el chat sin funcionar en esas páginas.¿Puedo pedirle teléfono o email al visitante antes de que escriba?
¿Puedo pedirle teléfono o email al visitante antes de que escriba?
config.prechat, con
niveles off / optional / required para phone y email) pero el widget
todavía no muestra ese formulario, así que nunca envía esos datos.¿Tiene costo adicional?
¿Tiene costo adicional?

