Un asistente que lee el precio y la disponibilidad de tu tienda en el segundo en que el cliente pregunta.
Conectamos el asistente al catálogo de la tienda a través de su gate público, lo ponemos en los canales en los que ya escriben los clientes y le damos una regla que no puede infringir: no dice un precio que no esté publicado en la tienda. Cuando supera su rol, entrega la conversación a una persona, con constancia.
Ya construidoSe poate verifica din exterior, fără să ne întrebi pe noi. Punctul nostru de catalog livrat unui distribuitor răspunde 200 și spune „154 rezultate”, iar interfața publică a magazinului lui, interogată direct, întoarce antetul `x-wp-total: 154` — aceeași cifră, două surse independente, 06.09.2026. A doua implementare e funcția de catalog din platforma de asistenți: `storeCatalog.service.js` plus trei unelte încorporate pe care agentul le poate chema în timpul conversației. Rezerva pe care o spunem înainte de contract: mesajele din șablon WhatsApp nu există în codul platformei, deci nu promitem niciun mesaj proactiv în afara ferestrei de 24 de ore; iar traseul de catalog stă pe o ramură de dezvoltare care nu e unificată în trunchi — e livrat pentru magazinele pe care le-am conectat, nu pornit implicit pentru toți.
Un asistente de tienda no se rompe porque no entiende la pregunta. Se rompe porque responde desde una copia del catálogo. Alguien exportó los productos una vez, los pegó en un archivo, y desde entonces el asistente lee una foto vieja de la tienda: el precio de hace tres semanas, el stock de antes del fin de semana. Funciona perfectamente hasta el primer cambio de precio y hasta el primer producto agotado — y entonces se equivoca con convicción, lo que es peor que callar. En comercio eso no es un error de matiz: el cliente llega a la tienda con el precio que le dijo el bot.
Nuestra elección es simple y tiene consecuencias: el catálogo no se copia, se lee. Para las tiendas en WooCommerce, la interfaz Store API es pública — así que la conexión se hace con la dirección del sitio, sin clave de consumidor y sin secreto. Cuando el cliente pregunta por un producto, el agente llama a una herramienta, la herramienta pregunta a la tienda, la tienda responde con el precio y la disponibilidad de ahora. Lo que aparece en la conversación es lo que hay en la tienda, no lo que había cuando se hizo la integración.
El coste de esta elección es visible en el código, no está oculto: el catálogo se carga paginado, hasta treinta páginas de cien productos cada una, se mantiene en una memoria temporal de diez minutos por sitio y se normaliza en una sola forma, leída sin cambios por todos los consumidores — incluido el carrusel de productos de la mensajería, que necesita precio numérico, y el widget de la página. Diez minutos es el compromiso: un cambio de precio hecho ahora se ve en un máximo de diez minutos, no al instante. Decimos la cifra, para que puedas cuestionarla.
El resto de las limitaciones no vienen de nosotros, sino de los canales, y es más honesto que las sepas antes: Meta rechaza texto libre fuera de la ventana de 24 horas desde el último mensaje del cliente, Instagram no tiene carruseles de productos en absoluto, y una foto enviada por el cliente se marca en la conversación, no se adjunta automáticamente a un pedido. Cada una de estas frases se cita más abajo con archivo y línea.
Qué incluye
Qué cambia concretamente en el comercio online
La pregunta se convierte en una búsqueda en tu catálogo, no en una adivinanza
El agente tiene tres herramientas integradas sobre un servicio común de catálogo: `store_catalog_search` para búsqueda, `store_catalog_match` para la correspondencia de una formulación del cliente con un producto concreto, `store_catalog_product` para la ficha completa. No son herramientas escritas aparte para cada tienda — son una función de la plataforma. La diferencia práctica: cuando arreglamos algo en la correspondencia, se arregla para todas las tiendas conectadas a la vez.
El precio y el stock se leen de la tienda en el momento de la pregunta
El resultado de la herramienta viene de tu tienda, no de un archivo nuestro. La memoria temporal es de diez minutos por sitio, y el catálogo se recorre paginado — hasta 30 páginas de 100 productos cada una. La consecuencia que debes aceptar: un cambio de precio aparece en la conversación con un retraso de como máximo diez minutos. La consecuencia que obtienes: no existe el escenario en el que el agente repita durante meses un precio sacado de la tienda.
La respuesta sale por el canal por el que escribió el cliente
Seis canales tienen código propio en la plataforma: Messenger, Instagram Direct, Telegram, el widget de la página, una plataforma local de anuncios y WhatsApp mediante Cloud API en Graph v22.0. No es un solo «chat» renombrado seis veces: cada canal tiene sus propias reglas de formato y sus propias formas de fallar, y nosotros también verificamos el caso feo — un token de página caducado detiene el canal en silencio si no se monitoriza.
La conexión de la tienda en WooCommerce se hace con su dirección, sin claves
La Store API es pública, así que no te pedimos `consumer_key` y `consumer_secret`. No es una comodidad, es una decisión de riesgo: las herramientas escritas a mano que sustituyó esta ruta guardaban, algunas de ellas, claves de tienda escritas en claro en la base de datos. La ruta nueva sustituyó 109 herramientas escritas manualmente, de las cuales 28 eran scrapers sobre HTML, es decir, integraciones que se rompían con el primer cambio de tema de la tienda.
El carrusel de productos tiene condiciones, y difieren de un canal a otro
En Messenger, el carrusel se muestra solo cuando se cumplen tres condiciones simultáneamente; si falta una, la respuesta se mantiene en texto, no se rompe. En Instagram no existe carrusel de productos — Meta no tiene plantillas genéricas en Instagram, así que nadie puede entregarlo allí, independientemente de lo que ponga en la oferta. Es el tipo de frase que preferimos que escuches de nosotros antes del contrato.
La ventana de 24 horas en WhatsApp, dicho con el número del error
Fuera de la ventana de 24 horas desde el último mensaje del cliente, Meta rechaza el texto libre con el error 131047, y el mensaje queda marcado como fallido en la plataforma. Los mensajes de plantilla —la única vía legítima de escribir primero después de la ventana— no existen en el código de la plataforma: una búsqueda por el tipo `template` devuelve cero resultados, solo se envía el tipo `text`. Así que: recuperación de carrito abandonado por WhatsApp a las 48 horas no te la podemos prometer hoy.
Las ráfagas de mensajes y los mensajes duplicados se tratan, no se ignoran
El webhook de Meta sí reenvía el mismo mensaje: la deduplicación se hace por el identificador del mensaje, con 120 segundos de memoria. Y el cliente que escribe «hola», «tienen», «el modelo negro» en tres líneas recibe una sola respuesta a todo lo que escribió, no tres respuestas parciales — los mensajes se acumulan en un buffer de 15 segundos. En comercio esto importa más de lo que parece: tres respuestas parciales a una sola intención se ven exactamente como un robot.
La entrega a una persona tiene estado, no es una promesa
El hilo de conversación tiene un estado explícito `bot` o `human`. El registro de toma conoce tres acciones: toma por una persona, vuelta al bot, reactivación automática. Además, el hilo tiene estado de cumplimiento del tiempo de respuesta —`ok`, `warning`, `breached`— así que se ve qué conversación se quedó sin respuesta humana, no solo cuántas hubo.
Lo que no resuelve un asistente de tienda
No cobra el pago. No crea el pedido en la tienda si la tienda no tiene una vía de escritura —la lectura es pública, la escritura no. No adjunta la foto enviada por el cliente a un pedido: la fotografía recibida se marca en la conversación, eso es todo, y la generación de PDF no existe en la plataforma. Y no repite el pedido anterior de un cliente sin acceso autorizado a su historial. Cada una de estas cosas se puede construir, pero como trabajo separado, no como casilla en la oferta.
Traseul
Cómo pasa una solicitud por el sistema.
01
Comprobamos primero qué gate público tiene tu tienda
La primera verificación, no la última: pedimos el catálogo desde fuera y contamos lo que vuelve. Si la tienda está en WooCommerce con Store API activa, la integración no necesita claves. Si no, pasamos a la autenticación —y entonces la clave se convierte en una pieza que se administra, con todo lo que eso implica. Entregamos el resultado de esta verificación por escrito, incluso cuando la respuesta es que no se puede.
02
Conectamos el catálogo y los canales, con el caso feo probado
La conexión de Meta se hace mediante Embedded Signup. En cada canal verificamos no solo el primer mensaje exitoso, sino también qué pasa cuando el token expira o cuando la tienda no responde. Entregamos los canales conectados y la lista escrita del comportamiento en cada modo de fallo.
03
Escribimos el rol, las herramientas y el límite
Cada herramienta tiene una descripción escrita para el modelo, parámetros tipados y un plazo propio de ejecución —por defecto 15 segundos. El rol del agente dice explícitamente qué no tiene permiso de afirmar: precio no publicado, plazo de entrega, disponibilidad que no ha leído. Entregamos la configuración del agente y la lista de herramientas adjuntas a él —no todas las herramientas de la plataforma, solo las que necesita.
04
Empezamos con intervención humana activa y ajustamos los umbrales
Empezamos con la entrega a una persona configurada y con el registro de consultas activado, para que se vea qué fragmentos usó el agente y con qué puntuaciones. A partir de ahí se ajustan el umbral de similitud y el número de fragmentos por pregunta. Entregamos un informe de conversaciones con las decisiones de ajuste, no solo un asistente arrancado.
Traseul, în 5 pași
Los datos
Qué tocamos, dónde están y cuánto se quedan
Las reglas difieren de una industria a otra. Estas son las que se aplican en el comercio online.
El catálogo no se copia a nosotros
Los productos, los precios y el stock se quedan contigo. Lo que pasa por la plataforma es la respuesta a una pregunta, guardada en memoria temporal durante diez minutos. No tenemos una base con tu catálogo que alguien pueda exportar, porque no hay una exportación que hacer.
Dónde se guardan las conversaciones
MySQL, en el servidor propio de Microsoft Azure. El esquema tiene más de 80 tablas modeladas en Prisma, con tablas separadas para los hilos de Meta, los hilos de Telegram, los hilos de la plataforma de anuncios, comentarios, etiquetas, notas internas y registro de auditoría. El token del canal se guarda cifrado con Fernet.
Los datos del pedido entran en campo libre
En una conversación de tienda llegan nombre, teléfono, dirección de entrega y, a veces, la talla o el problema médico por el que el cliente compra el producto. Técnicamente no se puede detener. Se puede tratar: se establece qué se conserva, cuánto, quién tiene acceso y qué se le indica al equipo que no pida por el canal. El registro de tratamientos de la implementación se escribe en la implementación, no después.
El widget de la página y la lista de orígenes
El widget tiene una lista de orígenes permitidos por asistente, pero hay que conocer el comportamiento por defecto: si la lista está vacía, la comprobación pasa. Es una elección de compatibilidad con las instalaciones antiguas, escrita tal cual en el código. En la práctica, la restricción por el dominio de tu tienda se configura explícitamente en cada implementación — no viene ya puesta.
Plazo de conservación
Se establece por implementación y se escribe en la política publicada por ti. La regla que aplicamos nosotros y que también pedimos en los proyectos: si un cambio de código modifica qué se recopila, a quién llega o cuánto se conserva, la política publicada se modifica en el mismo commit.
Un caso
Un catálogo de 154 productos, verificado desde dos direcciones
La situación
Un distribuidor de Chisináu vendía a través de una tienda WooCommerce y respondía a preguntas de producto por canales de mensajes. La integración evidente — una exportación de productos puesta en la base de conocimientos del agente — habría funcionado hasta la primera campaña de descuentos.
Qué construimos
Conectamos el catálogo mediante la interfaz pública de la tienda, que no pide claves, y encima pusimos tres herramientas que el agente llama en la conversación: búsqueda, coincidencia y ficha de producto. Los resultados se normalizan en una forma única, leída igual por el carrusel de mensajería y por el widget de la página, para que no existan dos verdades sobre el mismo precio.
Qué salió
La verificación se puede hacer desde fuera, sin creernos sobre la palabra: nuestro punto de catálogo responde 200 e informa 154 resultados, y la interfaz pública de la tienda, consultada directamente, devuelve el encabezado `x-wp-total: 154`. La misma cifra, dos fuentes independientes, en el mismo día.
Qué no dice el caso
La cifra es la de ese día, 06.09.2026, y cambia cuando el distribuidor añade productos — esa es la idea. No es una medición de rendimiento y no dice nada sobre las ventas; solo dice que el agente lee el catálogo real.
Preguntas
Lo que pregunta alguien del comercio online
¿Cómo sé que no dice un precio viejo?
Porque no tiene de dónde sacarlo. El precio viene de la respuesta de tu tienda en el momento de la pregunta, guardado en memoria temporal como máximo durante diez minutos. No tenemos una copia del catálogo de la que pueda leer. Puedes hacer la comprobación tú mismo: le preguntas al agente por un producto, cambias el precio en la tienda, esperas diez minutos y vuelves a preguntar.
¿Qué responde cuando el producto está agotado?
Lo que dice la tienda. La disponibilidad viene de la misma respuesta que el precio. Lo que no hace — y es una decisión, no un fallo — es inventar una fecha de reposición. Si quieres que el agente proponga alternativas cuando un producto falta, esa es una regla que escribimos explícitamente en su rol y la probamos, no algo que ocurra por sí solo.
¿Puede finalizar el pedido?
No desde la lectura del catálogo. La API pública de Store es una puerta de lectura; escribir un pedido requiere una vía autenticada hacia la tienda, así que es un trabajo separado, con claves que se administran. Lo que hace hoy: lleva al cliente hasta el producto correcto, con el precio correcto, y le da el enlace o pasa la conversación a una persona.
¿Puede escribirle él primero a un cliente que ha abandonado el carrito?
En WhatsApp, no, fuera de la ventana de 24 horas. Meta rechaza el texto libre con el error 131047, y los mensajes de plantilla no existen en el código de la plataforma. En Telegram y en Messenger, dentro de los límites de las reglas de cada canal, existen automatizaciones programadas que retoman las conversaciones sin respuesta, con contadores visibles de cuántas salieron y cuántas se omitieron.
¿Funciona con carrusel de productos en Instagram?
No. Meta no tiene plantillas genéricas en Instagram, así que el carrusel no existe allí para nadie. En Messenger existe, pero exige tres condiciones al mismo tiempo; cuando falta una, la respuesta sigue siendo texto. Preferimos que oigas esto ahora, no en la tercera semana de implementación.
Mi tienda no está en WooCommerce. ¿Qué cambia?
Cambia la primera etapa: en lugar de conectar la dirección, verificamos qué interfaz pública tiene tu plataforma y si responde lo bastante rápido para una conversación. Si no tiene ninguna, o bien escribimos un conector autenticado — y entonces hablamos de quién administra la clave — o decimos que no se puede hacer honestamente un catálogo vivo y nos quedamos con una base de conocimientos actualizada periódicamente, marcada como tal.
El cliente envía la foto del producto que quiere. ¿Qué pasa?
La fotografía se marca en la conversación y se queda ahí para la persona que toma el relevo. No se adjunta automáticamente a un pedido y no se genera ningún documento a partir de ella — no existe código para eso. Un agente que afirmara haber registrado el pedido desde la foto mentiría, y eso se descubre en la entrega.
¿Qué pasa cuando el cliente escribe cuatro mensajes seguidos?
Recibe una sola respuesta, a todo lo que escribió. Los mensajes se agrupan en un búfer de 15 segundos antes de enviarse al modelo. Por separado, si la plataforma Meta reenvía el mismo mensaje — y lo hace —, la deduplicación por identificador del mensaje, con 120 segundos de memoria, impide la segunda respuesta.
¿Quién responde cuando el agente no sabe?
Una persona de tu equipo, y la entrega se ve en el sistema: el hilo pasa del estado `bot` a `human`, el registro de toma de relevo anota quién y cuándo, y el estado de cumplimiento del tiempo de respuesta muestra si el hilo quedó colgado. Sin ese mecanismo, «pasa a un operador» es una promesa que nadie puede verificar meses después.